课程链接:

本节主要讲了以下几块内容

1    注解相关解析

2    代码演练

集合for循环的使用

2.1  list集合应用

2.2  map集合应用

2.3  集合排序(只对list有效,对map无效(list有序,map无序))

1    注解相关解析

1.1  autowired注解应用到集合属性可以提供所有特定类型的bean

1.2  autowired可以提供集合中实体类的bean和子类的bean(继承,详情见下方代码)

autowired注解不能应用在Spring BeanPostProcessor或者BeanFactoryPostProcessor中,必须用xml或@Bean方式进行注解加载(否则会造成循环依赖)

2    代码演练

2.1  list集合应用

xml配置:

<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns:context="http://www.springframework.org/schema/context"
xsi:schemaLocation="http://www.springframework.org/schema/beans
http://www.springframework.org/schema/beans/spring-beans.xsd
http://www.springframework.org/schema/context
http://www.springframework.org/schema/context/spring-context.xsd"> <context:component-scan base-package="com.imooc.beanannotation"/> </beans>

测试类:

package com.imooc.beaninvoker;

import org.junit.Test;

import com.imooc.beanannotation.injection.service.InjectionService;
import com.imooc.beanannotation.multibean.BeanInvoker;
import com.imooc.test.base.UnitTestBase; public class TestBeanInvoker extends UnitTestBase{ public TestBeanInvoker() {
super("classpath*:spring-beaninvoker.xml");
} @Test
public void testBeanInvoker(){
try {
BeanInvoker bInvoker = super.getbean("beanInvoker");
bInvoker.say();
} catch (Exception e) {
// TODO: handle exception
e.printStackTrace();
}
}
}

实体类:

package com.imooc.beanannotation.multibean;

import java.util.List;

import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Component;

@Component
public class BeanInvoker {
@Autowired
private List<BeanInterface> list; //
public void say(){
if(null!=list){
for(BeanInterface bean :list){
System.out.println(bean.getClass().getName());
}

}else{
System.out.println("list is not null");
} } }

dao类:

package com.imooc.beanannotation.multibean;

public interface BeanInterface {

}

dao子类1:

package com.imooc.beanannotation.multibean;

import org.springframework.stereotype.Component;

@Component
public class BeanImplOne implements BeanInterface{ }

dao子类2:

package com.imooc.beanannotation.multibean;

import org.springframework.stereotype.Component;

@Component
public class BeanImplTwo implements BeanInterface{ }

打印结果:

三月 13, 2019 6:39:29 上午 org.springframework.context.support.ClassPathXmlApplicationContext prepareRefresh
信息: Refreshing org.springframework.context.support.ClassPathXmlApplicationContext@4a8927c8: startup date [Wed Mar 13 06:39:28 CST 2019]; root of context hierarchy
三月 13, 2019 6:39:29 上午 org.springframework.beans.factory.xml.XmlBeanDefinitionReader loadBeanDefinitions
信息: Loading XML bean definitions from URL [file:/F:/xiangmu3/Xin/FuQiang/Spring/ddwei-dao/target/classes/spring-beaninvoker.xml]
com.imooc.beanannotation.multibean.BeanImplOne
com.imooc.beanannotation.multibean.BeanImplTwo

三月 13, 2019 6:39:31 上午 org.springframework.context.support.ClassPathXmlApplicationContext doClose
信息: Closing org.springframework.context.support.ClassPathXmlApplicationContext@4a8927c8: startup date [Wed Mar 13 06:39:28 CST 2019]; root of context hierarchy

2.2  map集合应用

实体类:

package com.imooc.beanannotation.multibean;

import java.util.List;
import java.util.Map; import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Component; @Component
public class BeanInvoker {
@Autowired
private List<BeanInterface> list; @Autowired
private Map<String, BeanInterface> map; //
public void say(){
if(null!=list&&0!=list.size()){
System.out.println("list...");
for(BeanInterface bean :list){
System.out.println(bean.getClass().getName());
}
}else{
System.out.println("list is not null");
} if(null!=map&&0!=map.size()){
System.out.println("map...");
for(Map.Entry<String,BeanInterface> entry :map.entrySet()){
System.out.println(entry.getKey()+" "+entry.getClass().getName());
}
}else{
System.out.println("Map<String,BeanInterface> map is null"
);
}
} }

