Spring5学习笔记
Spring是一个轻量级的控制反转(IOC)和面向切面编程(AOP)的框架!
一、控制反转loC
控制反转loC(Inversion of Control)是一种设计思想,DI(依赖注入)是实现loC的一种方法。
- 之前,程序是主动创建对象!控制权在程序猿手上!
- 使用了set注入后,程序不再具有主动性,而是变成了被动的接受对象!
这种思想,从本质上解决了问题,我们程序猿不用再去管理对象的创建了。系统的耦合性大大降低,可以更加专主的在业务的实现上!这是Ioc的原型!
ps: Spring会把所有的bean(对象)创建,即使没有被使用
二、依赖注入DI
bean对象的创建依赖于Spring容器,bean对象的属性由容器注入。
2.1 构造器注入
(有参构造器)<constructor-arg />
2.2 Set注入
(set+无参构造器)
2.3 扩展方式注入
1.c命名空间(有参构造器)
2.p命名空间(set+无参构造器)
ps: IDEA会报命名空间错误,在设置中忽略即可
三、Bean的作用域 Scope
3.1 单例模式 singleton
默认,同一个对象实例user==user2
3.2 原型模式 prototype
user!=user2
3.3 其他
request、session、application、websocket在web开发中使用。
四、Bean的自动装配
4.1 byName自动装配
4.2 byType自动装配
ps:
byName的时候,需要保证所有bean的id唯一,并且这个bean需要和自动注入的属性名一致
byType的时候,需要保证所有bean的class唯一,并且这个bean需要和自动注入的属性类型一致
4.3 注解自动装配
1.导入约束
2.开启注解自动装配
@Autowired【常用】
直接在类属性上使用(不需set方法),也可以在set方法上使用 ,按类型(byType)自动匹配,有多个同类的再按名字(byName)匹配,都匹配不上可以用@Qualifier(value = "cat1")绑定bean id
@Resource
byType和byName都匹配不上可以用name属性绑定bean id
五、使用注解开发
在beans.xml中,指定要扫描的包,开启注解
@Component
六、使用Java的方式配置Spring
Config.java代替beans.xml。SpringBoot常用
七、代理模式
7.1 静态代理
1.抽象角色接口:租房
2. 被代理角色:房东 ,要出租房子
3.代理角色:中介, 要出租房子,看房,签合同等
4.客户:仅通过代理角色租房子
因此,代理角色除了租房外,还有看房、签合同等附属操作,横向切面加进去的新业务(AOP)
7.2 动态代理
了解两个类:interface InvocationHandler 和 class Proxy
八、AOP 面向切面编程
8.1 Spring实现AOP
导入依赖
-
方式一: 使用原生SpringAPI接口
增加前置后置日志:
配置AOP
测试
-
方式二: 自定义切面类实现AOP
自定义切面类
配置AOP
测试同上
-
方式三:注解实现AOP
切面类
配置AOP
测试同上
九、整合Mybatis
9.1 回顾Mybatis
1.编写实体类
2.编写核心配置文件mybatis-config.xml
3.编写接口
4.编写Mapper.xml
5.测试
9.2 Mybatis-Spring
-
方式一:使用sqlSessionTemplate
1.编写数据源配置
2. sqlSessionFactory
3.sqlSessionTemplate
4.给接口加实现类
5.将实现类注入到Spring
6.测试
-
方式二:使用SqlSessionDaoSupport
1.2.6.同上
3&4.接口实现类继承SqlSessionDaoSupport
5.将实现类注入到Spring
十、声明式事务
开启 Spring 的事务处理功能,使getUserList()方法要执行全执行,不能执行一半!
依赖
资源加载,使src/main/java下的资源可以加载进去,默认在src/main/resources













浙公网安备 33010602011771号