动力节点Spring框架学习笔记-王鹤(一)IOC控制反转
Spring框架学习笔记
笔记下载:动力节点官网
视频观看地址
一、IOC控制反转
1.1 概述
控制反转(IoC,Inversion of Control),是一个概念,是一种思想。指将传统上由程序代码直接操控的对象调用权交给容器,通过容器来实现对象的装配和管理。控制反转就是对对象控制权的转移,从程序代码本身反转到了外部容器。通过容器实现对象的创建,属性赋值,依赖的管理
IoC 是一个概念,是一种思想,其实现方式多种多样。当前是依赖注入。应用广泛
依赖:classA 类中含有 classB 的实例,在 classA 中调用 classB 的方法完成功能,即 classA
对 classB 有依赖。
1.2 IOC的实现
依赖注入:DI(Dependency Injection),程序代码不做定位查询,这些工作由容器自行完成。
依赖注入 DI 是指程序运行过程中,若需要调用另一个对象协助时,无须在代码中创建
被调用者,而是依赖于外部容器,由外部容器创建后传递给程序。
Spring 的依赖注入对调用者与被调用者几乎没有任何要求,完全支持对象之间依赖关系
的管理。
Spring 容器是一个大工厂,负责创建、管理所有的 Java 对象,这些 Java 对象被称为 Bean。
Spring 容器管理着容器中 Bean 之间的依赖关系,Spring 使用“依赖注入”的方式来管理 Bean 之间的依赖关系。使用 IoC 实现对象之间的解耦和。
1.3 关于bean标签
bean标签的配置
测试类(1)使用
测试类(2)使用
1.4 基于XML的DI
1.4.1 set注入(重点)
set 注入也叫设值注入是指,通过 setter 方法传入被调用者的实例。这种注入方式简单、直观,因而在 Spring 的依赖注入中大量使用。
1.4.2 构造注入
构造注入是指,在构造调用者实例的同时,完成被调用者的实例化。即使用构造器设置依赖关系。
1.4.3 引用类型自动注入
byName(按名称注入)
java类中引用类型的属性名和spring容器中(配置文件)<bean>的id名称一样,且数据类型是一致的,这样的容器中的bean,spring能够赋值给引用类型。
byType(按类型注入)
java类中引用类型的数据类型和spring容器中(配置文件)的class属性是同源关系的,这样的bean能够赋值给引用类型
1.4.4 具有关联关系的配置
School类的配置文件
total配置文件
1.5 基于注解的DI
注解配置的约束文件
实体类
测试类中调用
1.5.1 使用注解的步骤
1. 加入maven的依赖 spring-context,在你加入spring-context的同时, 间接加入spring-aop的依赖。使用注解必须使用spring-aop依赖
2. 在类中加入spring的注解(多个不同功能的注解)
3. 在spring的配置文件中,加入一个component-scan组件扫描器的标签,说明注解在你的项目中的位置
1.5.2 多注解项目分层
1. @Component: 创建对象的, 等同于<bean>的功能
属性:value 就是对象的名称,也就是bean的id值,value的值是唯一的,创建的对象在整个spring容器中就一个
2. @Repository(用在持久层类的上面) : 放在dao的实现类上面,表示创建dao对象,dao对象是能访问数据库的。
3. @Service(用在业务层类的上面):放在service的实现类上面,创建service对象,service对象是做业务处理,可以有事务等功能的。
4. @Controller(用在控制器的上面):放在控制器(处理器)类的上面,创建控制器对象的,控制器对象,能够接受用户提交的参数,显示请求的处理结果
以上三个注解的使用语法和@Component一样的。 都能创建对象,但是这三个注解还有额外的功能。
1.5.3 简单类型的赋值
@Value: 简单类型的属性赋值
属性: value 是String类型的,表示简单类型的属性值
使用位置:1.在属性定义的上面,无需set方法,推荐使用。
2.在set方法的上面
配置文件
properties文件
1.5.4 引用类型的赋值
默认方式
1.@Autowired: spring框架提供的注解,实现引用类型的赋值
2.spring中通过注解给引用类型赋值,使用的是自动注入原理 ,支持byName, byType
3.@Autowired:默认使用的是byType自动注入
4.使用位置:
在属性上面使用
在set方法上面使用
通过名称赋值
如果要使用byName方式:
在属性上面加入@Autowired
属性上面加入@Qualifier(value="bean的id") :表示使用指定名称的bean完成赋值在
1.5.5 Autowired的required属性
- required :是一个boolean类型的,默认true
- required=true:表示引用类型赋值失败,程序报错,并终止执行
- required=false:引用类型如果赋值失败, 程序正常执行,引用类型是null
1.5.6 JDK注解@Resource自动注入
1.@Resource: 来自jdk中的注解,spring框架提供了对这个注解的功能支持,可以使用它给引用类型赋值
2.使用的也是自动注入原理,支持byName,byType默认是byName
3.使用位置:
- 在属性定义的上面,无需set方法,推荐使用
- 在set方法的上面
4.默认是byName:先使用byName自动注入,如果byName赋值失败,再使用byType
5.@Resource只使用byName方式,需要增加一个属性 name,name的值是bean的id(名称)
指定name
默认配置

浙公网安备 33010602011771号