Spring 向现有bean的属性添加更多值

Spring 向现有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上多次设置属性

标准语法
总是创建一个新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){
返回豆;
}
}