java – Spring:构造函数注入具有基于注释的配置的原始值(属性)

我正在尝试在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,但这似乎也不起作用.

最佳答案
以下代码适用于< context:property-placeholder ... />:

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

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

转载注明原文:java – Spring:构造函数注入具有基于注释的配置的原始值(属性) - 代码日志