本文共 3817 字,大约阅读时间需要 12 分钟。
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(); }}
运行结果:前置增强======================学生查询...前置增强======================学生保存...前置增强======================学生修改...前置增强======================学生删除...前置增强======================查询客户...前置增强======================保存客户...前置增强======================修改客户...前置增强======================删除客户...
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/