目录
一、使用注解开发
1.1 主要注解
1.2 衍生注解
1.3 xml与注解
二、使用Java的方式配置Spring
三、代理模式
3.1 静态代理
3.1.1 角色分析
3.1.2 代码步骤
3.1.3 优点
3.1.4 缺点
3.2 动态代理
3.2.1 代码步骤
四、AOP
4.1 使用Spring的API接口
4.2 使用自定义类来实现
4.3 使用注解实现
五、整合Mybatis
5.1 步骤
5.2 mybatis-spring
六、事务
6.1 事务ACID原则
6.2 Spring中的事务管理
6.2.1 声明式事务实现步骤
一、使用注解开发
1.1 主要注解
@Component:组件,放在类上,说明这个类被Spring管理了,就是bean
@Value:配置属性值
@Scope:设置作用域
1.2 衍生注解
@Component有几个衍生注解,在web开发中,会按照mvc三层架构分层!
- Dao【@Repository】
- Service【@Service】
- Controller【@Controller】
这四个注解功能是一样的,都是代表将某个类注册到Spring中,装配bean
1.3 xml与注解
- xml更加万能,适用于任何场合!
- 注解不是自己的类使用不了,维护相对复杂!
- xml与注解最佳实践:xml用来管理bean,注解只负责完成属性的注入
二、使用Java的方式配置Spring
我们现在要完全不使用Spring的xml配置了,全权交给Java来做!
@Configuration:代表这是一个配置类,作用等同于beans.xml
三、代理模式
3.1 静态代理
3.1.1 角色分析
- 抽象角色:一般会使用接口或抽象类来解决
- 真实角色:被代理的角色
- 代理角色:代理真实角色,代理真实角色后,我们一般会做一些附属操作
- 客户:访问代理对象的人
3.1.2 代码步骤
1、接口
2、真实角色
3、代理角色
4、客户端访问代理角色
3.1.3 优点
- 可以使真实角色的操作更加纯粹!不用去关注一些公共的业务
- 公共业务就交给代理角色!实现了业务的分工!
- 公共业务发生扩展的时候,方便集中管理!
3.1.4 缺点
- 一个真实角色就会产生一个代理对象,代码量会翻倍,开发效率变低
3.2 动态代理
- 动态代理和静态代理角色一样
- 动态代理类是动态生成的,不是我们直接写好的
- 动态代理分为两大类:基于接口的动态代理,基于类的动态代理
- 基于接口:JDK动态代理
- 基于类:cglib
3.2.1 代码步骤
1、接口
2、真实对象
3、 InvocationHandler(自动生成代理类)
4、客户端访问
四、AOP
使用AOP织入,需要导入一个依赖包
有三种方式实现AOP织入
4.1 使用Spring的API接口
4.2 使用自定义类来实现
主要是切面定义
4.3 使用注解实现
五、整合Mybatis
5.1 步骤
1、导入相关jar包
- Junit
- Mybatis
- Mysql
- Spring相关
- aop织入
- Mybatis-spring【新知识点】
2、编写配置文件
3、测试
简单回顾mybatis
1、编写实体类
2、编写核心配置文件
3、编写接口(Mapper)
4、编写Mapper.xml
5、测试
5.2 mybatis-spring
1、编写数据源配置
2、sqlSessionFactory【方式一】
3、sqlSessionTemplate【方式二】
4、给接口加实现类
【方式一】sqlSessionFactory
【方式二】 sqlSessionTemplate
5、将写的实现类注入给Spring
6、测试
六、事务
- 把一组业务当做一个业务来做,要么都成功,要么都失败
- 确保数据的完整性和一致性
6.1 事务ACID原则
- 原子性
- 一致性
- 隔离性
- 持久性
6.2 Spring中的事务管理
- 声明式事务:AOP
- 编程式事务:需要在代码中进行事务的管理(不推荐)
6.2.1 声明式事务实现步骤
1、配置声明式事务
2、 配置事务通知,给哪些方法配置事务 ; 配置事务的传播特性:propagation
3、结合AOP实现事务的织入