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

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

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

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

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



dao:

service:

controller:

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

测试:

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

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

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

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

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



看这个实验之前可以先看实验17

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

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



果然不在ioc容器中了。

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



dao:

service:

controller:

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

测试:

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

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

实验[email protected]注解的required属性指定某个属性允许不被设置

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



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

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

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

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

报错!!!

那改成false呢?

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

最终总结:

我们看一下Autowired的源码

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

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

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

原文地址:https://www.cnblogs.com/maintest/p/12193440.html

时间: 2024-11-13 10:49:10

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

Spring源码阅读:IOC容器的设计与实现(二)——ApplicationContext

上一主题中,了解了IOC容器的基本概念,以及BeanFactory的设计与实现方式,这里就来了解一下ApplicationContext方式的实现. ApplicationContext 在Spring的参考文档中,为啥要推荐使用ApplicationContext?它能给我们的应用带来什么好处呢?作为BeanFactory的实现之一,它又是如何设计的?在SpringMVC中使用的WebApplictionContext\XmlApplicationContext与之有何关联? Applicat

【SSH进阶之路】一步步重构容器实现Spring框架——配置文件+反射实现IoC容器(十)

目录 [SSH进阶之路]一步步重构容器实现Spring框架--从一个简单的容器开始(八) [SSH进阶之路]一步步重构容器实现Spring框架--解决容器对组件的"侵入式"管理的两种方案--主动查找和控制反转(九) [SSH进阶之路]一步步重构容器实现Spring框架--配置文件+反射实现IoC容器(十) [SSH进阶之路]一步步重构容器实现Spring框架--彻底封装,实现简单灵活的Spring框架(十一)(未更新) 上上篇博文[SSH进阶之路]一步步重构容器实现Spring框架--

spring IOC/DI容器的理解

参与者:应用程序和spring正向:现在的程序方向,A对象要使用B对象,现在是A里面直接创建B的实例,然后调用.publc class A{ void t1(){ new B().t2();  }}public class B{void t2(); 简而言之,就是程序需要什么.就由程序主动去获取需要的资源,这个方向就是正向.容器是用来创建和装配对象,并管理对象生命周期的.对于应用程序而言,就是被动实例化和被动接受依赖了.装配:在spring容器内拼凑bean叫作装配.装配bean的时候,你是在告

获取spring的IOC核心容器,并根据id获取对象

public class Client { /** * 获取spring的IOC核心容器,并根据id获取对象 * ApplicationContext的三个常用实现类 * classPathXmlApplicationContext: 它可以加载路径下的配置文件,要求配置文件必须在类路径下.不在的话加载不了 * FileSystemXmlApplicationContext: 它可以加载磁盘任意路径下的配置文件件(必须有访问权限) * AnnotationConfigApplicationCon

【spring源码分析】IOC容器初始化(总结)

前言:在经过前面十二篇文章的分析,对bean的加载流程大致梳理清楚了.因为内容过多,因此需要进行一个小总结. 经过前面十二篇文章的漫长分析,终于将xml配置文件中的bean,转换成我们实际所需要的真正的bean对象. 总结 [spring源码分析]IOC容器初始化(一):主要分析了Spring是如何解析占位符以及BeanFactory的最终实现类DefaultListableBeanFactory. [spring源码分析]IOC容器初始化(二):以loadBeanDefinitions函数为切

Spring思维导图(IOC篇)

写在前面 写过java的都知道:所有的对象都必须创建:或者说:使用对象之前必须先创建.而使用ioc之后,你就可以不再手动创建对象,而是从ioc容器中直接获取对象. 就好像我们无需考虑对象的销毁回收一样,因为java垃圾回收机制帮助我们实现了这个过程:而ioc则是让我们无需考虑对象的创建过程,由ioc容器帮我们实现对象的创建.注入等过程. Spring知识细节.png 控制反转 Spring ioc简介.png spring ioc容器 在Spring框架中的核心组件只有三个:Core.Conte

Spring学习(2)---IOC

1.接口及面向接口编程 2.什么是IOC 3.Spring的Bean配置 4.Bean的初始化 5.Spring的常用注入方式 (一)接口 用于沟通的中介物的抽象化 实体把自己提供给我外接的一种抽象化说明,用以由内部操作分离出外部沟通方式,使其被修改内部而不应现外接其他实体与其交互的方式 对应java接口即声明,生命了哪些方法是对外公开提供的 在Java8中,接口可以拥有方法体(在某种意义上,接口与抽象类具有相同的功能) (二)面向接口编程 结构设计中,分清层次及调用关系,每层只向外(上层)提供

[Spring框架]Spring IOC的原理及详解。

这里感谢 CSDN 的原博客:http://blog.csdn.net/m13666368773/article/details/7802126 看后  受益匪浅,这里再重温一遍Spring IOC 1. IoC理论的背景我们都知道,在采用面向对象方法设计的软件系统中,它的底层实现都是由N个对象组成的,所有的对象通过彼此的合作,最终实现系统的业务逻辑. 图1:软件系统中耦合的对象 如果我们打开机械式手表的后盖,就会看到与上面类似的情形,各个齿轮分别带动时针.分针和秒针顺时针旋转,从而在表盘上产生

Spring源码阅读:IOC容器之BeanFactory

Spring IOC容器系列的设计与实现 命名解释 容器:这里说的容器不是Java中的集合容器,也不是Web程序运行的环境.而是一组API组成的框架. IOC:控制反转.控制是对Bean的创建的控制,反转从程序员手写创建Bean转为由容器来创建.IOC又名DI(依赖注入),说明了Spring中IOC的容器处理Bean创建主要集中与依赖的注入.因此还可以叫IOC为依赖反转,就是把bean的创建和依赖的注入的工作交给了容器. DIP(依赖倒置原则):这是设计模式中的一条很重要的设计原则.所谓依赖倒置