观看慕课moocer老师视频Spring Bean装配之Autowire注解说明-2
数组及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相关推荐
- 观看慕课moocer老师视频Spring Bean装配之Autowire注解说明-7
基于泛型自动装配: package com.imooc.beanannotation.javabased;import org.springframework.beans.factory.annota ...
- 观看慕课moocer老师视频Spring Bean装配之Autowire注解说明-6
默认@Bean是单例的,使用@Scope指定它的范围: package com.imooc.beanannotation.javabased;//import org.springframework. ...
- 观看慕课moocer老师视频Spring Bean装配之Autowire注解说明-5
使用@ImportResource和@Value注解进行资源文件读取 package com.imooc.beanannotation.javabased;import org.springframe ...
- 观看慕课moocer老师视频Spring Bean装配之Autowire注解说明-3
@Qualifier @Qualifier可缩小注解范围,也可指定唯一的bean. package com.imooc.beanannotation.multibean;import java.uti ...
- 观看慕课moocer老师视频Spring Bean装配之Autowire注解说明-8
注解在set方法上: package com.imooc.beanannotation.jsr;import javax.annotation.Resource;import org.springfr ...
- 观看慕课moocer老师视频Spring Bean装配之Autowire注解说明-1
@Autowired(放在成员变量上) package com.imooc.test.beanannotation;import org.junit.Test; import org.junit.ru ...
- 观看慕课moocer老师视频配置切面aspcet及配置切入点Pointcut
配置切面: <?xml version="1.0" encoding="UTF-8"?> <beans xmlns="http:// ...
- 观看慕课moocer老师视频AOP基本概念及特点
- Spring Bean装配(上)
Bean:在spring的IOC里面,把配置到IOC容器里面的实体或者是对象都称为Bean Bean配置项 Bean的作用域 Bean的生命周期 Bean的自动装配 Resources&Res ...
最新文章
- 快排,归并和Shell排序
- Codeforces Round #355 (Div. 2) D. Vanya and Treasure dp+分块
- cv::Mat 与 float 互换,实现 argmax 得到像素点分类
- Angular使用总结 --- 如何正确的操作DOM
- 一篇文章带你快速入门JavaScript(实操代码)
- Ubuntu 出现apt-get: Package has no installation cand
- ORACLE表空间使用量查询SQL
- 康众平板探测器_2020-2025年数字化X线探测器行业市场深度调研及投资前景预测分析报告 数字化设备成为市场主流...
- Django之中间件,csrf跨站伪造请求,auth认证模块
- Android 匿名共享内存Java接口分析
- Lightroom Classic mac版怎样创建全景图和HDR全景图?
- 4月18日会议总结(整理—祁子梁)
- 内存溢出真实案例分析
- 电源大师课笔记 1.1
- STC51入门笔记(郭天祥C语言)---第九节:常见芯片和运放电路介绍
- 飞信2009_飞信真因为微信消亡吗?谣言!教你看透本质把握个人未来发展方向...
- 74LS148 编码器 【数字电路】
- 滤波电容的大小的选取
- 堆排序-以小根堆为例
- Coarse-Grain Fine-Grain Coattention Network for Multi-Evidence Question Answering
热门文章
- 梅花LOGO - 梅花标志 - 梅花商标 - 设计和创意欣赏
- poj 1703 罪犯的帮派
- 对接多个短信平台,该如何快速完成
- python列出所有文件名_python 列出文件目录下的文件名
- 修改apache2.config里的 AllowOverride All ,也已经把 .htaccess文件放入网站目录下 ,但无法访问网站(500错误,提示为服务器问题)
- MongoDB运行状态、性能监控与分析
- 【win11】【wsl】使用踩坑记录
- 【js JavaScript 】js string 转 int 注意的问题小结 Number()和parseInt()区别
- 视频特效编辑软件After Effects 2022 for Mac(ae 2022) v22.6.0中文版
- win11打不开应用程序(没有任何反应)