Java 基于属性占位符有条件地实例化Springbean
根据布尔占位符属性,是否可以将spring配置为实例化bean?或者至少基于这样的属性将包从注释扫描中排除?这可能不符合您的需要,我假设您可以控制所讨论的类,即不是供应商代码,但是您是否考虑过将bean标记为延迟加载?至少,在实际使用之前,它不会被实例化,这可能会根据配置的其余部分有条件地发生。这可能不符合您的需要,我假设您可以控制所讨论的类,即不是供应商代码,但您是否考虑过将bean标记为延迟加载?至少,在实际使用之前,它不会被实例化,这可能会根据配置的其余部分有条件地发生。我认为应该使用Spring配置文件来配置不同的行为。但是,如果使用注释,则可以创建@Configuration对象和工厂方法,以基于属性值创建bean e、 gJava 基于属性占位符有条件地实例化Springbean,java,spring,Java,Spring,根据布尔占位符属性,是否可以将spring配置为实例化bean?或者至少基于这样的属性将包从注释扫描中排除?这可能不符合您的需要,我假设您可以控制所讨论的类,即不是供应商代码,但是您是否考虑过将bean标记为延迟加载?至少,在实际使用之前,它不会被实例化,这可能会根据配置的其余部分有条件地发生。这可能不符合您的需要,我假设您可以控制所讨论的类,即不是供应商代码,但您是否考虑过将bean标记为延迟加载?至少,在实际使用之前,它不会被实例化,这可能会根据配置的其余部分有条件地发生。我认为应该使用Sp
我认为您应该使用Spring配置文件来配置不同的行为。但是,如果使用注释,则可以创建@Configuration对象和工厂方法,以基于属性值创建bean e、 g
您还可以使用@Conditional
@Configuration
public class EmployeeDataSourceConfig {
....
@Bean(name="dataSource")
@Conditional(ProdDataSourceCondition.class)
public DataSource getProdDataSource() {
return new ProductionDatabaseUtil();
}
}
步骤1:创建一个实现条件的类
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();
}
}
您还可以使用@Conditional
@Configuration
public class EmployeeDataSourceConfig {
....
@Bean(name="dataSource")
@Conditional(ProdDataSourceCondition.class)
public DataSource getProdDataSource() {
return new ProductionDatabaseUtil();
}
}
步骤1:创建一个实现条件的类
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();
}
}
您可以使用ConditionalOnProperty:
另外,请检查答案。您可以使用条件属性:
另外,检查答案。查看配置文件:查看配置文件: