Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/354.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/asp.net-mvc-3/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 基于属性占位符有条件地实例化Springbean_Java_Spring - Fatal编程技术网

Java 基于属性占位符有条件地实例化Springbean

Java 基于属性占位符有条件地实例化Springbean,java,spring,Java,Spring,根据布尔占位符属性,是否可以将spring配置为实例化bean?或者至少基于这样的属性将包从注释扫描中排除?这可能不符合您的需要,我假设您可以控制所讨论的类,即不是供应商代码,但是您是否考虑过将bean标记为延迟加载?至少,在实际使用之前,它不会被实例化,这可能会根据配置的其余部分有条件地发生。这可能不符合您的需要,我假设您可以控制所讨论的类,即不是供应商代码,但您是否考虑过将bean标记为延迟加载?至少,在实际使用之前,它不会被实例化,这可能会根据配置的其余部分有条件地发生。我认为应该使用Sp

根据布尔占位符属性,是否可以将spring配置为实例化bean?或者至少基于这样的属性将包从注释扫描中排除?

这可能不符合您的需要,我假设您可以控制所讨论的类,即不是供应商代码,但是您是否考虑过将bean标记为延迟加载?至少,在实际使用之前,它不会被实例化,这可能会根据配置的其余部分有条件地发生。

这可能不符合您的需要,我假设您可以控制所讨论的类,即不是供应商代码,但您是否考虑过将bean标记为延迟加载?至少,在实际使用之前,它不会被实例化,这可能会根据配置的其余部分有条件地发生。

我认为应该使用Spring配置文件来配置不同的行为。但是,如果使用注释,则可以创建@Configuration对象和工厂方法,以基于属性值创建bean

e、 g


我认为您应该使用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:

另外,请检查答案。

您可以使用条件属性:


另外,检查答案。

查看配置文件:查看配置文件: