我有以下不可变的类(即在单独的库中,我不能更改(:
public class MyClass implements InitializingBean, BeanNameAware {
private BeanA prop1;
private BeanB prop2;
public MyClass() {}
@Override
public void afterPropertiesSet() {
// do smth with prop1 and prop2
}
}
我需要创建多个不同的MyClass bean,但使用在运行时生成的属性值(prop1,prop2(。
如何实现?
我尝试实现FactoryBean<MyClass>
,但方法FactoryBean#getObject
没有参数。
不能使用带参数的BeanFactory#getBean
,因为MyClass
没有这些属性的构造函数参数(它是单独的库(。
您可以使用javax.annotation.@PostContruct
@Component
public class MyClass {
private BeanA prop1;
private BeanB prop2;
@PostConstruct
public void doSomethingAfterInstanced() {
prop1 = null;
prop2 = new BeanB();
}
}