目录
Spring
Spring带来了什么?
- IOC:把我们的类上交,由Spring来进行统一的管理和配置,在需要使用的地方注入。好处是减少了各个类之间的相互依赖,依赖控制交给Spring管理。
- AOP 封装了jdk和cglib的动态代理,结合IOC提供了更方便的增强类的方法。
没有Spring会怎么样?
- 想知道为什么使用,最好的办法就是想想如果没有会怎样?
- 如果没有Spring,我们不得不在使用每个类之前,实例化一个对象。当然我们可以用工厂方法来做这件事,就可以集中管理并且让调用者和被调用者之间的耦合更加松散。于是就需要大量的工厂类,并且在增加或改变接口实现的时候,还需要对工厂进行调整。而Spring就像一个大工厂一样,使用了大量的反射机制来生成需要实例化的对象。
- 除此之外Spring还带来了强大的代理,我们使用的每个注入的对象都是经过代理的增强对象,同时可以使用aop包来定义一些与业务逻辑不相关的切面。增强功能模块的内聚,拆分功能模块和非业务模块。而AOP又是建立再IOP基础之上,因此如果没有Spring,功能模块和非功能模块混在一起,导致逻辑混乱不清晰。 -用Spring可以让各个模块耦合更加松散,可以在业务逻辑之外进行增强代理,实现非业务功能。
详细介绍Spring
(轻量型Ioc AOP容器框架,相对于重量级的EJB来说)
- IOC(Inversion of Control)或DI(Dependency Ingection)
IOC控制反转:
没有spring的时候:我的Service需要调用DAO,Service就需要创建DAO
Spring:Spring发现你Service依赖与dao,就给你注入。
核心原理:就是配置文件+反射(工厂也可以)+容器(map) - AOP:面向切面编程
核心原理:使用动态代理的设计模式在执行方法前后或出现异常后加入相关逻辑 我们主要使用AOP来做:- 事务处理
- 权限判断
- 日志
AOP是什么?你都拿它做什么?
核心原理:使用动态代理的设计模式在执行方法前后或出现异常后加入相关逻辑
我们主要使用AOP来做:
- 事务处理:执行方法前,开启事务,执行完成后关闭事务,初选异常后回滚事务
- 权限判断:在执行方法前,判断是否具有某权限
- 日志:在执行前进行日志处理
Spring事务的隔离级别
多个事务存在是怎么处理的策略:
- required (需要) 如果存在一个事务,则支持当前事务,如果没有事务则开启
- supports(支持) 如果存在一个事务,则支持当前事务,如果没有事务,则非事务的执行
- mandatory(强制的,必要的,必须的) 如果存在一个事务,则支持当前事务,如果没有一个活动的事务,则抛出异常
- required_new(总是开启一个新的事务)
总是开启一个新的事务,如果一个事务已经存在,则将这个存在的事务挂起 - not_support(总是非事务的执行,如果有就挂起)
总是非事务的执行,并挂起任何存在的事务 - never(绝不)
总是非事务的执行,如果存在任何一个活动事务,则抛出异常 - nested(嵌套的)
嵌套的,如果有就嵌套,没有就开启事务
小结:
感谢您的阅读,如果对您有帮助,记得给小编点赞哦?????????????????