2016-07-18 2 views
0

私は@RequestScopeのBeanを持っています。私はそれを私のシングルトンの1つに注入すると、リクエストスコープではなくシングルトンとして注入されます。しかし、@RequestScope@Scope(value = "request", scopeName = "request", proxyMode = ScopedProxyMode.TARGET_CLASS)に変更すると、SpringはリクエストスコープとしてBeanを作成し、それらをシングルトンに正しく挿入します。JSR-330がJerseyとSpringで動作しないのはなぜですか?

私はこれについて、春のドキュメントを読んで:

JSR-330のデフォルトのスコープは春のプロトタイプのようなものです。ただし、Springの一般的なデフォルトとの一貫性を保つため、Springコンテナで宣言されたJSR-330 Beanは、デフォルトではシングルトンです。シングルトン以外のスコープを使用するには、Springの@Scopeアノテーションを使用する必要があります。 javax.injectは@Scopeアノテーションも提供します。それにもかかわらず、これは独自のアノテーションを作成するためにのみ使用されることを意図しています。

これは、@RequestScopedがSpringによって実際に無視されていることを意味しますか? Springにこの問題を解決するプロバイダ/リゾルバはありますか?私は、我々はM. Deinumで言及したようJSR注釈のみ

http://docs.spring.io/spring/docs/4.2.5.RELEASE/spring-framework-reference/html/beans.html#beans-standard-annotations-limitations

+0

あなたが本当にしたい場合は、あなた自身を書く、インターネットのまわりのこのためのサンプルがあります。ドキュメントはそれがうまくいかないという点でかなり明確です。 –

+0

私はいくつかのブログを見ましたが、何年も前に書かれていましたので、JSR 330が標準であるため、Springが既にこの問題に対処しているのかどうか疑問に思っていました – qaxi

+1

これは、指している。 –

答えて

1

を使用するために必要とされる代わりに、春の@Scope注釈の@RequestScopedアノテーションを使用したいできるだけ多く、春は@RequestScopedアウトをサポートしていません。ボックスの。私は@RequestScoped

@Scopeに変換する ScopeMetadataResolverを作成する必要がありました、私は私のカスタムリゾルバのためにここに呼ば:

https://github.com/matzew/spring-cdi-bridge/blob/master/src/main/java/net/wessendorf/spring/scopes/CdiScopeMetadataResolver.java

関連する問題