我的目标是一个框架,其中可以通过属性文件轻松更改具体类型的bean.我也更喜欢注释到
XML.理想情况下,我要使用@Resource和SpEL的组合,如下所示:
@Resource(type="#{myProperties['enabled.subtype']}") SomeInterface foo;
我已经使用Propertiesfactorybean或< util:properties>加载myProperties.来自包含以下内容的文件:
enabled.type = com.mycompany.SomeClassA; // which implements SomeInterface
这不起作用,因为类型的参数必须是文字,即不允许SpEL.这里的最佳做法是什么?
更新:请参阅下面的答案.
解决方法
这正是Spring Java Configuration的用例.
或者你也可以做一个工厂.
使用:org.springframework.beans.factory.factorybean< SomeInterface>
实现factorybean的bean的名称将被视为“SomeInterface”,即使它不是.