gpt4 book ai didi

java - Jersey 和 spring 集成 - bean 注入(inject)在运行时为空

转载 作者:搜寻专家 更新时间:2023-10-31 20:15:29 24 4
gpt4 key购买 nike

我正在尝试将服务注入(inject)到使用 Jersey 的 Rest 类中。

无论我尝试将什么或如何注入(inject)此类,在运行时似乎都显示为 null。查看日志文件显示 setJsonTestService 在 Web 应用程序初始化时被调用,此时它不为空。但是,当稍后通过对此类的 PUT 请求访问它时,它为空。

我完全不知所措。

这个类看起来像这样:

@Named
@Path("JsonTest")
public class JsonTest {
@Context
Request request;
@Context
UriInfo uriInfo;

protected final Logger log = Logger.getLogger(getClass());

private JsonTestService jsonTestService;

@Autowired
public void setJsonTestSerivce(JsonTestService jsonTestService) {
log.info("Setting JsonTestService.");
if (jsonTestService == null) {
log.info("JsonTestService is null at injection");
}
this.jsonTestService = jsonTestService;
}

@Inject
public ScrapIntermediate scrapIntermediate; // just a plain empty class with an is true method

@PUT
@Path("{id}")
@Produces(MediaType.APPLICATION_JSON)
public void putJson(@PathParam("id") String id) {
log.info("Putting some json at " + id);
if (scrapIntermediate == null) {
log.info("scrapIntermediate is null...");
}
if (jsonTestService != null) {
jsonTestService.sendUpdate();
} else {
log.info("jsonTestService is null...");
}
}
}

有什么想法吗?

更新:

web.xml( Jersey )

<servlet>
<servlet-name>Jersey REST Service</servlet-name>
<servlet-class>com.sun.jersey.spi.spring.container.servlet.ServletContainer</servlet-class>
<init-param>
<param-name>com.sun.jersey.config.property.packages</param-name>
<param-value>EDAS</param-value>
</init-param>
<load-on-startup>1</load-on-startup>
</servlet>
<servlet-mapping>
<servlet-name>Jersey REST Service</servlet-name>
<url-pattern>/rest/*</url-pattern>
</servlet-mapping>

最佳答案

尝试

<servlet-class>
com.sun.jersey.spi.spring.container.servlet.SpringServlet
</servlet-class>

您还需要 contextConfigLocation <context-param> ,但我假设你有它。 See here有关设置的更多详细信息

正如 matt b 建议的那样,spring 实例化了您的对象,但是 Jersey 对 spring 一无所知,并再次实例化了它们。当您使用 SpringServlet它应该找到 spring 应用程序上下文。

也就是说,spring-mvc 提供了与 JAX-RS 非常相似的 RESTful 服务支持。你也可以试试。

关于java - Jersey 和 spring 集成 - bean 注入(inject)在运行时为空,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6672701/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com