开发者

Spring: constructor injection of primitive values (properties) with annotation based configuration

I'm trying to configure a class with Annotation based configuration in Spring 3, which takes primitive values as its constructor arguments:

@Component
class MyBean {
  MyBean(String arg1, String arg2) {
    // ...
  }
}

And an application context like this:

<beans [...]>
  <context:component-scan base-package="com.example" />
  <context:property-override location="/WEB-INF/example.properties" />
</beans>
开发者_如何学Go

I'm trying to find some way to specify that the constructor arguments should be taken from the properties file. Apparently this does work with constructors that take regular beans (e.g. MyClass(Bean bean1, OtherBean bean2)), but just properties?

I have also tried annotating the constructor arguments with Spring 3's @Value annotation and an EL expression for the value, like @Value("#{prop.Prop1}") arg1, but that doesn't seem to work either.


The following code works fine with <context:property-placeholder .../>:

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

But <context:property-override .../> is a very specific thing, it's not suitable here.

0

上一篇:

下一篇:

精彩评论

暂无评论...
验证码 换一张
取 消

最新问答

问答排行榜