Spring boot jersey - 防止控制器的启动实例化

时间:2017-01-12 13:45:21

标签: spring rest spring-mvc spring-boot jersey

我正在使用带网眼和平针织物的弹簧靴(spring-boot-jersey-starter)。我有一个需要注入请求范围bean的Jersey端点。但是,在启动应用程序时,我发现没有找到bean的错误。

@Component
@Path("blah")    
@RequestScoped
public class JerseyController{
     @Inject 
     private MyEntity entity;
}

@Component
public class JerseyConfiguration extends ResourceConfig{
    public JeyseyConfiguration(){
       register(JeyseyController.class);
       registere(MyEntityProvider.class);
    }
}

在spring-boot网络应用程序中,是否有办法阻止Spring尝试实例化并注入我的JerseyController,直到收到HTTP请求,以便我的Jersey提供程序可以提供注入的依赖项?

1 个答案:

答案 0 :(得分:1)

泽西岛资源不需要

@Component。拥有它将导致Spring实例化它(使用默认的Singleton范围)。我不认为Spring不尊重@RequestScoped。这是泽西岛的注释。如果你想使用@Component,我认为Spring @Scope("request")可能会成功。

您也可以删除@RequestScoped。这是Jersey资源的默认范围。

我唯一一次发现需要在Jersey资源上使用@Component,如果我需要使用Spring @Value(也许也是AOP,但我没有做太多的AOP) 。除此之外,Jersey-Spring集成已经支持Spring最常用的功能,即DI。如果你真的想让泽西岛资源成为单身人士,那么泽西岛支持@Singleton注释。