我正在尝试为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,每个级别的主要绊脚石,对此咆哮感到抱歉。答案 0 :(得分:2)
您使用的是错误的Autowire
。 The '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),因为它并不困难。