ブール値のプレースホルダー プロパティに応じて、Spring を構成して Bean をインスタンス化するかどうかを設定することは可能ですか? または、少なくともそのようなプロパティに基づいて注釈スキャンからパッケージを除外するには?
質問する
8691 次
4 に答える
8
さまざまな動作を構成するには、Springプロファイルを使用する必要があると思います。ただし、アノテーションを使用している場合は、 @Configuration オブジェクトと、プロパティ値に基づいて Bean を作成するファクトリ メソッドを作成できます。
例えば
@Configuration
class ExampleConfig {
private final String prop;
public ExampleConfig(@Value("${your.prop.name}" prop} {
this.prop = prop;
}
@Bean
public YourBeanClass create() {
if (prop.equals("someValue") {
return new YourBeanClass();
}
return new OtherClass(); // must be subclass/implementation of YBC
}
}
于 2013-07-18T14:56:43.700 に答える
0
@Conditional を使用することもできます
ステップ 1 : Condition を実装するクラスを作成する
public class ProdDataSourceCondition implements Condition {
@Override
public boolean matches(ConditionContext context, AnnotatedTypeMetadata metadata) {
String dbname = context.getEnvironment().getProperty("database.name");
return dbname.equalsIgnoreCase("prod");
}}
ステップ 2: @Conditional で上記のクラスを使用する
@Configuration
public class EmployeeDataSourceConfig {
....
@Bean(name="dataSource")
@Conditional(ProdDataSourceCondition.class)
public DataSource getProdDataSource() {
return new ProductionDatabaseUtil();
}
}
于 2017-01-01T19:37:37.863 に答える