第4部分 Spring
第6章 初识Spring框架
01.Spring介绍
Spring框架优点
1.非侵入式设计
2.降低耦合性
3.支持AOP编程
4.支持声明式事务
5.方便程序的测试
6.方便集成框架
7.降低JavaEE API的使用难度
Spring 5框架组成模块
主要有七大模块,每个大模块由多个或1个小模块组成
spring的四个核心包对应Core Container里面的四个模块
Spring 5 新特性
1.更新JDK基线
2.修订核心框架
3.更新核心容器
4.支持响应式编程
5.支持函数式Web框架
6.支持Kotlin
7.提升测试功能
02.Spring的入门程序
略
03.控制反转与依赖注入
控制反转——降低程序代码之间的耦合度
依赖注入——由IoC容器在运行期间动态地将某中依赖资源注入对象中
基本思想是:明确地定义组件接口,独立开发各个组件,然后根据组件的依赖关系组装运行
依赖注入的实现方式
1.构造方法注入
例如
2.属性setter方法注入
依赖注入的应用
第7章 Spring中的Bean的管理
01.Spring IoC容器
BeanFactory接口的常用方法
BeanFactory接口实例的语法格式
最常用的是XmlBeanFactory,可以读取XML文件并根据XML文件中的配置信息生成BeanFactory接口实例,BeanFactory接口的实例用于管理Bean。XmlBeanFactory类读取XML文件生成BeanFactory接口实例的具体语法格式如下:
ApplicationContext接口
常用实现类
02.Bean的配置
Spring容器所支持的配置文件格式
XML(最常用)和Properties两种格式的配置文件。
在Spring中,XML配置文件的根本元素是<beans>,<beans>元素包含<bean>子元素,每个<bean>子元素可以定义一个Bean,通过<bean>元素将Bean注册到Spring容器中。
<bean>元素的常用属性
<bean>元素的常用子元素
例:
03.Bean的实例化
04.Bean的作用域
05.Bean的装配方式
基于XML的装配方式
1.属性setter方法注入
要求
1)Bean类必须提供一个默认的无参构造方法
2)Bean类必须为需要注入的属性提供对应的setter方法
2.构造方法注入
要求
1)配置文件里,需要使用<bean>元素的子元素<constructor-arg>来定义构造方法的参数
基于注解的装配
常用注解
XML与注解装配的比较
在Spring中,使用XML配置文件可以实现Bean的装配工作,但在实际开发中,如果Bean的数量较多,会导致XML配置文件过于臃肿,给后期维护和升级带来一定的困难。为解决此问题,Spring提供了注解,通过注解也可以实现Bean的装配。
自动装配
Spring的<bean>元素中包含一个autowire属性,可以通过设置autowire属性的值实现Bean的自动装配
autowire属性的值
@Autowired原理:
举例:@Autowired
private BookService bookService;
1)、先按照类型去容器中找到对应的组件;bookService = ioc.getBean(BookService.class)
①、找到一个:找到就赋值
②、没找到就报异常
③、按照类型可以找到多个?找到多个如何装配上?
a、类型一样就按照变量名为ID继续匹配
Ⅰ、匹配上就装配
Ⅱ、没有匹配?报错
原因:因为我们按照变量名作为id继续匹配的
使用@Qualifier指定一个新的id
找到就匹配
参考:★spring@Autowired注解原理,通俗易懂(笔记)
06.Bean的生命周期
Bean的生命周期是指Bean实例被创建、初始化和销毁的过程。
singleton(单例模式)
Spring容器可以管理Bean的生命周期,控制着Bean的创建、初始化和销毁。
prototype(原型模式)
Spring容器只负责创建Bean实例,不会管理其生命周期。
重要时间节点
1.Bean实例初始化后
2.Bean实例销毁前
监控时间节点的方式
1.使用XML配置文件
2.使用注解
第8章 Spring AOP
01.Spring AOP介绍
AOP——面向切面编程
AOP术语
切面(Aspect)
连接点(Joinpoint)
切入点(Pointcut)
通知/增强处理(Advice)
目标对象(Target)
织入(Weaving)
代理(Proxy)
02.Spring AOP的实现机制
Spring AOP的默认代理方式
默认情况下,Spring AOP使用JDK动态代理,JDK动态代理是通过java.lang,reflect.Proxy类代理的,可以调用Proxy类的newProxyInstance()方法创建代理对象。JDK动态代理可以实现无侵入式的代码扩展,并且可以在不修改源代码的情况下,增强某些方法。
03.基于XML的AOP实现
配置切面
<aop:aspect>元素的id属性和ref属性的描述
配置切入点
<aop:pointcut>元素的id属性和expression属性描述
切入点表达式的基本格式
配置通知
<aop:aspect>
1.前置通知
2.后置通知
3.环绕通知
4.返回通知
5.异常通知
<aop:aspect>元素的常用属性
例如:
04.基于注解的AOP实现
Spring AOP的注解
例如
第9章 Spring的数据库编程
01.Spring JDBC
针对数据库操作,Spring框架提供了JdbcTemplate类,JdbcTemplate是一个模板类,Spring JDBC中的更高层次的抽象类均在JdbcTemplate模板类的基础上创建。
JdbcTemplate类提供了一些访问数据库时使用的公共属性
1.DataSource:获取数据库连接,提供对数据库连接的缓冲池和分布式事务的支持
2.SQLExceptionTranslator:负责对SQLException异常进行转译工作
使用步骤
1.配置数据源,包括数据库驱动、连接数据库url、连接数据库用户名、连接数据库密码
dataSource配置的4个属性
2.配置JDBC模板,必须使用默认的数据源
3.配置注入类
02.JdbcTemplate的增删改查操作
excute()方法
1.编写配置文件:配置数据源Bean和JDBC模板Bean,并将数据源注入到JDBC模板中
2.编写测试类
update()
常用方法
query()
常用方法
03.Spring事务管理概述
TransactionDefinition接口定义了事务描述相关的常量
事务管理方式:
1.编程式事务管理:通过编写代码实现的事务管理,包括定义事务的开始、正常执行后的事务提交和异常时的事务回滚。
2.声明式事务管理:通过AOP技术实现的事务管理,其主要思想是将事务管理作为一个“切面”代码单独编写,然后通过AOP技术将事务管理的“切面”代码植入到业务目标类中。
04.声明式事务管理
基于XML方式的声明式事务
首先引入tx命名空间,在引入tx命名空间之后,可以使用<tx:advice>元素来配置事务管理的通知,进而通过Spring AOP实现事务管理。
<tx:methid>元素的常用属性
例如: