在我的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
答案 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的新数据。
但这是具体的,所以你必须考虑这个场景是否适合你的应用程序。