春:基于注解的配置基本值(属性)的构造函数注入

问题描述:

我想配置春季3,这需要基本值作为其构造函数的参数与基于注解配置类:春:基于注解的配置基本值(属性)的构造函数注入

@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,但似乎也不起作用。

下面的代码工作正常<context:property-placeholder .../>

@Component 
public class MyBean { 
    @Autowired 
    public MyBean(@Value("${prop1}") String arg1, @Value("${prop2}") String arg2) { 
     // ... 
    } 
} 

<context:property-override .../>是一个非常具体的事情,在这里不适用。

+0

属性文件会有“myBean.prop1 = foo”还是“prop1 = foo”?也就是说,这些属性是否由bean名称范围? – 2010-02-22 11:58:53

+0

属性文件将有'prop1 = foo'。如果你需要'myBean.prop1 = foo',写'@Value(“$ {myBean.prop1}”)''。这就是''的工作方式。 – axtavt 2010-02-22 15:04:21