我正在使用带网眼和平针织物的弹簧靴(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提供程序可以提供注入的依赖项?
答案 0 :(得分:1)
@Component
。拥有它将导致Spring实例化它(使用默认的Singleton范围)。我不认为Spring不尊重@RequestScoped
。这是泽西岛的注释。如果你想使用@Component
,我认为Spring @Scope("request")
可能会成功。
您也可以删除@RequestScoped
。这是Jersey资源的默认范围。
我唯一一次发现需要在Jersey资源上使用@Component
,如果我需要使用Spring @Value
(也许也是AOP,但我没有做太多的AOP) 。除此之外,Jersey-Spring集成已经支持Spring最常用的功能,即DI。如果你真的想让泽西岛资源成为单身人士,那么泽西岛支持@Singleton
注释。