我有一个要转换为弹簧单例的对象,该对象包含一个在初始化后要注入的属性。该属性不能作为bean初始化,我希望可以从代码中检索它。
public class BigObject{
private SmallObject prop;
}
我添加了以下bean:
<bean id="BigObject" class="com.cisco.cpm.lsd.SessionPublisher"
scope="singleton" init-method="init" destroy-method="destroy" lazy-init="true">
</bean>
是否有初始化prop
的最佳实践方法?
我知道可以通过属性工厂方法来完成
<property name="prop">
<bean factory-bean="SmallObjectFactory" factory-method="getSmallObject"></bean>
</property>
但这需要我为该属性初始化添加一个新对象。有更好的解决方案吗?
答案 0 :(得分:3)
如果我正确理解了您的问题,则应该可以执行以下操作。首先创建一个@Configuration公开您的SmallObject bean:
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
@Configuration
public class YourConfiguration {
@Bean
public SmallObject getSmallObject() {
// create a new SmallObject
return new SmallObject();
}
}
然后,在要注入SmallObject的BigObject中,您可以执行以下操作:
import org.springframework.stereotype.Component;
import org.springframework.beans.factory.annotation.Autowired;
@Component
public class BigObject {
private SmallObject smallObject;
@Autowired
public BigObject(SmallObject smallObject) {
this.smallObject = smallObject;
}
}
希望这会有所帮助!