AOP &IOC&事务&Spring源码

Posted java架构学习专栏

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了AOP &IOC&事务&Spring源码相关的知识,希望对你有一定的参考价值。

IoC就是Inversion of Control,控制反转。在Java开发中,IoC意味着将你设计好的类交给系统去控制,而不是在你的类内部控制。这称为控制反转。


 Spring AOP面向方面编程原理:AOP概念(1)AOP(Aspect Oriented Programming),也就是面向方面编程的技术。AOP基于IoC基础,是对OOP的有益补充。


AOP将应用系统分为两部分,核心业务逻辑(Core business concerns)及横向的通用逻辑,也就是所谓的方面Crosscutting enterprise concerns,例如,所有大中型应用都要涉及到的持久化管理(Persistent)、事务管理(Transaction Management)、安全管理(Security)、日志管理(Logging)和调试管理(Debugging)等。


AOP正在成为软件开发的下一个光环。使用AOP,你可以将处理aspect的代码注入主程序,通常主程序的主要目的并不在于处理这些aspect。AOP可以防止代码混乱。


Spring framework是很有前途的AOP技术。作为一种非侵略性的、轻型的AOP framework,你无需使用预编译器或其他的元标签,便可以在Java程序中使用它。这意味着开发团队里只需一人要对付AOP framework,其他人还是像往常一样编程。

 



spring提供的事务管理可以分为两类:编程式的和声明式的。编程式的,比较灵活,但是代码量大,存在重复的代码比较多;声明式的比编程式的更灵活。


围绕Poxy的动态代理 能够自动的提交和回滚事务

org.springframework.transaction.interceptor.TransactionProxyFactoryBean


PROPAGATION_REQUIRED--支持当前事务,如果当前没有事务,就新建一个事务。这是最常见的选择。 


PROPAGATION_SUPPORTS--支持当前事务,如果当前没有事务,就以非事务方式执行。 


PROPAGATION_MANDATORY--支持当前事务,如果当前没有事务,就抛出异常。 


PROPAGATION_REQUIRES_NEW--新建事务,如果当前存在事务,把当前事务挂起。 


PROPAGATION_NOT_SUPPORTED--以非事务方式执行操作,如果当前存在事务,就把当前事务挂起。 


PROPAGATION_NEVER--以非事务方式执行,如果当前存在事务,则抛出异常。 


PROPAGATION_NESTED--如果当前存在事务,则在嵌套事务内执行。如果当前没有事务,则进行与PROPAGATION_REQUIRED类似的操作。


以上是关于AOP &IOC&事务&Spring源码的主要内容,如果未能解决你的问题,请参考以下文章

IOC & AOP

spring aop & ioc 容器

一:SpringIOC&DI

Spring--IoC&AOP

spring之初识Ioc&Aop

1Springboot之事务&aop的核心功能源码分析