Spring–2.Spring之IOC–IOC容器的22个实验(3)

站长

发表文章数:4245

我是如何做到springboot自动配置原理解析

接下去的几个实验中有好几个比较重点的,所以我单独开了一篇。

还是熟悉的套路,新建一个项目来完成这些实验吧!掌握这23个实验那ioc了解的也差不多啦!好记性不如烂笔头,别光看哦,要记得敲一敲!

1.导包  2.配置  3.测试

 

实验15.通过注释分别创建Dao、Service、Controller

dao:

Spring--2.Spring之IOC--IOC容器的22个实验(3)

 

 service:

Spring--2.Spring之IOC--IOC容器的22个实验(3)

 

 controller:

Spring--2.Spring之IOC--IOC容器的22个实验(3)

 

Spring--2.Spring之IOC--IOC容器的22个实验(3)

 Spring--2.Spring之IOC--IOC容器的22个实验(3)

 

 Spring--2.Spring之IOC--IOC容器的22个实验(3)

 

 Spring--2.Spring之IOC--IOC容器的22个实验(3)

 

 s小图标说明Spring的ioc容器接管了这些类

 

测试:

Spring--2.Spring之IOC--IOC容器的22个实验(3)

 

 结果为true,验证通过注解方式与配置方式加入ioc的组件行为默认是一样。

 

那么怎么修改组件的行为呢

Spring--2.Spring之IOC--IOC容器的22个实验(3)

 

 

@Repository(“bookdaolll”)修改组件id为bookdaolll并通过@Scope(value=”prototype”)修改为多实例

 

注解只能加在自己写的类上,很多别的还是要通过<bean>。需要二者结合

 

 

 

实验16.使用context:include-filter指定扫描包时要包含的类

 看这个实验之前可以先看实验17Spring--2.Spring之IOC--IOC容器的22个实验(3)

 

 

 Spring--2.Spring之IOC--IOC容器的22个实验(3)

 

果然是这两个注解的类被扫描进ioc容器了

 

 

 

 

实验17.使用context:exclude-filter指定扫描包时不包含的类

Spring--2.Spring之IOC--IOC容器的22个实验(3)

 

 

 Spring--2.Spring之IOC--IOC容器的22个实验(3)

 

 

 果然不在ioc容器中了。

 

 

 

实验18.使用@Autowired注解实现根据类型实现自动装配*

dao:

Spring--2.Spring之IOC--IOC容器的22个实验(3)

 

 

 service:

Spring--2.Spring之IOC--IOC容器的22个实验(3)

 

 

 controller:

rabbitmq系列(二)几种常见模式的应用场景及实现

Spring--2.Spring之IOC--IOC容器的22个实验(3)

 

 

 将组建注入ioc容器才能通过@Autowired让Spring自动为这个属性赋值:

Spring--2.Spring之IOC--IOC容器的22个实验(3)

 

 

 测试:

Spring--2.Spring之IOC--IOC容器的22个实验(3)

 

 

 Spring--2.Spring之IOC--IOC容器的22个实验(3)

 

 

 

 

 

实验19.如果资源类型的bean不止一个:
            默认根据@Autiwired注解标记的成员变量名作为id查找bean,进行装配*

实验20.如果根据成员变量名作为id还是找不到bean:
             可以使用@Qualifier注解明确指定目标bean的id*

实验21.@Autiwired注解的required属性指定某个属性允许不被设置

实验22.在方法的形参位置使用@Qualifier注解

Spring--2.Spring之IOC--IOC容器的22个实验(3)

 

 

 Spring--2.Spring之IOC--IOC容器的22个实验(3) Spring--2.Spring之IOC--IOC容器的22个实验(3)

 Spring--2.Spring之IOC--IOC容器的22个实验(3)Spring--2.Spring之IOC--IOC容器的22个实验(3)

 

 

 上面说到通过变量名作为id去匹配

Spring--2.Spring之IOC--IOC容器的22个实验(3)

 

 

 如果没有匹配到 @Qualifier注解就可以指定一个新的id

Spring--2.Spring之IOC--IOC容器的22个实验(3)Spring--2.Spring之IOC--IOC容器的22个实验(3)

 

 

 但是如果@Qualifier注解就可以指定新id没有匹配上呢?

Spring--2.Spring之IOC--IOC容器的22个实验(3)

 

 

 那就可以使用@Autowired的required属性了,它默认为true,先测试默认情况下

Spring--2.Spring之IOC--IOC容器的22个实验(3)报错!!!

 

 

那改成false呢?

Spring--2.Spring之IOC--IOC容器的22个实验(3)Spring--2.Spring之IOC--IOC容器的22个实验(3)

hhhh装配上null了(终于不再是没匹配上就报错了!)

 最终总结:

Spring--2.Spring之IOC--IOC容器的22个实验(3)

 

 

 

我们看一下Autowired的源码

Spring--2.Spring之IOC--IOC容器的22个实验(3)

 

 

 发现他可以写在很多地方:构造器,属性字段,方法,注解

Spring--2.Spring之IOC--IOC容器的22个实验(3)

 

 

 测试方法什么都不用写,直接启动ioc容器

Spring--2.Spring之IOC--IOC容器的22个实验(3)

 

 

 Spring--2.Spring之IOC--IOC容器的22个实验(3)

 

 

 

既然这里讲到了@Autowired,我们就一起了解一下@Autowired与@Resource的区别吧

 Spring--2.Spring之IOC--IOC容器的22个实验(3)

图解kubernetes调度器ScheduleAlgorithm核心实现学习框架设计

未经允许不得转载:www.xssyun.com作者:站长, 转载或复制请以 超链接形式 并注明出处 xss云之家-资源网,新人技术交流平台,一个湖北娃的个人博客
原文地址:《Spring–2.Spring之IOC–IOC容器的22个实验(3)》 发布于2020-01-15

分享到:
赞(0) 生成海报

长按图片转发给朋友

投稿赚钱
2020年在家赚取零花钱
切换注册

登录

忘记密码 ?

您也可以使用第三方帐号快捷登录

Q Q 登 录
微 博 登 录
切换登录

注册