【发布时间】:2016-01-25 12:10:11
【问题描述】:
我想创建一个基于“该字段属于哪个类的实例(甚至,只是该字段属于哪个类)的 bean。类似于:
@Configuration
@ComponentScan
public class MyConfiguration {
@Bean
SomeClass getTheRightInstance(SomeContext someContext) {
if(someContext.getinjectedFieldHostInstance.getId() == 7) {
return new SpecificSomeClassImplForId7();
} else {
return new SomeClass();
}
}
Bean 将被注入到以下field:
public class A {
private int final id;
@Inject private SomeClass field;
int getId();
public A() {
id = SerialIdGenerator.getNextID();
}
}
根据A实例的id选择注入A的field的bean
public staitc void main(String[] args) {
A a1 = new A(); // has id '1', gets field injected with SimpleClass
A a2 = new A(); // has id '2', gets field injected with SimpleClass
...
A a7 = new A(); // gets field injected with SpecificSomeClassImplForId7
...
A last= new A(); // has id!=7, gets field injected with SimpleClass
}
一般的想法是决定在代码中定义哪个实现注入哪个类中的哪个字段。
我可以将不同的 bean 实例注入到同一类的不同实例的同一字段中吗?怎么通过代码来配置呢?
【问题讨论】:
标签: java spring dependency-injection configuration