Resteasy と Spring を統合しようとしています。Resteasy のドキュメントとこの投稿の両方に従いました: Inject Spring beans into RestEasy。残りのクラスで @Autowire またはその他の Spring アノテーションを使用して動作させていますが、残りのクラスを春 (または DI) の依存関係から解放したままにしたいと考えています。また、Java構成のみでSpringを構成したいと思います。春の構成では、これを追加しました:
<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 に持っているので、Spring 構成は SpringContextLoaderListener によって取得されます。
<context-param>
<param-name>contextConfigLocation</param-name>
<param-value>classpath:/spring-config.xml</param-value>
</context-param>
@Autowire アノテーションを削除します。最初のパッケージ (Spring Java 構成を介してインジェクションを構成した場所) も削除すると、インジェクションは行われず、フィールドは null のままです。2 番目のパッケージを削除すると、残りのクラスの URL が resteasy によって認識されません。
Spring 構成だけでインジェクションを構成したいのですが、resteasy に外部で構成された Spring Bean からのパスを認識させる方法はありますか?
編集:Spring を正しく構成すると、@Provider アノテーション付きクラスで機能することに気付きました。
<context:component-scan base-package="my.package1 , my.package2">
<context:include-filter type="annotation" expression="javax.ws.rs.ext.Provider"/>
</context:component-scan>
しかし、ミステリーは最初に思ったよりも深刻です... 私は自分が正しい道を進んでおり、一歩を踏み外しただけだと確信しています!