Spring将属性值从bean注入另一个bean

时间:2017-02-01 21:45:41

标签: java spring spring-boot dependency-injection

在我的spring启动项目中有2个java bean。第一个bean从属性文件中获取值(弹簧注入),第二个bean从不同的源获取值。

在spring初始化之后,我想将第二个bean的属性值合并到第一个bean中。如果spring提供任何类来动态注入值,请告诉我们。

first bean gets the values from property file:
----------------------------------------------
@value("username")
private String username
@Value("server")
private String servername
@Value("inject from second bean")
private String location
@Value("inject from second bean")
private boolean enabled

second bean gets the values from different source
-----------------------------------------------
private String location
private boolean enabled

1 个答案:

答案 0 :(得分:1)

尝试使用表达式langugage:

@Value(#{anotherBean.location})
private String location
@Value(#{anotherBean.enabled})
private boolean enabled

<强>更新

或者你可以在post构造中指定它:

@Autowired
private AnotherBean anotherBean;

@PostConstruct
public void init(){
    location = anotherBean.getLocation();
    enabled = anotherBean.isEnabled();
}

更新2

我想到的最后一件可以开箱即用的事情是将第一个bean的范围改为原型而不是单例:

@Scope("prototype")

现在每次使用此bean时(例​​如,在Spring上下文中使用getBean)都会创建一个新实例..每次都会注入来自anotherBean的新数据。

但这是具体的,所以你必须考虑这个场景是否适合你的应用程序。