私が定義したプロパティに応じて、基本認証またはOauth2を必要とする春の起動アプリケーションを作成しています。コンフィグレーションを動的にロードする
@configurationで2つのクラスを作成した場合、アプリケーションが起動せず、そのまま残してconfigureメソッドでHttpSecurityオブジェクトを設定するifを追加すると問題が発生します。基本認証を持つエンドポイント
私は動的にこのように豆を登録しよう:
@Bean
public ResourceServerSecurityConfig oauthConfig(){
if(isOauthEnabled){
return new ResourceServerSecurityConfig();
}else{
return null;
}
}
@Bean
public BasicSecurityConfig basicConfig(){
if(isOauthEnabled){
return new BasicSecurityConfig();
}else{
return null;
}
}
しかし、構成がロードされません。 これをアーカイブする方法に関するヒント?
「@コンディション」の仕事!まあ...。値に応じてBeanをロードします。私が今行っている問題は、Conditionインターフェイスを実装するクラスを作成したが、そのクラスがプロパティファイルから "@Value"をロードしていないことです。私は "@値"のためにクラスがBeanでなければならないので、クラスに "@Component"を注釈付けしようとしましたが、値がロードされていない理由を見つけることができません。とにかく、元の問題を解決したので、あなたの答えを正しいものとしてマークしました。ありがとう! – aruiz
最後の問題の解を探します。 matchesメソッドのConditionContextを使用して、ファイルからプロパティを読み取ることができました。なぜなら、[リンク](http://stackoverflow.com/questions/25276463/how-get-working-value-or-environment-in-a-class-implementing-the-condition-conf)は、 "Spring takesあなたが指定したClass型を使用して、それをインスタンス化してmatchesメソッドを使用します。インスタンスをBeanとみなさず、オートワイヤリングも@Value処理も行いません。後者はBeanFactoryPostProcessorでも同様です" – aruiz