我正在使用 Jersey-Spring 集成来公开业务层服务 在我的web.xml中,我正在使用SpringServlet:
com.sun.jersey.spi.spring.container.servlet.SpringServlet
我的业务层是@Component
注释的,所以我@Service
使用通过Spring的注释配置提供的@Repository
。
存储库通过@Autowired
注释提供给服务。
如果我使用服务通过服务使用我的前端MVC类,那么everithig会很顺利,但如果我通过Jersey使用它,我会得到一个NullPointerException
在存储库对象上。
我正在使用的版本(通过Maven)是:
答案 0 :(得分:0)
你应该尝试使用@InjectParam
答案 1 :(得分:0)
可以使用问题中提到的相同版本来解决此问题,
如果需要提到第二种方式,第一种方法是通过web.xml加载sring 如下所示为正常的弹簧配置:
<servlet>
<servlet-name>project-spring</servlet-name>
<servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
<init-param>
<param-name>contextConfigLocation</param-name>
<param-value>classpath:project-spring-servlet.xml</param-value>
</init-param>
<load-on-startup>1</load-on-startup>
</servlet>
<servlet-mapping>
<servlet-name>project-spring</servlet-name>
<url-pattern>*.htm</url-pattern>
</servlet-mapping>
现在通过应用程序加载你的球衣资源,如下所示:
@ApplicationPath("/rest")
public class ResourceLoader extends Application
{
/* (non-Javadoc)
* @see javax.ws.rs.core.Application#getClasses()
*/
@Override
public Set<Class<?>> getClasses()
{
Set<Class<?>> classes = new HashSet<Class<?>>();
loadResourceClasses(classes);
return classes;
}
private void loadResourceClasses(Set<Class<?>> classes)
{
classes.add(StudentResource.class);
}
}
然后在你的资源中:
@Path("student")
class StudentResource
{
private StudentService studentService;
StudentResource(@Context ServletContext servletContext)
{
ApplicationContext applicationContext = WebApplicationContextUtils.getWebApplicationContext(servletContext);
this.transactionService = applicationContext.getBean(StudentService .class);
}
}
你去了Spring已经配置了所有针对Jersey的依赖注入!!!