我的Spring配置中有两个beanAbeanB bean。这两个bean都实现相同的接口。我有一个具有接口类型的自动装配字段的类(即它将使用beanAbeanB的实例填充)。

最初只有一个bean,所以我只使用了@Autowired批注,并填充了该字段。但是,现在有两个可以自动装配的潜在bean。我想根据我的.properties资源之一中属性的存在来自动装配bean。有什么优雅的方法可以做到这一点吗?

我现在使用的解决方案是在自动连线字段上使用@Qualifier批注指定beanA,然后进行检查以查看该属性是否存在于代码中。如果是这样,我将字段重新分配给beanB的实例。这是一种非常笨拙的方法,所以我正在寻找更好的选择。

最佳答案

除了Bean配置文件的新功能之外,您还可以在take advantage中的FactoryBean在访问时实例化Bean。想法是将FactoryBean注入bean类型(例如fqcn.BeanAfqcn.BeanB)。然后,工厂bean将返回bean工厂,以实例化您可能需要的bean的正确类型。然后,FactoryBean的配置可以利用资源束中的属性。

09-25 20:45