来自大佬的Spring实操与讲解盛宴
前言
Spring 是我们常用的后端框架之一,这不,最近小编身边的大佬浩哥给咱讲了一课Spring核心总结,俺在此将课件复刻一遍,当作笔记,分享,学习。
核心
Spring 的核心:IOC 控制反转, DI 依赖注入 和 AOP切面
作用:代码解耦
1. IOC
IOC:控制反转,获取对象的方式从自身的new/getInstance变成spring容器使用类构造器,使用静态工厂方法,使用实例工厂方法来创建对象,然后提供给我们的程序使用。
实现步骤:
(1)添加依赖
(2)创建application.xml文件
(3)在.xml文件中使用标签来创建bean对象
注意:标签中给该bean对象中的属性设置值的时候,如果该属性是引用类 型,则ref执行的是一个另外一个bean对象的id属性值, 如上图就指向的是id为BookDao的bean对象(映射关系)
(4)代码中如果需要设置该bean的属性的属性值,则需要提供一个setter方法:
(5)测试
注意:在获取IOC容器对象的时候除了ClassPathXmlApplicationContext(.xml文件名)方法 外,还可以通过下面方式,但是通常用的是第一种方式
同时:在获取容器中创建的对象除了IOC对象.getBean(.xml文件中标签的id属性 值)之外,还可以通过IOC对象.getBean(要创建bean对象的类.class)
2. DI
DI:依赖注入,Java Bean对象的Set方法或者带参数的构造方法为我们在创建所需对象时将其属性自动设置所需要的值的过程。
依赖注入的方式:
(1)使用有参构造器注入,
(2)使用setter方法注入
(3)使用Field字段注入方式,该方式是spring2.5以后提供的基于java 注解 (annotation)方式的注入,就是在java中的字段上或者setter方法上通过使用注解方式进行spring的依赖注入
实现步骤:
(1)有参构造器注入
注意:如果bean对象中的属性名称与中的name的属性值不对应,就会报错,所以使用有参构造注入的耦合比较高,一般我们不会使用此方式进行依赖注入,这是引用类型的依赖注入,下面的截图是基本类型的依赖注入的方式
(2)使用java bean 对象的setter方法进行依赖注入
注意:这是引用类型的setter依赖注入,如果是基本类型,这只需要将标签中的ref改为value即可
如果是对集合list,数组array,集合set注入值,可以通过下面方式进行依赖注入,只需要将标签中的换成或者即可
如果是对map进行依赖注入,则参照下图
(3)使用Field字段注入,在后面的注解会指明
导入spring的坐标依赖:
创建application.xml文件并配置:
在bean对象的类上添加注解@service,@controller,@repository,@Component,注意前面三个注解都是@component注解的衍生注解,是为了区别每个类
测试:
纯注解开发定义bean,可以将注解开发定义bean中的第二步,第三步通过如下步骤进行替代
纯注解bean的生命周期
总结:.xml与注解开发的区别:
3. AOP
Aop的作用:在不修改原代码的情况增强功能
Aop核心概念:
1.连接点:所有的方法叫连接点
2.切入点:被追加功能的方法,就叫切入点
3.通知:实现追加共性功能的方法
4.切面:切入点与通知的连接的关系,叫切面
5.通知类:存放追加共性功能的方法的类
实现步骤:
导入aspect的坐标依赖:
创建aop包并创建通知类
在springConfig类上添加@EnableAspectJAutoProxy注解:
测试: