Spring 向现有bean的属性添加更多值
在我的配置中,我有一个beanSpring 向现有bean的属性添加更多值,spring,configuration,javabeans,Spring,Configuration,Javabeans,在我的配置中,我有一个bean路径。现在,根据读取的配置文件,我需要向该属性添加路径 或者换句话说:如何在现有bean上多次设置属性 标准语法总是创建一个新bean 我试图创建一个“appender”bean,使其非惰性,但由于某种原因,pathbean没有被注入: public class Appender { private Paths paths; // Never called :-( @Required @Autowired public vo
路径
。现在,根据读取的配置文件,我需要向该属性添加路径
或者换句话说:如何在现有bean上多次设置属性
标准语法
总是创建一个新bean
我试图创建一个“appender”bean,使其非惰性,但由于某种原因,path
bean没有被注入:
public class Appender {
private Paths paths;
// Never called :-(
@Required @Autowired
public void setPaths( Paths paths ) { this.paths = paths; }
public void setAdditionalPaths( List<String> paths ) {
this.paths.add( paths );
}
}
公共类追加器{
专用路径;
//从未打过电话:-(
@自动连线时需要
public void setpath(path){this.path=path;}
public void setAdditionalPath(列出路径){
this.path.add(路径);
}
}
在Spring配置中:
<bean id="addMorePaths" class="Appender" depends-on="paths" lazy-init="false">
<property name="additionalPaths">
<list>...</list>
</property>
</bean>
...
您可以将其实现为BeanPostProcessor
:
public class Appender implements BeanPostProcessor {
private List<String> paths;
public void setAdditionalPaths( List<String> paths ) {
this.paths = paths;
}
public Object postProcessAfterInitialization(String name, Object bean) {
if ("paths".equals(name)) {
((Paths) bean).add(paths);
}
return bean;
}
public Object postProcessBeforeInitialization(String name, Object bean) {
return bean;
}
}
公共类Appender实现BeanPostProcessor{
私有列表路径;
public void setAdditionalPath(列出路径){
这个路径=路径;
}
公共对象后处理后初始化(字符串名称,对象bean){
如果(“路径”。等于(名称)){
((路径)bean);
}
返回豆;
}
初始化前的公共对象后处理(字符串名称、对象bean){
返回豆;
}
}