2012-04-17 76 views
3

我想整合Resteasy和Spring;我已經按照Resteasy和這篇文章的文檔:Inject Spring beans into RestEasy。 我在其他類上使用@Autowire或其他Spring註解工作,但我想這樣做讓我的休息類免受彈簧(或DI)依賴性的影響。 我也想通過java配置來配置spring。在Spring配置添加此:Java Spring配置和Resteasy

<context:component-scan base-package="package.where.spring.configuration.beans.are , package.where.rest.classes.are"> 
<context:include-filter type="annotation" expression="javax.ws.rs.Path"/> 
</context:component-scan> 

,當然我已經在web.xml中,使彈簧的配置被拾起SpringContextLoaderListener:

<context-param> 
    <param-name>contextConfigLocation</param-name> 
    <param-value>classpath:/spring-config.xml</param-value> 
</context-param> 

卸下@Autowire註釋,如果我還刪除第一個包(我通過Spring java config配置注入)沒有注入發生,並且這些字段保持爲空;如果我刪除第二個包,剩下的類的URL不會被resteasy識別。

我想配置只是在Spring配置注射,有沒有辦法讓resteasy識別從外部配置的spring bean的路徑?

編輯:我注意到,我試圖做註解@Provider類的作品,給你正確配置Spring:

<context:component-scan base-package="my.package1 , my.package2"> 
    <context:include-filter type="annotation" expression="javax.ws.rs.ext.Provider"/> 
</context:component-scan> 

但是謎比我首先想到更深......我更有信心我正走在正確的軌道上,錯過了一步!

回答

0

使用JSR-250的@Resource而不是@Autowired是一大進步;它做@Autowired所需要的,它是JSR而不是Spring特定的。

對於很多用途來說可能夠用了。

1

更好的方法是使用JSR-330註釋。

而不是@Autowired,更喜歡使用@Inject。 Spring支持JSR-330註釋,並將在封面下使用Autowire實現。對於用@Component,@Service註釋的Spring beans,只需用JSR-330特定的@Named替換註釋即可。

如果您使用的是maven,只需在您的pom.xml文件中包含以下內容。

<dependency> 
    <groupId>javax.inject</groupId> 
    <artifactId>javax.inject</artifactId> 
    <version>1</version> 
</dependency>