有没有办法@Autowire一个需要构造函数参数的bean?
我正在使用Spring 3.0.5,并为类成员尽可能多地使用@Autowire注释。我需要自动装配的bean之一需要其构造函数的参数。我浏览了Spring文档,但似乎找不到任何有关如何注释构造函数参数的参考。
在XML中,我可以将其用作bean定义的一部分。@Autowire注释是否有类似的机制?
例如:
@Componentpublic class MyConstructorClass{
String var;
public MyConstructorClass( String constrArg ){
this.var = var;
}
...
}
@Service
public class MyBeanService{
@Autowired
MyConstructorClass myConstructorClass;
....
}
在此示例中,如何在MyBeanService中使用@Autowire批注指定“ constrArg”的值?有什么办法吗?
谢谢,
回答:
你需要@Value
注释。
一个常见的用例是使用"#{systemProperties.myProp}"
样式表达式分配默认字段值 。
public class SimpleMovieLister { private MovieFinder movieFinder;
private String defaultLocale;
@Autowired
public void configure(MovieFinder movieFinder,
@Value("#{ systemProperties['user.region'] }"} String defaultLocale) {
this.movieFinder = movieFinder;
this.defaultLocale = defaultLocale;
}
// ...
}
请参阅: 表达式语言>注释配置
更清楚地说:在你的方案中,你将连接两个类,MybeanService和MyConstructorClass,如下所示:
@Componentpublic class MyBeanService implements BeanService{
@Autowired
public MybeanService(MyConstructorClass foo){
// do something with foo
}
}
@Component
public class MyConstructorClass{
public MyConstructorClass(@Value("#{some expression here}") String value){
// do something with value
}
}
更新:如果你需要几个MyConstructorClass具有不同值的不同实例,则应使用Qualifier批注
以上是 有没有办法@Autowire一个需要构造函数参数的bean? 的全部内容, 来源链接: utcz.com/qa/432996.html