java – Autowired为null,不适用于Jersey Spring
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了java – Autowired为null,不适用于Jersey Spring,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含3223字,纯文字阅读大概需要5分钟。
内容图文
我有问题弄清楚为什么我的Jersey RESTful入口点找不到我在app服务器启动时配置的Spring Bean.尝试后它一直得到NullPointerException
> Spring DI – Autowired property is null in a REST service
> NullPointerException on @Autowired attribute with Jersey and Spring for REST service
> @Autowired is not working with jersey and spring
> Integrating both spring mvc and Jersey, getting a null pointer when viewing a jersey endpoint
> Jersey 2 + Spring: @Autowired is null
在web.xml
<context-param>
<param-name>contextConfigLocation</param-name>
<param-value>/WEB-INF/applicationContext*.xml</param-value>
</context-param>
<listener>
<listener-class>
org.springframework.web.context.ContextLoaderListener
</listener-class>
</listener>
<servlet>
<servlet-name>jersey-serlvet</servlet-name>
<servlet-class>com.sun.jersey.spi.spring.container.servlet.SpringServlet</servlet-class>
<init-param>
<param-name>com.sun.jersey.config.property.packages</param-name>
<param-value>com.testing.resource</param-value>
</init-param>
<load-on-startup>1</load-on-startup>
</servlet>
<servlet-mapping>
<servlet-name>jersey-serlvet</servlet-name>
<url-pattern>/rest/*</url-pattern>
</servlet-mapping>
弹簧的context.xml
<context:annotation-config />
<context:component-scan base-package="com.testing.config, com.testing.repository, com.testing.workflow" />
<bean id="propertyConfigurer"
class="org.springframework.beans.factory.config.PropertyPlaceholderConfigurer">
<property name="location">
<value>classpath:jdbc.properties</value>
</property>
</bean>
Jersey servlet入口点
@Component
@Produces(MediaType.APPLICATION_JSON)
@Path("/{userId}/items")
public class UserResource
{
@Autowired
private UserWorkFlow userWorkFlow;
@GET
public Response getAllItems(@PathParam("userId") String userId)
{
// ** NullPointerException here complains about the UserWorkFlow
return Response.status(200).entity(userWorkFlow.getItemsFor(userId)).build();
}
}
服务层
我也尝试为此创建一个界面,但它没有用.
@Service
public class UserWorkFlow
{
@Autowired
private AllItems allItems;
public List<Item> getItemsFor(String id)
{
return allItems.getItemsFor(id);
}
}
存储库和DAO
@Repository
public class AllItems
{
@Autowired
private ItemSql itemSql;
public List<Item> getItemsFor(String id)
{
return itemSql.getAllItemsFor(id);
}
}
MyBatis Mapper(它有一个与之关联的XML)
public interface UserSql
{
List<Item> getAllItemsFor(@Param("userId") String userId);
}
我也从org.glassfish.jersey改为com.sun.jersey但没有用.我的想法已经用完了可能出错的地方.谁能发现我做错了什么?
解决方法:
我为previous question提供的link有四个完整工作示例的链接.您可以轻松地抓住其中一个示例并构建在它之上.
我将向您介绍其中一个示例.也许它太难以遵循了.我将使用Jersey 2.x with Spring XML config.
首先,请确保您有the dependencies(仅显示未在pom中显示的版本)
> jersey-container-servlet:2.22.1
> spring-web:3.2.3.RELEASE
>公共记录
> jersey-spring3:2.22.1. (注意快照项目使用jersey-spring * 4 *.这个尚未发布,将在下一个Jersey版本发布)
其次,确保您的web.xml正常
第三步,将applicationContext.xml添加到项目类路径中.
Fouth,MyApplication类在之前的web.xml中列出.
如果你按照T的例子,你将有一个工作的例子.它可能不是您想要配置Spring组件的确切方式,但是您将有一个可以构建的工作示例并进行调整以查看哪些有效,哪些无效.当您感觉更舒服时,您可以看到其他配置样式/选项的其他示例(在此答案的第一个链接中).
内容总结
以上是互联网集市为您收集整理的java – Autowired为null,不适用于Jersey Spring全部内容,希望文章能够帮你解决java – Autowired为null,不适用于Jersey Spring所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。