其他类完全相同:

打印日志:

三月 18, 2019 6:52:15 上午 org.springframework.context.support.ClassPathXmlApplicationContext prepareRefresh
信息: Refreshing org.springframework.context.support.ClassPathXmlApplicationContext@7292e1b2: startup date [Mon Mar 18 06:52:15 CST 2019]; root of context hierarchy
三月 18, 2019 6:52:16 上午 org.springframework.beans.factory.xml.XmlBeanDefinitionReader loadBeanDefinitions
信息: Loading XML bean definitions from URL [file:/F:/xiangmu3/Xin/FuQiang/Spring/ddwei-dao/target/classes/spring-beaninvoker.xml]
list...
com.imooc.beanannotation.multibean.BeanImplOne
com.imooc.beanannotation.multibean.BeanImplTwo
map...
beanImplOne java.util.LinkedHashMap$Entry
beanImplTwo java.util.LinkedHashMap$Entry

三月 18, 2019 6:52:20 上午 org.springframework.context.support.ClassPathXmlApplicationContext doClose
信息: Closing org.springframework.context.support.ClassPathXmlApplicationContext@7292e1b2: startup date [Mon Mar 18 06:52:15 CST 2019]; root of context hierarchy

2.3  集合排序(只对list有效,对map无效(list有序,map无序))

dao子类1:

package com.imooc.beanannotation.multibean;

import org.springframework.core.annotation.Order;
import org.springframework.stereotype.Component; @Order()
@Component
public class BeanImplOne implements BeanInterface{ }

dao子类2:

package com.imooc.beanannotation.multibean;

import org.springframework.core.annotation.Order;
import org.springframework.stereotype.Component; @Order()
@Component
public class BeanImplTwo implements BeanInterface{ }

其他完全一致:

打印日志:

三月 18, 2019 7:00:13 上午 org.springframework.context.support.ClassPathXmlApplicationContext prepareRefresh
信息: Refreshing org.springframework.context.support.ClassPathXmlApplicationContext@e41a882: startup date [Mon Mar 18 07:00:13 CST 2019]; root of context hierarchy
三月 18, 2019 7:00:13 上午 org.springframework.beans.factory.xml.XmlBeanDefinitionReader loadBeanDefinitions
信息: Loading XML bean definitions from URL [file:/F:/xiangmu3/Xin/FuQiang/Spring/ddwei-dao/target/classes/spring-beaninvoker.xml]
list...
三月 18, 2019 7:00:14 上午 org.springframework.context.support.ClassPathXmlApplicationContext doClose
信息: Closing org.springframework.context.support.ClassPathXmlApplicationContext@e41a882: startup date [Mon Mar 18 07:00:13 CST 2019]; root of context hierarchy
com.imooc.beanannotation.multibean.BeanImplTwo
com.imooc.beanannotation.multibean.BeanImplOne

map...
beanImplOne java.util.LinkedHashMap$Entry
beanImplTwo java.util.LinkedHashMap$Entry

