を
Conditioコントローラは通常、注入されないので、あなたは、それをautowireする必要はありませんよりも、条件付きBeanは、コントローラの場合はnullを無効
@Component
@ConditionalOnProperty(prefix = "myApplication.features", name = "feature1", havingValue="true")
public class Feature1 {
//...
}
@Autowired(required=false)
private Feature1 feature1;
- ナリー豆を可能にしました。条件付きBeanがインジェクトされている場合、有効化されていない場合はNo qualifying bean of type [xxx.Feature1]
が返されます。そのため、required=false
を使用してオートワイヤードする必要があります。その後、null
のままになります。
条件が特長1 Beanが他のコンポーネントに注入されている場合は、あなたがrequired=false
を使用して、それを注入することができるか、機能が無効になっている時に返すようにBeanを定義&無効豆
を有効:
@Component
@ConditionalOnProperty(prefix = "myApplication.features", name = "feature1", havingValue="true")
public class EnabledFeature1 implements Feature1{
//...
}
@Component
@ConditionalOnProperty(prefix = "myApplication.features", name = "feature1", havingValue="false")
public class DisabledFeature1 implements Feature1{
//...
}
@Autowired
private Feature1 feature1;
条件付き有効&無効な豆 - スプリングコンフィグ:
@Configuration
public class Feature1Configuration{
@Bean
@ConditionalOnProperty(prefix = "myApplication.features", name = "feature1", havingValue="true")
public Feature1 enabledFeature1(){
return new EnabledFeature1();
}
@Bean
@ConditionalOnProperty(prefix = "myApplication.features", name = "feature1", havingValue="false")
public Feature1 disabledFeature1(){
return new DisabledFeature1();
}
}
@Autowired
private Feature1 feature1;
春プロファイル
別のオプションは、春のプロファイルを通じて豆を有効にするには、次のようになります。@Profile("feature1")
。ただし、有効な機能はすべて1つのプロパティspring.profiles.active=feature1, feature2...
にリストされている必要がありますので、これはあなたが望むものではないと思います。
これは大きな痛みです。私の会社では、ハーフベークされたコードを、それが呼び出されないことを保証できる限り、プロダクションにリリースすることが許されています。だから、春はすべて一緒に配線していますが、それは本当に重要ですか?唯一の他の選択肢は、それが使用される前に技術的な負債を生み出すif/elseです。 –
スプリングプロファイル? http://docs.spring.io/spring-boot/docs/current/reference/html/boot-features-profiles.htmlクラスには特定のプロファイルのみの注釈を付けることができます。アクティブなプロファイルは、サーバーの起動時に設定できます。 –
春以外のhttp://ff4j.org/ライブラリ。 –