Spring IOC
即控制反转,IOC是一种思设计思想,Spring的IOC是对是IOC的一种实现,IOC并不是Spring特有其他语言也具有。创建对象通将创建对象交给容器
Spring AOP
定义: Spring AOP是通过JDK的动态代理或者是GDP代理进行实现,即通过底层是通过反射,代理是通过反射进行实现的。
AOP面向切面编程,将那些与业务无关,却与业务共同调用的逻辑或责任封装起来,减少代码的重复性,降低耦合,方便后期的维护性和可扩展性
用处 用在事务、日志、权限校验
Spring启动流程(refresh方法)
- 上锁
- 准备刷新(prepareRefresh)
- 获取到最新的BeanFactory
- 准备BeanFactory
- BeanFactory后置处理
- 在上下文调用执行为Bean的工厂处理器
- 注册Bean后置处理器
- 国际化
- 初始化事件多播器
- 刷新扩展入口
- 注册监听
- 完成BeanFactory初始化,加载bean
- 完成刷新
Spring事务
Spring的事物一、嵌入式事物二、声明式事物推荐使用声明式事物。声明式事物又分为参调式声明和注解式声明。
视频事物的隔离级别有五种,一、读位提交,二读已提交,三可重复读,四串行话,五默认。对于Oracle数据库,默认则是读已提交,对于MYSQL数据库,默认则是可重复读。
事务隔离级别
| 隔离级别 | |
|---|
| 读未提交 | |
| 读已提交 | |
| 可重复读 | |
| 串行化 | |
| 默认 | Spring事务隔离级别为默认,MySQL对应可重复读,Oracle对应读已提交 |
事务的传播行为(7种)
| 传播行为 |
|---|
| 当前存在事务,加入当前事务,当前不存在事务,新建一个事务 |
| 当前存在事务,挂起当前事务,新建一个事务 |
| 当前不存在事务,报异常 |
| 当前不存在事务,以非事务方式运行 |
| 当前存在事务,挂起当前事务,以非事务方式运行 |
| 当前存在事务,报异常 |
| 嵌入事务, |
Spring常用注解
| 标题 | |
|---|
| 给容器注入组件 | @Controller,@Service,@Repository,@Component |
| 注入第三方包 | @Import |
| 注入bean | @Autowired,@Resource |
| 配置类中 | @Configuration,@Bean,@Primarily |
ApplicationContent和beanFactory有哪些区别或者联系
Spring Bean的生命周期
- new对象
- set属性
- Aware接口
- BeanPostProcesser前置处理
- initBean接口,init-method方法
- BeanPostProcesser后置处理
- 使用
- destroy接口,destroy-method方法
Spring Bean的作用域
| 作用域 | 描述 |
|---|
| 单例 | 只有一个Bean |
| 多例 | 每次调用会生成一个新的Bean |
| Request | 每个Request请求会生成一个Bean |
| Session | 每个Session会生成一个Bean |
| Global Session | Spring5.0已弃用 |
将一个类声明为spring的bean的注解有哪些
| 类 | 方法 |
|---|
| @Controller @Service @Respostiry @Component | @Bean |
Spring常用组件
| 组件 | 描述 |
|---|
| bean | |
| context | |
| core | |
| spEl | |
| Spring MVC | |
| Spring AOP | |
Spring单例的线程安全问题
Spring单例存在线程安全问题,尽量不使用成员变量,如果使用则需要考虑线程安全问题。可以使用线程安全的集合,ThreadLocal等对象修饰,valiel