Spring框架之AOP,AOP的配置

7 篇文章 0 订阅
3 篇文章 1 订阅

1.引出AOP

Spring框架的AOP是面向切面编程的思想,也是一种责任分离的思想,AOP思想的最大优势就是把业务代码和其他需要加在业务上的代码完全分离.

例如所有的业务方法在涉及到数据库数据的增删改这样的对数据库的数据有修改时,我需要给业务方法加上事务控制

如上图所示,我有A,B,C三个业务类,对应的三个业务方法方法名分别是 A,B,C,这三个业务方法都涉及对数据库数据的修改,我要给三个方法都加上事务控制,如果用OOP的思想,可以采用继承,或者组合的方式,给业务方法,加上事务控制,但是业务代码中,总会插入继承来的方法,或者是组合来的方法还是给业务代码中,插入其他代码段,那么AOP面向切面编程思想就解决了这个问题,

首先有一个Spring AOP官方文档的的链接https://docs.spring.io/spring-framework/docs/current/spring-framework-reference/core.html#aop

现在需求就变成了:我需要对涉及到数据库数据更新操作的业务代码中,加上事务控制,并且不修改业务代码.

几个AOP中比较重要的概念:

Joinpoint:切入点,表示需要加上事务控制的业务代码

Pointcut:多个需要加上事务控制的业务代码(WHERE)

advice:在业务代码方法执行的什么时机上(WHEN)做什么样的增强(WHAT)

aspect(切面) = Pointcut + advice

其实总结起来,就是在指定业务类的业务方法执行的什么时机做什么样的增强WHERE + WHEN + WHAT

2.开发工具:Eclipse

jar包:Spring-core,Spring-context,Spring-expression,Spring-beans,Spring-aop,aspectjweaver,Spring-test,commons-logging

Spring版本5.1.0

2.1   新建一个Java项目:File --> new --> Java project

2.2 在项目下新建一个文件夹,取名为lib,然后将上述jar包拷贝至lib下,然后选中所有的jar包,右键build path

2.3.以mvc模式分包,DAO模块,Service模块,domain包,项目结构如下

IUserDAO类:

UserDAOImpl类:

IUserService:

UserServiceImpl:

domain类:

模拟的事务管理器类TransactionManager

Spring容器:App-context.xml

2.4.创建测试类,App,并和Spring测试集成,Junit5.x,测试一下保存的业务功能.目前还没有加上AOP的配置..

测试更新操作

我要在不动业务代码的情况下更新和新增的业务代码上加上事务控制,

再看我的业务代码,依然没有动过,

运行,测试方法中的,保存操作,

在保存操作之前输出了开启事务,保存操作保存成功(是业务代码)输出之后,然后提交事务

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值