java - 在 spring 中动态注入(inject)列表属性中的值

标签 java spring

在 Spring ,我想动态地在列表属性中注入(inject)值。可能吗?

例如是否存在某些属性可以根据某个值多次重复该值,而不是指定三次值 1。

<bean id='myBean' class-"com.foo.Xyz">
 <property name="myList">
    <value>1</value>
    <value>1</value>
    <value>1</value>
 </property>
</bean>

如果问题不清楚,请告诉我。

最佳答案

自定义FactoryBean怎么样?

public class RepeatingListFactoryBean implements FactoryBean<Object> {

    private final Object item;
    private final int count;

    public RepeatingListFactoryBean(Object item, int count) {
        this.item = item;
        this.count = count;
    }

    @Override
    public Object getObject() throws Exception
    {
        final ArrayList<Object> list = new ArrayList<Object>(count);
        for(int i = 0; i < count; ++i)
            list.add(item);
        return list;
    }

    @Override
    public Class<?> getObjectType() {
        return item.getClass();
    }

    @Override
    public boolean isSingleton() {
        return true;
    }
}

您可以通过以下方式使用它(但我没有测试过):

<bean id="listFactory" class="RepeatingListFactoryBean">
  <constructor-arg value="1"/>  <!-- item -->
  <constructor-arg value="3"/>  <!-- count -->
</bean>

<bean id="myBean" class-"com.foo.Xyz">
  <property name="myList" ref="listFactory"/>
</bean>

请注意,计数和要重复的对象都是可声明配置的。

关于java - 在 spring 中动态注入(inject)列表属性中的值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7349289/

相关文章:

java - 外循环不起作用(java)

spring - 在@Component类中注册bean是否尊重@Scope?

java - "Failed to load ApplicationContext"使用@ContextConfiguration( "/applicationContext.xml") 和 Maven 结构

java - 如何在 Spring 通过注释设置 Activity 配置文件?

java - 为什么我可以在 Java 中编辑最终数组的内容?

java - Kurento 媒体服务器一对二通话不起作用?

java - 使用外部 jar 命令通过命令行向主类发送参数

java - 使用Java subString格式化以点分隔的字符串 (".")

java - Jhipster:异步 sendemail() 一段时间后停止工作

java - Spring CrudRepository 将值插入 mysql 数据库