博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Spring - AOP之传统自动代理
阅读量:1996 次
发布时间:2019-04-27

本文共 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名称,更加细粒度化,可以精确到方法。

转载地址:http://koktf.baihongyu.com/

你可能感兴趣的文章
redis
查看>>
分库分表及读写分离
查看>>
Dubbo
查看>>
Hystrix
查看>>
HIDL服务死亡通知实例 hidl_death_recipient
查看>>
QNX相关资料整理
查看>>
如何使用am命令启动Android应用
查看>>
unix系统调试信息记录
查看>>
Mybatis执行select流程
查看>>
Parameter获取实际参数名 -parameters
查看>>
MetaObject
查看>>
mybatis设置参数
查看>>
@MapperScan扫描
查看>>
Arthas实践:是哪个Controller处理了请求?
查看>>
ProxyConfig属性之exposeProxy
查看>>
Optional
查看>>
mysql相关错误
查看>>
target目录在idea没显示
查看>>
information_schema
查看>>
Optimization and Indexes
查看>>