Spring课程 Spring入门篇 4-3 Spring bean装配(下)之Autowired注解说明2 集合运用的更多相关文章

  1. Spring Boot -01- 快速入门篇(图文教程)

    Spring Boot -01- 快速入门篇(图文教程) 今天开始不断整理 Spring Boot 2.0 版本学习笔记,大家可以在博客看到我的笔记,然后大家想看视频课程也可以到[慕课网]手机 app ...

  2. Spring实践系列-入门篇(一)

    本文主要介绍了在本地搭建并运行一个Spring应用,演示了Spring依赖注入的特性 1 环境搭建 1.1 Maven依赖 目前只用到依赖注入的功能,故以下三个包已满足使用. <properti ...

  3. Spring @Autowired注解用在集合上面,可以保持接口的所有实现类

    CourseService课程接口有2个子类,HistroyCourseServiceImpl和MathsCourseServiceImpl public interface CourseServic ...

  4. Spring Cloud Alibaba入门篇

    学习条件 了解web三层架构 熟练应用SSM架构 了解Maven管理工具的使用 熟练使用SpringBoot,以及了解SpringBoot基本原理. 了解部分术语:应用.工具.耦合.负载等 温馨提示: ...

  5. Spring Data JPA 入门篇

    Spring Data JPA是什么 它是Spring基于ORM框架(如hibernate,Mybatis等).JPA规范(Java Persistence API)封装的一套 JPA应用框架,可使开 ...

  6. Spring Boot源码(四):Bean装配

    为了演示Spring中对象是如何创建并放到spring容器中,这里新建一个maven项目: 其中pom.xm文件中只引入了一个依赖: <dependencies> <dependen ...

  7. Spring学习十----------Bean的配置之Autowired注解实现

    © 版权声明:本文为博主原创文章,转载请注明出处 @Required -@Required注解适用于bean属性的setter方法 -这个注解仅仅表示,受影响的bean属性必须在配置时被填充,通过在b ...

  8. Spring课程 Spring入门篇 2-1 IOC和bean容器

    课程链接: 本节讲了5部分内容,6为项目demo: 1 接口及面向接口编程 2 什么是IOC 3 Spring的bean配置 4 Bean的初始化 5 Demo 自己理解: 1 高层模块和底层模块都依 ...

  9. spring boot 学习入门篇【spring boot项目的搭建以及如何加载jsp界面】

    [ 前言]  Spring Boot 简介:Spring Boot是由Pivotal团队提供的全新框架,其设计目的是用来简化新Spring应用的初始搭建以及开发过程.该框架使用了特定的方式来进行配置, ...

随机推荐

  1. webstrom 10 注册码

    webStorm : UserName:William ===== LICENSE BEGIN ===== 45550-12042010 00001SzFN0n1bPII7FnAxnt0DDOPJA  ...

  2. springcloud系列九 整合Hystrix Dashboard

    Hystrix Dashboard是Hystrix的仪表盘组件,主要用来实时监控Hystrix的各项指标信息,通过界面反馈的信息可以快速发现系统中存在的问题. 整合快速体验: pom.xml(这个是F ...

  3. Mybatis学习笔记(九) —— Mybatis逆向工程

    一.什么是Mybatis逆向工程? 简单的解释就是通过数据库中的单表,自动生成java代码. 我们平时在使用Mabatis框架进行Web应用开发的过程中,需要根据数据库表编写对应的Pojo类和Mapp ...

  4. Liunx php函数 smtp 发送邮件

    1. 查看防火墙是否开放端口 默认smtp 25 iptables -L -n 如果没有,添加25端口 iptables -A INPUT -p tcp --dport 25 -j ACCEPT ip ...

  5. C#工具类之日期扩展类

    /// <summary> /// DateTimeHelper /// </summary> public static class DateTimeHelper { /// ...

  6. 解决windows server 2008 r2 登录进入桌面只显示一片蓝色背景

    非常高的可能性问题是:explorer.exe进程无法加载.请按ctrl+shift+esc调出任务管理器--文件-新任务-输入‘explorer’--确定即可.如无法解决,请进入安全模式关闭非必要的 ...

  7. LeeCode(No3 - Longest Substring Without Repeating Characters)

    题目: Given a string, find the length of the longest substring without repeating characters. 示例: Given ...

  8. jinkens + svn 把代码更新到本地在运行。(方法比较笨,只是想实现自己的想法。把代码更新下来在运行。)

    jinkens + svn 把代码更新到本地在运行.

  9. springmvc接收各种参数

    转载:https://blog.csdn.net/lutinghuan/article/details/46820023

  10. c# yield关键字原理

    https://www.cnblogs.com/blueberryzzz/p/8678700.html c# yield关键字原理详解 1.yield实现的功能yield return:先看下面的代码 ...