2012-04-17 13 views
3

ResteasyとSpringを統合しようとしています。私はResteasyとこの投稿の両方の文書に従っています:Inject Spring beans into RestEasy。 残りのクラスで@Autowireや他のSpringアノテーションを使って作業していますが、私は残りのクラスを春(またはDI)依存関係から解放したいと思います。 私はまた、Javaの設定でのみspringを設定したいと思います。Java Spring構成とResteasy

Iもあれば、@Autowire注釈を削除
<context-param> 
    <param-name>contextConfigLocation</param-name> 
    <param-value>classpath:/spring-config.xml</param-value> 
</context-param> 

:春の設定がSpringContextLoaderListenerによってピックアップされるように、私は、web.xmlに持って

<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> 

そしてもちろん:春の構成では、私はこれを追加しました最初のパッケージ(私はSpring java configを介して注入を設定しました)を削除します。注入は行われず、フィールドはnullのままです。 2番目のパッケージを削除すると、残りのクラスのURLはresteasyによって認識されません。

私はSpringの設定で注入を設定したいのですが、外部設定されたSpring Beanからのパスをresteasyに認識させる方法はありますか?

EDIT:

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

しかし、謎は、私が最初に思ったより...私は深いです:私は私はあなたが正しく春を設定することを考えると@Provider注釈付きクラスで作品をやろうとしていますどのようなことに気づきました正しい軌道に乗っていて、一歩も逃したと自負しています!

答えて

0

@Autowiredの代わりにJSR-250の@Resourceを使用することは大きな前進です。 @Autowiredから必要とされるのはJSRであり、Spring固有のものではありません。

多くの用途に十分適しています。

1

もっと良いアプローチは、JSR-330注釈を使用することです。

@Autowiredの代わりに、@Injectを使用することをお勧めします。 SpringはJSR-330アノテーションをサポートしており、カバーの下でAutowire実装を使用します。 @Component@Serviceと注釈されたSpring Beanの場合は、注釈をJSR-330固有の@Namedに置き換えます。

mavenを使用している場合は、pom.xmlファイルに次の文字列を含めます。

<dependency> 
    <groupId>javax.inject</groupId> 
    <artifactId>javax.inject</artifactId> 
    <version>1</version> 
</dependency> 
関連する問題