在JAX-RS和Spring中自动注释注释

时间:2011-10-24 11:55:45

标签: spring jax-rs

我正在尝试为Spring 3 + Hibernate应用程序添加REST支持。

我使用Netbeans的向导创建了REST支持,它在我的Resource类上面放了一个@Autowire注释(不是@autowired)。从Spring获取@Autowire注释会导致错误

 incompatible types
found   : org.springframework.beans.factory.annotation.Autowire
required: java.lang.annotation.Annotation

here我理解,从JAX-RS获取@Autowire应仅适用于Spring 2.5。如果我包含它,我会收到以下错误,我认为这与加载Spring 2.5有关:

    SEVERE: Exception while loading the app : java.lang.IllegalStateException: 
ContainerBase.addChild: start: org.apache.catalina.LifecycleException: 
org.springframework.beans.factory.BeanDefinitionStoreException: Unexpected exception 
parsing XML document from ServletContext resource [/WEB-INF/applicationContext.xml]; 
nested exception is java.lang.NoSuchMethodError: 
org.springframework.beans.MutablePropertyValues.add(Ljava/lang/String;Ljava/lang/
Object;)Lorg/springframework/beans/MutablePropertyValues;

有人能指出我如何添加这个注释,并让JAX-RS与Spring一起工作吗?此外,我使用的是SessionFactory,自动生成的代码引用applicationcontext中的entityManagerFactory。那些可以互换使用吗?

PS:请允许我说,在我使用该平台的三周旅程中,到目前为止,我一直非常讨厌Java EE,每个级别的主要绊脚石,对此咆哮感到抱歉。

1 个答案:

答案 0 :(得分:2)

您使用的是错误的AutowireThe 'Netbeans REST wizard' looks like it would be using com.sun.jersey.api.spring.Autowire (last image, very bottom of page),您在上面的消息中使用的org.springframework.beans.factory.annotation.Autowire似乎是在Spring 2.0中使用的Enum

据我所知,这可能是Spring 2.0的特定内容。也许您应该自己看一下REST JAX-RS的内容(using Jersey),因为它并不困难。