我正在尝试在Spring 3中配置一个基于Annotation配置的类,它将原始值作为构造函数参数:
@Component
class MyBean {
MyBean(String arg1, String arg2) {
// ...
}
}
这样的应用程序上下文:
<beans [...]>
<context:component-scan base-package="com.example" />
<context:property-override location="/WEB-INF/example.properties" />
</beans>
我正在尝试找到一些方法来指定构造函数参数应该从属性文件中获取。显然,这适用于采用常规bean的构造函数(例如MyClass(Bean bean1, OtherBean bean2)
),但仅适用于属性?
我还尝试使用Spring 3的@Value
注释和值的EL表达式来注释构造函数参数,例如@Value("#{prop.Prop1}") arg1
,但这似乎也不起作用。
答案 0 :(得分:16)
以下代码适用于<context:property-placeholder .../>
:
@Component
public class MyBean {
@Autowired
public MyBean(@Value("${prop1}") String arg1, @Value("${prop2}") String arg2) {
// ...
}
}
但<context:property-override .../>
是一个非常具体的事情,在这里不适合。