我的 spring boot 项目中有 2 个 java bean。第一个 bean 从属性文件( Spring 注入(inject))获取值,第二个 bean 从不同来源获取值。
在 spring 初始化之后,我想将第二个 bean 的属性值合并到第一个 bean 中。请告知 spring 是否提供任何类来动态注入(inject)值。
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
最佳答案
尝试使用表达语言:
@Value(#{anotherBean.location})
private String location
@Value(#{anotherBean.enabled})
private boolean enabled
更新
或者,您可以在帖子构造中分配它:
@Autowired
private AnotherBean anotherBean;
@PostConstruct
public void init(){
location = anotherBean.getLocation();
enabled = anotherBean.isEnabled();
}
更新 2
我想到的最后一个可以开箱即用的事情是将第一个 bean 的范围更改为原型(prototype)而不是单例:
@Scope("prototype")
现在每次使用此 bean(例如 spring 上下文中的 getBean)都会创建一个新实例。并且每次都会注入(inject)来自另一个 Bean 的新数据。
但这是特定的,因此您必须考虑这种情况是否适合您的应用程序。
关于java - Spring 将一个 bean 的属性值注入(inject)另一个 bean,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41990373/