java - 在 Spring Boot 中使用应用程序属性动态更改 bean

标签 java spring spring-boot dependency-injection javabeans

是否可以使用应用程序属性来设置Spring boot中bean的定义?

例如:

@Bean
public SomeClassImpl getImpl(){
       return SomeClassImplFactory.getDefaultClassImpl();
 }

将是默认定义。但是有没有一种方法可以在属性文件中指定类似

getImpl=some.package.NewClassImpl

覆盖前一个?

谢谢

最佳答案

您可以考虑使用这种方法:

@Autowired
private Environment environment;

@Bean
public SomeClassImpl getImpl(){
    if(environment.getProperty("getImpl").equals("xxx")) {
        return new NewClassImpl();
    }
    return SomeClassImplFactory.getDefaultClassImpl();
}

关于java - 在 Spring Boot 中使用应用程序属性动态更改 bean,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60353899/

相关文章:

java - 将整个相对布局变成一个按钮

spring-boot - Spring security如何允许root url而不干扰安全 'below' root

java - Spring 启动卡夫卡消息传递。如何简化处理程序的 dto 映射?

java - Spring以编程方式生成oauth2访问 token

java - 模型字段上的自定义注释,用于在 Spring Boot 中存储到数据库时进行加密和解密

java - 当我第二次运行线程时 : java. lang.IllegalThreadStateException: 线程已经启动

java - mock 单例类

java - 同时打开两个结果集

spring - 返回 void 的 Controller 方法可以生成 JSON 吗?

java - 预检响应中的 Access-Control-Allow-Headers 不允许在请求 header 字段 Access-Control-Allow-Origin 中启用 cors