什么是IOC
控制反转,把对象的创建和对象之间的调用过程,交给Spring管理使用IOC的目的:降低耦合度常用的Component及Autowired等注解其实就是IOC的注解实现方式。IOC基于IOC容器完成,实质上就是对象工厂(对象容器)。
底层原理:
xml解析、工厂模式、反射
IOC容器的两种实现方法(两个接口):
BeanFactory:IOC容器基本实现,是Spring内部的使用接口,不提供给开发人员使用,加载配置文件时不会创建对象,在获取对象(使用)采取创建对象。ApplicationContext:BeanFactory接口的子接口,提供更多更强大的功能,一般由开发人员进行使用,加载配置文件时就会把在配置文件对象进行创建。
IOC管理Bean
1.什么是Bean管理
2.Bean管理操作的两种方法
基于xml配置文件:set注入、构造方法注入、注解注入基于注解:Component,Controller,service,autowired
3. Bean的作用域:
在spring中,设置创建bean实例是单实例还是多实例默认创建的是多实例通过scope注解设置: 1. singletion表示单实例,在加载配置文件时创建单例对象 2. prototype表示多实例,在加载时不创建,在每次调用时创建对象 3. request:一次请求 4. session:一次会话
4. Bean生命周期
生命周期:从对象创建到销毁的过程。 xml配置:
通过构造器创建bean实例(无参构造)为bean的属性设置值和对其他bean引用(调用set方法)调用bean的初始化方法(需要进行配置初始化的方法)bean可以使用了(对象获取到了)当容器关闭时,调用bean的销毁方法(需要进行配置销毁的方法)
注解方式:项目启动时,扫描指定包下包含Component及其相关注解的类,创建对象;项目关闭时销毁
5.注解创建Bean对象
在xml文件中配置包扫描
ComponentServiceControllerRepository
上面四个注解功能相同
6.基于注解实现属性注入
Autowired:根据属性类型进行自动装配Qualifier:根据属性名称进行注入,如果一个接口有多个实现类,可以通过此方法指定名称进行注入,需要配合Autowired一起使用Resource:可以根据属性名称,也可以根据属性类型。根据属性注入和Autowired一样使用,根据名称注入使用name指定注入名称。value:普通属性注入,上面三个都是对象属性注入。
7.完全注解开发
AOP
1.概念
面向切面编程,利用AOP可以对业务逻辑的各个部分进行隔离,从而使得业务逻辑各部分之间的耦合度降低,提高程序的可重用性,同时提高了开发的效率。通俗描述:不通过修改源代码方式,在主干功能里添加新功能。
2.实现方式
使用动态代理方式。 分为两种情况:
实现了接口:使用JDK动态代理,创建接口实现类实现没有实现接口:使用Cglib代理,创建类的子类实现
参考动态代理
3.AOP术语
连接点:类里面哪些方法可以被增强,这些方法称为连接点切入点:实际被增强的方法,称为切入点增强(通知):实际增强的逻辑的部分,包括前置通知、后置通知、环绕通知、异常通知、最终通知切面:把通知应用到切入点的过程
4.切入点表达式:
5.有多个增强类对同一个方法进行增强,设置增强类的优先级
在增强类上添加Order(数字类型)注解,数字越小优先级越高
事务
事务操作(声明式事务管理参数配置)
在service类或方法上添加Transactional注解,在这个注解上可以配置事务相关参数
propagation:事务传播行为(一个有事务方法 调用另一个有事务或者没事务的方法)
ioslation:事务隔离级别
事务有特性称为隔离性,多十五操作之间不会产生影响,不考虑隔离性产生很多问题:脏读、不可重复读、虚(幻)读脏读:一个事务读取到另一个未提交事务的数据不可重复度:一个未提交事务读取到另一提交事务修改数据虚读:一个未提交事务读取到另一提交事务添加数据事务隔离级别
timeout:超时时间:事务在一定时间内进行提交,如果没有提交就会回滚,默认-1不超时
readOnly:是否只读
读:查询,写:增删改默认false,即可读可写
rollbackFor:回滚
设置出现哪些异常进行事务回滚
noRollbackFor:不回滚
设置哪些异常不进行事务回滚