java中列表的定义,如何在Spring中定义List bean?

回答(10)

e15298c6a3b4591803e154ab0c3b3e2e.png

2 years ago

Stacker提出了一个很好的答案,我会更进一步,使其更具动态性并使用Spring 3 EL Expression .

#{springDAOBean.getGenericListFoo()}

我试图找出如何使用util:list来实现这一点但由于转换错误而无法使其工作 .

e15298c6a3b4591803e154ab0c3b3e2e.png

2 years ago

导入spring util命名空间 . 然后,您可以按如下方式定义列表bean:

xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"

xmlns:util="http://www.springframework.org/schema/util"

xsi:schemaLocation="http://www.springframework.org/schema/beans

http://www.springframework.org/schema/beans/spring-beans-3.0.xsd

http://www.springframework.org/schema/util

http://www.springframework.org/schema/util/spring-util-2.5.xsd">

foo

bar

value-type是要使用的泛型类型,并且是可选的 . 您还可以使用属性 list-class 指定列表实现类 .

e15298c6a3b4591803e154ab0c3b3e2e.png

2 years ago

作为Jakub答案的补充,如果您打算使用JavaConfig,您也可以通过这种方式自动装配:

import com.google.common.collect.Lists;

import java.util.List;

import org.springframework.context.annotation.Configuration;

import org.springframework.context.annotation.Bean;

@Configuration

public class MyConfiguration {

@Bean

public List stages(final Stage1 stage1, final Stage2 stage2) {

return Lists.newArrayList(stage1, stage2);

}

}

e15298c6a3b4591803e154ab0c3b3e2e.png

2 years ago

这是一种方法:

e15298c6a3b4591803e154ab0c3b3e2e.png

2 years ago

之后定义那些bean(test1,test2):)

e15298c6a3b4591803e154ab0c3b3e2e.png

2 years ago

class="com.somePackage.SomeClass">

在SomeClass中:

class SomeClass {

private List myList;

@Required

public void setMyList(List myList) {

this.myList = myList;

}

}

e15298c6a3b4591803e154ab0c3b3e2e.png

2 years ago

另一种选择是使用JavaConfig . 假设所有阶段都已注册为spring bean,您只需:

@Autowired

private List stages;

和spring会自动将它们注入此列表中 . 如果您需要保留订单(上层解决方案不这样做),您可以这样做:

@Configuration

public class MyConfiguration {

@Autowired

private Stage1 stage1;

@Autowired

private Stage2 stage2;

@Bean

public List stages() {

return Lists.newArrayList(stage1, stage2);

}

}

保留顺序的另一个解决方案是在bean上使用 @Order 注释 . 然后列表将包含按升序注释值排序的bean .

@Bean

@Order(1)

public Stage stage1() {

return new Stage1();

}

@Bean

@Order(2)

public Stage stage2() {

return new Stage2();

}

e15298c6a3b4591803e154ab0c3b3e2e.png

2 years ago

这是如何在Spring中的一些属性中注入set:

class="biz.bsoft.processing">

e15298c6a3b4591803e154ab0c3b3e2e.png

2 years ago

您声明一个ListFactoryBean实例,提供要将 元素作为其值实例化为属性的列表,并为该bean提供 id 属性 . 然后,每次在特定的其他bean声明中使用声明的 id 作为 ref 或类似的时,都会实例化列表的新副本 . 您还可以指定要使用的 List 类 .

e15298c6a3b4591803e154ab0c3b3e2e.png

2 years ago

使用util命名空间,您将能够在应用程序上下文中将列表注册为bean . 然后,您可以重用该列表将其注入其他bean定义中 .

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值