Spring - AOP之传统自动代理
发布日期:2021-06-30 23:47:21
浏览次数:2
分类:技术文章
本文共 3817 字,大约阅读时间需要 12 分钟。
一、AOP之传统自动代理——基于Bean名称的自动代理
package com.imooc.aop.demo5;public class CustomerDao { public void find(){ System.out.println("查询客户..."); } public void save(){ System.out.println("保存客户..."); } public void update(){ System.out.println("修改客户..."); } public void delete(){ System.out.println("删除客户..."); }}
package com.imooc.aop.demo5;public interface StudentDao { public void find(); public void save(); public void update(); public void delete();}
package com.imooc.aop.demo5;public class StudentDaoImpl implements StudentDao { public void find() { System.out.println("学生查询..."); } public void save() { System.out.println("学生保存..."); } public void update() { System.out.println("学生修改..."); } public void delete() { System.out.println("学生删除..."); }}
package com.imooc.aop.demo5;import org.aopalliance.intercept.MethodInterceptor;import org.aopalliance.intercept.MethodInvocation;public class MyAroundAdvice implements MethodInterceptor { public Object invoke(MethodInvocation invocation) throws Throwable { System.out.println("环绕前增强==================="); Object obj = invocation.proceed(); System.out.println("环绕后增强==================="); return obj; }}
package com.imooc.aop.demo5;import org.springframework.aop.MethodBeforeAdvice;import java.lang.reflect.Method;public class MyBeforeAdvice implements MethodBeforeAdvice { public void before(Method method, Object[] args, Object target) throws Throwable { System.out.println("前置增强======================"); }}
package com.imooc.aop.demo5;import org.junit.Test;import org.junit.runner.RunWith;import org.springframework.test.context.ContextConfiguration;import org.springframework.test.context.junit4.SpringJUnit4ClassRunner;import javax.annotation.Resource;@RunWith(SpringJUnit4ClassRunner.class)@ContextConfiguration("classpath:applicationContext3.xml")public class SpringDemo5 { @Resource(name="studentDao") private StudentDao studentDao; @Resource(name="customerDao") private CustomerDao customerDao; @Test public void demo1(){ studentDao.find(); studentDao.save(); studentDao.update(); studentDao.delete(); customerDao.find(); customerDao.save(); customerDao.update(); customerDao.delete(); }}
运行结果:前置增强======================学生查询...前置增强======================学生保存...前置增强======================学生修改...前置增强======================学生删除...前置增强======================查询客户...前置增强======================保存客户...前置增强======================修改客户...前置增强======================删除客户...
二、AOP之传统自动代理——基于切面信息的自动代理
Ps:其余代码同上……
package com.imooc.aop.demo6;import org.junit.Test;import org.junit.runner.RunWith;import org.springframework.test.context.ContextConfiguration;import org.springframework.test.context.junit4.SpringJUnit4ClassRunner;import javax.annotation.Resource;@RunWith(SpringJUnit4ClassRunner.class)@ContextConfiguration("classpath:applicationContext4.xml")public class SpringDemo6 { @Resource(name="studentDao") private StudentDao studentDao; @Resource(name="customerDao") private CustomerDao customerDao; @Test public void demo1(){ studentDao.find(); studentDao.save(); studentDao.update(); studentDao.delete(); customerDao.find(); customerDao.save(); customerDao.update(); customerDao.delete(); }}
运行结果:学生查询...学生保存...学生修改...学生删除...查询客户...环绕前增强===================保存客户...环绕后增强===================修改客户...删除客户...
两者区别:
- 基于切面信息 较 基于Bean名称,更加细粒度化,可以精确到方法。
转载地址:https://lux-sun.blog.csdn.net/article/details/84324009 如侵犯您的版权,请留言回复原文章的地址,我们会给您删除此文章,给您带来不便请您谅解!
发表评论
最新留言
能坚持,总会有不一样的收获!
[***.219.124.196]2024年04月24日 07时28分58秒
关于作者
喝酒易醉,品茶养心,人生如梦,品茶悟道,何以解忧?唯有杜康!
-- 愿君每日到此一游!
推荐文章
查询亿级数据毫秒级返回!Elasticsearch 是如何做到的?
2021-07-04
FastAPI 构建 API 服务,究竟有多快?
2021-07-04
为什么Quora选择用Python语言?
2021-07-04
一劳永逸学编程的方法
2021-07-04
代码整洁之道-编写 Pythonic 代码
2021-07-04
100行python代码,轻松完成贪吃蛇小游戏
2021-07-04
如何科学的刷 Leetcode
2021-07-04
树莓派程序开机自启动
2021-07-04
WiFi强力信号连接方案
2021-07-04
连锁门店无线通信方案
2021-07-04
ATM终端无线方案
2021-07-04
配置Lotus Domino集群视频详解
2021-07-04
Cisco PIX防火墙PPPoE拨号配置视频教学
2021-07-04
通过PXE安装Linux实况
2021-07-04
Linux / Windows应用方案不完全对照表
2021-07-04
Cisco交换机SPAN&RSPAN调试实录
2021-07-04
轻松掌握Ubuntu Linux的3D桌面快捷键使用
2021-07-04
通过视频展示如何通过Samba配置PDC
2021-07-04
OSSIM(开源安全信息管理系统)在企业网络管理中的应用
2021-07-04