我们还可以在 Bean 标签下的 元素中,使用以下元素配置 Java 集合类型的属性和参数,例如 List、Set、Map 以及 Properties 等。
示例 1:在集合中设置普通类型的值
下面我们通过一个实例,演示下如何注入集合类型的属性和参数。
1. 参考《[第一个 Spring 程序]》,新建一个名为 my-spring-demo4 的 Java 项目。
2. 在 net.biancheng.c 包下,创建一个名为 JavaCollection 的类,代码如下。
1. package net.biancheng.c;
3. import java.util.Arrays;
4. import java.util.List;
5. import java.util.Map;
6. import java.util.Set;
8. public class JavaCollection {
9. //1 数组类型属性
10. private String[] courses;
11. //2 list 集合类型属性
12. private List list;
13. //3 map 集合类型属性
14. private Map
2. 在 src 目录下创建 Spring 配置文件 Beans.xml,配置如下。
1.
3. 在 net.biancheng.c 包下,创建一个名为 MainApp 的类,代码如下。
1. package net.biancheng.c;
3. import org.apache.commons.logging.Log;
4. import org.apache.commons.logging.LogFactory;
5. import org.springframework.context.ApplicationContext;
6. import org.springframework.context.support.ClassPathXmlApplicationContext;
8. public class MainApp {
9. private static final Log LOGGER = LogFactory.getLog(MainApp.class);
11. public static void main(String[] args) {
12. //获取 ApplicationContext 容器
13. ApplicationContext context = new ClassPathXmlApplicationContext("Beans.xml");
14. //获取名为 employee 的 Bean
15. JavaCollection javaCollection = context.getBean("javaCollection", JavaCollection.class);
16. //通过日志打印员工信息
17. LOGGER.info(javaCollection.toString());
18. }
19. }
4. 运行 MainApp 类中的 main() 方法,控制台输出如下。
十二月 17, 2021 4:56:01 下午 net.biancheng.c.MainApp main 信息: JavaCollection{courses=[Java, PHP, C 语言], list=[张三, 李四, 王五, 赵六], maps={JAVA=java, PHP=php}, sets=[MySQL, Redis]}
示例 2:在集合中设置对象类型的值
在上面的示例中,都是在集合中通过 value 属性设置的普通类型的值,我们还可以通过 ref 属性在注入到 Bean 的集合中设置对象类型的值。
1. 在 my-spring-demo4 项目的 net.biancheng.c 包中,创建一个名为 Course 的类,代码如下。
1. package net.biancheng.c;
3. import org.apache.commons.logging.Log;
4. import org.apache.commons.logging.LogFactory;
6. public class Course {
7. private static final Log LOGGER = LogFactory.getLog(Course.class);
8. //课程编号
9. private Integer courseId;
10. //课程名称
11. private String courseName;
13. public void setCourseId(Integer courseId) {
14. this.courseId = courseId;
15. }
17. public void setCourseName(String courseName) {
18. this.courseName = courseName;
19. }
21. @Override
22. public String toString() {
23. return "Course{" +
24. "courseId=" + courseId +
25. ", courseName='" + courseName + '\'' +
26. '}';
27. }
28. }
2. 将 JavaCollection 中的代码修改成以下形式。
1. package net.biancheng.c;
3. import java.util.Arrays;
4. import java.util.List;
5. import java.util.Map;
6. import java.util.Set;
8. public class JavaCollection {
9. //1 数组类型属性
10. private Course[] courses;
11. //2 list 集合类型属性
12. private List list;
13. //3 map 集合类型属性
14. private Map
3. 将 Beans.xml 中配置修改成以下内容。
1.
4. 运行 MainApp 类中的 main() 方法,控制台输出如下。
十二月 17, 2021 5:20:04 下午 net.biancheng.c.MainApp main 信息: JavaCollection{courses=[Course{courseId=1, courseName='Java课程'}, Course{courseId=2, courseName='PHP课程'}, Course{courseId=3, courseName='C语言课程'}], list=[张三, 李四, 王五, 赵六], maps={JAVA=java, PHP=php}, sets=[MySQL, Redis]}