浅谈Spring框架
1.Spring是如何简化开发的
- 基于POJO的轻量级和最小侵入性编程
- 通过依赖注入和面向接口实现送耦合
- 基于切面和惯例进行声明式编程
- 通过切面和模板减少模板化代码
!!!Spring 是一个框架,同时是一个容器还是一个生态
spring 使创建Java企业应用变得更容易,它提供了在企业环境中接受java语言所需的一切并可以根据应用程序需要灵活的创建多种体系
Spring是一个IOC和AOP的容器框架
IOC:控制反转
AOP:面向切面编程
容器:包含并管理应用对象的生命周期
Spring 事务的传播性
Spring事务的隔离性
spring事务失效的12种场景
- 访问权限问题
- 如果我们自定义的事务方法(即目标方法),它的访问权限不是
public
,而是 private、default 或 protected 的话,spring 则不会提供事务功能。
- 如果我们自定义的事务方法(即目标方法),它的访问权限不是
- 方法用final修饰
- spring 事务底层使用了 aop,也就是通过 jdk 动态代理或者 cglib,帮我们生成了代理类,在代理类中实现的事务功能。但如果某个方法用 final 修饰了,那么在它的代理类中,就无法重写该方法,而添加事务功能。
- 注意:如果某个方法是 static 的,同样无法通过动态代理,变成事务方法。
- 方法内部调用
- 没有事务的方法在本类调用有事务的方法会导致事务失效
- 未被Spring管理
- 多线程调用
- 表不支持事务
- 错误的传播特性
- 自己吞了异常
- 手动抛了别的异常
- 自定义回滚异常
- 嵌套事务回滚多了
Spring 里面用到的设计模式
- 单例模式:Spring中的Bean默认情况下都是单例的。
- 工厂模式:工厂模式主要通过BeanFactory和ApplicaitonContext来生产Bean对象
- 代理模式:最常见的AOP的实现方式就是通过代理来实现
- 模板方式模式:主要是一些对数据库操作的类用到,比如JdbcTemplate,JpaTemplate,因为插叙数据库的建立连接,执行查询,关闭连接几个过程,非常使用于模板方式。
Spring Boot 的启动流程
- 准备环境,根据不同的环境创建不同的Environment
- 准备,加载上下文,为不同的环境选择不同的SpringContext,然后加载资源,配置Bean
- 初始化,这个阶段刷新Spring Context,启动应用
- 最后结束流程