我的Spring配置中有两个beanA
和beanB
bean。这两个bean都实现相同的接口。我有一个具有接口类型的自动装配字段的类(即它将使用beanA
或beanB
的实例填充)。
最初只有一个bean,所以我只使用了@Autowired
批注,并填充了该字段。但是,现在有两个可以自动装配的潜在bean。我想根据我的.properties
资源之一中属性的存在来自动装配bean。有什么优雅的方法可以做到这一点吗?
我现在使用的解决方案是在自动连线字段上使用@Qualifier
批注指定beanA
,然后进行检查以查看该属性是否存在于代码中。如果是这样,我将字段重新分配给beanB
的实例。这是一种非常笨拙的方法,所以我正在寻找更好的选择。
最佳答案
除了Bean配置文件的新功能之外,您还可以在take advantage中的FactoryBean
在访问时实例化Bean。想法是将FactoryBean
注入bean类型(例如fqcn.BeanA
或fqcn.BeanB
)。然后,工厂bean将返回bean工厂,以实例化您可能需要的bean的正确类型。然后,FactoryBean
的配置可以利用资源束中的属性。