Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/rest/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 从业务层使用jersey进行基本依赖项注入_Java_Rest_Maven_Dependency Injection_Jersey - Fatal编程技术网

Java 从业务层使用jersey进行基本依赖项注入

Java 从业务层使用jersey进行基本依赖项注入,java,rest,maven,dependency-injection,jersey,Java,Rest,Maven,Dependency Injection,Jersey,我正在从事一个使用RESTful服务的项目。我有web层、业务层等模块。我添加了基本api层(使用jersey)并获得get请求的基本响应。现在我必须将它连接到业务层。我在谷歌上搜索过,但我不知道如何为我的项目实施每个解决方案 这是我的旅行资源类: @Path("trip") public class TripResource { @Context private UriInfo context; @Inject private AdminService adm

我正在从事一个使用RESTful服务的项目。我有web层、业务层等模块。我添加了基本api层(使用jersey)并获得get请求的基本响应。现在我必须将它连接到业务层。我在谷歌上搜索过,但我不知道如何为我的项目实施每个解决方案

这是我的旅行资源类:

@Path("trip")
public class TripResource {

    @Context
    private UriInfo context;
    @Inject
    private AdminService adminService;

    public TripResource() {
    }

    @GET
    @Produces("text/plain")
    public List<TripDTO> getText() {
        return adminService.listAllTrips();
    }

}
现在我被卡住了

如何将此活页夹添加到配置类?
在不使用任何其他技术的情况下,最简单的实现是什么?

这也花费了我很多时间

请尝试以下操作:

  • 将HK2活页夹添加到项目中,如下所述:
  • 在这里,您必须将绑定添加到您的业务逻辑中。 您已经有了它(只是为了完整性而添加)

    e。g

    然后将“ResourceConfig”类添加到您的项目中,并注册您的活页夹,如下所示:

    在您的例子中,您可以简单地从ResourceConfig而不是ApplicationConfig扩展您的ApplicationConfig(我就是这么做的)。在“getClasses()”中注册的所有类都应该如下所述

    e。g

    至少确保web.xml使用配置文件。这取决于您的设置(glassfish、servlet v1/v2等)

    由于您已经在使用ApplicationConfig类,所以很有可能您已经使用了正确的设置

    这里还有一个例子:

    <servlet>
        <servlet-name>om.example.package.to.your.config.ApplicationConfig</servlet-name>
        <servlet-class>org.glassfish.jersey.servlet.ServletContainer</servlet-class>
        <init-param>
            <param-name>javax.ws.rs.Application</param-name>
            <param-value>com.example.package.to.your.config.ApplicationConfig</param-value>
        </init-param>
        <load-on-startup>1</load-on-startup>
    </servlet>
    
    
    om.example.package.to.your.config.ApplicationConfig
    org.glassfish.jersey.servlet.ServletContainer
    javax.ws.rs.Application
    com.example.package.to.your.config.ApplicationConfig
    1.
    
    希望这会有所帮助;)

    问候 本


    现在发现了一个类似的帖子:
    您需要向Jersey注册资源类。因此,如果您的应用程序名为
    MyApplication
    ,那么您可以

    public class MyApplication extends ResourceConfig {
    
        /*Register JAX-RS application components.*/
        public MyApplication () {
            register(TripResource.class);
        }
    }
    
    同样在
    web.xml
    文件中,将
    MyApplication
    添加到servlet容器中:

    <servlet>
        <servlet-name>SpringApplication</servlet-name>
        <servlet-class>org.glassfish.jersey.servlet.ServletContainer</servlet-class>
        <init-param>
            <param-name>javax.ws.rs.Application</param-name>
            <param-value>mypackage.MyApplication</param-value>
        </init-param>
        <load-on-startup>1</load-on-startup>
    </servlet>
    
    
    SpringApplication
    org.glassfish.jersey.servlet.ServletContainer
    javax.ws.rs.Application
    mypackage.MyApplication
    1.
    
    可以找到一个将Jersey与Spring DI结合使用的简单示例

    public class MyBinder extends AbstractBinder {
    
        @Override
        protected void configure() {
            // request scope binding
            bind(MyInjectablePerRequest.class)
                    .to(MyInjectablePerRequest.class)
                    .in(RequestScope.class);
            // singleton binding
            bind(MyInjectableSingleton.class).in(Singleton.class);
            // singleton instance binding
            bind(new MyInjectableSingleton()).to(MyInjectableSingleton.class);
        }
    }
    
    /**
     * Application config
     */
    public class ApplicationConfig extends ResourceConfig {
    
        public ApplicationConfig() {
            register(SomeResources.class, SomeProviders.class);
    
            // Register different Binders
            addBinders(new MyBinder());
        }
    }
    
    <servlet>
        <servlet-name>om.example.package.to.your.config.ApplicationConfig</servlet-name>
        <servlet-class>org.glassfish.jersey.servlet.ServletContainer</servlet-class>
        <init-param>
            <param-name>javax.ws.rs.Application</param-name>
            <param-value>com.example.package.to.your.config.ApplicationConfig</param-value>
        </init-param>
        <load-on-startup>1</load-on-startup>
    </servlet>
    
    public class MyApplication extends ResourceConfig {
    
        /*Register JAX-RS application components.*/
        public MyApplication () {
            register(TripResource.class);
        }
    }
    
    <servlet>
        <servlet-name>SpringApplication</servlet-name>
        <servlet-class>org.glassfish.jersey.servlet.ServletContainer</servlet-class>
        <init-param>
            <param-name>javax.ws.rs.Application</param-name>
            <param-value>mypackage.MyApplication</param-value>
        </init-param>
        <load-on-startup>1</load-on-startup>
    </servlet>