数组及Map的自动注入:

1、@controller 控制器(注入服务)
2、@service 服务(注入dao)
3、@repository dao(实现dao访问)
4、@component (把普通pojo实例化到spring容器中,相当于配置文件中的<bean id="" class=""/>)

(以上摘自https://blog.csdn.net/thinkingcao/article/details/71171222)

List方式:

package com.imooc.beanannotation.multibean;public interface BeanInterface {}
package com.imooc.beanannotation.multibean;import org.springframework.stereotype.Component;@Component
public class BeanImplOne implements BeanInterface {}
package com.imooc.beanannotation.multibean;import org.springframework.stereotype.Component;@Component
public class BeanImplTwo implements BeanInterface {}
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 {@Autowiredprivate List<BeanInterface> list;public void say(){if(null!=list){for(BeanInterface bean:list){System.out.println(bean.getClass().getName());//getClass().getName()是用来返回Class对象所代表的具体对象的名称。}}else{System.out.println("List<BeanInterface> list is null");}}}
package com.imooc.test.beanannotation;import org.junit.Test;
import org.junit.runner.RunWith;
import org.junit.runners.BlockJUnit4ClassRunner;import com.imooc.ioc.injection.service.InjectionService;
import com.imooc.ioc.interfaces.UnitTestBase;@RunWith(BlockJUnit4ClassRunner.class)
public class TestBeanAnnotation extends UnitTestBase{public TestBeanAnnotation(){super("classpath*:spring-beanannotation.xml");}@Testpublic void testAutowired(){InjectionService service=super.getBean("injectionServiceImpl");service.save("This is autowired.");}
}
package com.imooc.test.beanannotation;import org.junit.Test;
import org.junit.runner.RunWith;
import org.junit.runners.BlockJUnit4ClassRunner;import com.imooc.beanannotation.multibean.BeanInvoker;
import com.imooc.ioc.injection.service.InjectionService;
import com.imooc.ioc.interfaces.UnitTestBase;@RunWith(BlockJUnit4ClassRunner.class)
public class TestInjection extends UnitTestBase {public TestInjection(){super("classpath*:spring-beanannotation.xml");}@Testpublic void testAutowired(){InjectionService service=super.getBean("injectionServiceImpl");service.save("This is autowired");}@Testpublic void testMutiBean(){BeanInvoker invoker=super.getBean("beanInvoker");invoker.say();}
}

运行结果:

说明:Autowired注解能够完成把BeanInterface的两个实现类注解到list当中去

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 {@Autowiredprivate List<BeanInterface> list;@Autowiredprivate 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<BeanInterface> list is null");}System.out.println();if(null!=map&&0!=map.size()){System.out.println("map.");for(Map.Entry<String,BeanInterface> entry:map.entrySet()){System.out.println(entry.getKey()+"   "+entry.getValue().getClass().getName());}}else{System.out.println("Map<String,BeanInterface> is null");}}}

运行结果:

使用注解来实现:

package com.imooc.beanannotation.multibean;import org.springframework.core.annotation.Order;
import org.springframework.stereotype.Component;@Order(2)
@Component
public class BeanImplOne implements BeanInterface {}
package com.imooc.beanannotation.multibean;import org.springframework.core.annotation.Order;
import org.springframework.stereotype.Component;@Order(1)
@Component
public class BeanImplTwo implements BeanInterface {}

运行结果:

说明:Order方法只针对于数组也就是list类型有效,对map无效(根据key来取值)。

区别:List是把bean的对象放进来;Map是把bean的id及bean的name和bean的实例一起放进来。

观看慕课moocer老师视频Spring Bean装配之Autowire注解说明-2相关推荐

  1. 观看慕课moocer老师视频Spring Bean装配之Autowire注解说明-7

    基于泛型自动装配: package com.imooc.beanannotation.javabased;import org.springframework.beans.factory.annota ...

  2. 观看慕课moocer老师视频Spring Bean装配之Autowire注解说明-6

    默认@Bean是单例的,使用@Scope指定它的范围: package com.imooc.beanannotation.javabased;//import org.springframework. ...

  3. 观看慕课moocer老师视频Spring Bean装配之Autowire注解说明-5

    使用@ImportResource和@Value注解进行资源文件读取 package com.imooc.beanannotation.javabased;import org.springframe ...

  4. 观看慕课moocer老师视频Spring Bean装配之Autowire注解说明-3

    @Qualifier @Qualifier可缩小注解范围,也可指定唯一的bean. package com.imooc.beanannotation.multibean;import java.uti ...

  5. 观看慕课moocer老师视频Spring Bean装配之Autowire注解说明-8

    注解在set方法上: package com.imooc.beanannotation.jsr;import javax.annotation.Resource;import org.springfr ...

  6. 观看慕课moocer老师视频Spring Bean装配之Autowire注解说明-1

    @Autowired(放在成员变量上) package com.imooc.test.beanannotation;import org.junit.Test; import org.junit.ru ...

  7. 观看慕课moocer老师视频配置切面aspcet及配置切入点Pointcut

    配置切面: <?xml version="1.0" encoding="UTF-8"?> <beans xmlns="http:// ...

  8. 观看慕课moocer老师视频AOP基本概念及特点

  9. Spring Bean装配(上)

    Bean:在spring的IOC里面,把配置到IOC容器里面的实体或者是对象都称为Bean Bean配置项 Bean的作用域 Bean的生命周期 Bean的自动装配 Resources&Res ...

最新文章

  1. 快排,归并和Shell排序
  2. Codeforces Round #355 (Div. 2) D. Vanya and Treasure dp+分块
  3. cv::Mat 与 float 互换,实现 argmax 得到像素点分类
  4. Angular使用总结 --- 如何正确的操作DOM
  5. 一篇文章带你快速入门JavaScript(实操代码)
  6. Ubuntu 出现apt-get: Package has no installation cand
  7. ORACLE表空间使用量查询SQL
  8. 康众平板探测器_2020-2025年数字化X线探测器行业市场深度调研及投资前景预测分析报告 数字化设备成为市场主流...
  9. Django之中间件,csrf跨站伪造请求,auth认证模块
  10. Android 匿名共享内存Java接口分析
  11. Lightroom Classic mac版怎样创建全景图和HDR全景图?
  12. 4月18日会议总结(整理—祁子梁)
  13. 内存溢出真实案例分析
  14. 电源大师课笔记 1.1
  15. STC51入门笔记(郭天祥C语言)---第九节:常见芯片和运放电路介绍
  16. 飞信2009_飞信真因为微信消亡吗?谣言!教你看透本质把握个人未来发展方向...
  17. 74LS148 编码器 【数字电路】
  18. 滤波电容的大小的选取
  19. 堆排序-以小根堆为例
  20. Coarse-Grain Fine-Grain Coattention Network for Multi-Evidence Question Answering

热门文章

  1. 梅花LOGO - 梅花标志 - 梅花商标 - 设计和创意欣赏
  2. poj 1703 罪犯的帮派
  3. 对接多个短信平台,该如何快速完成
  4. python列出所有文件名_python 列出文件目录下的文件名
  5. 修改apache2.config里的 AllowOverride All ,也已经把 .htaccess文件放入网站目录下 ,但无法访问网站(500错误,提示为服务器问题)
  6. MongoDB运行状态、性能监控与分析
  7. 【win11】【wsl】使用踩坑记录
  8. 【js JavaScript 】js string 转 int 注意的问题小结 Number()和parseInt()区别
  9. 视频特效编辑软件After Effects 2022 for Mac(ae 2022) v22.6.0中文版
  10. win11打不开应用程序(没有任何反应)