質問

Javaで@required Annotationを有効にする方法(スプリング3.1)? XMLではなく、Javaを通して。また、どの注釈の下で私はこれを可能にしましたか? @feature(@futureconfigurationまたは@bean(@configuration)?

編集:

    @Feature
    public MvcAnnotationDriven annotationDriven(ConversionService conversionService) {
        return new MvcAnnotationDriven().conversionService(conversionService)
                .argumentResolvers(new CustomArgumentResolver());
    }

これにより、すべての注釈が可能になりますか?

役に立ちましたか?

解決

@Anubhavaの回答は機能しますが、彼は5歳のSpring 2.0マニュアルを参照しています。

XML Configでは、Spring 3.Xにはよりエレガントなアプローチがあります。 <context:annotation-config/>. 。これにより、おそらくあなたが望む他の機能の束も可能になりましたが、 RequiredAnnotationBeanPostProcessor いくつかを有効にします。

見る スプリング3.xマニュアル.

使用している場合 @Bean-Style Config、次に注釈のような @Required したほうがいい すでに その方法だからです @Bean 作品。ただし、これはバグである可能性があります - スプリング3.1はまだ初期のベータ版であり、その大きなチャンクは壊れる可能性があります。

あなたが何をしているのか本当にわからない限り、私は3.0.xに固執することを強くお勧めします。

他のヒント

から スプリングマニュアル:

この動作を実際に「切り替える」ために必要な、最後の小さな(小さく、小さな)スプリング構成が1つあります。クラスの「セッター」プロパティに単純に注釈を付けるだけでは、この動作を得るには十分ではありません。 @requiredアノテーションを認識し、適切に処理できるコンポーネントを有効にする必要があります。

このコンポーネントは、AnnotationBeanPostProcessorクラスを必要としています。これは、 @expern-Awareであり、実際に「必要なプロパティが設定されていない場合は爆破」を提供する特別なBeanPostProcessorの実装です。構成は非常に簡単です。次のBean定義をSpring XML構成にドロップするだけです。

<bean class=
"org.springframework.beans.factory.annotation.RequiredAnnotationBeanPostProcessor"/>

チェックしてください: http://static.springsource.org/spring/docs/2.0.x/reference/metadata.html

使用する AnnotationConfigApplicationContext XMLを使用したくない場合:

スタンドアロンアプリケーションのコンテキスト、注釈付きクラスを入力として受け入れる - 特に - @Configuration- 認定クラスだけでなく、単純なクラスもあります @Componentsjavax.injectアノテーションを使用したJSR-330準拠クラス。クラスを1つずつ登録できます(register(java.lang.Class...))ClassPathスキャン(scan(java.lang.String...)).

複数の構成クラスの場合、後のクラスで定義されているBeanメソッドは、以前のクラスで定義されたクラスをオーバーライドします。これを活用して、追加の構成クラスを介して特定のBeanの定義を意図的にオーバーライドすることができます。

サンプルコード:

ConfigurableApplicationContext applicationContext =
new AnnotationConfigApplicationContext(
    "com.mycompany.package1",
    "com.mycompany.package2",
    "com.mycompany.package3"
    // etc.
);
applicationContext.refresh();
ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top