Spring, 基于代理的AOP
来源:互联网 发布:js eval 替代 编辑:程序博客网 时间:2024/04/29 04:25
先定义接口
package net.wchdai.spring.dao;public interface StudentDAO { public void saveStudent(); public void queryStudent();}
接口的实现类:
package net.wchdai.spring.dao.impl;import net.wchdai.spring.dao.StudentDAO;public class StudentDAOImpl implements StudentDAO{ @Override public void saveStudent() { System.out.println("StudentDAOImpl save student"); } @Override public void queryStudent() { System.out.println("StudentDAOImpl query student"); }}
代理类:
package net.wchdai.spring.proxy;import java.lang.reflect.Method;import org.springframework.aop.AfterReturningAdvice;import org.springframework.aop.MethodBeforeAdvice;public class MyStudentProxy implements MethodBeforeAdvice,AfterReturningAdvice { @Override public void afterReturning(Object arg0, Method arg1, Object[] arg2, Object arg3) throws Throwable { System.out.println("afterReturning"); } @Override public void before(Method arg0, Object[] arg1, Object arg2) throws Throwable { System.out.println("before"); }}
ApplicationContext.xml
<?xml version="1.0" encoding="UTF-8"?><beans xmlns="http://www.springframework.org/schema/beans" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd"><bean id="studentDaoImpl" class="net.wchdai.spring.dao.impl.StudentDAOImpl"/><bean id="studentProxy" class="net.wchdai.spring.proxy.MyStudentProxy"/><bean id="studentDaoPointCut" class="org.springframework.aop.support.JdkRegexpMethodPointcut"> <property name="pattern" value=".*Student"></property></bean><bean id="studentDaoAdvisor" class="org.springframework.aop.support.DefaultPointcutAdvisor"> <property name="advice" ref="studentProxy"></property> <property name="pointcut" ref="studentDaoPointCut"></property></bean><bean id="studentDaoProxyFactory" class="org.springframework.aop.framework.ProxyFactoryBean"> <property name="target" ref="studentDaoImpl"></property> <property name="interceptorNames" value="studentDaoAdvisor"></property> <property name="proxyInterfaces" value="net.wchdai.spring.dao.StudentDAO"></property></bean></beans>
单元测试:
package net.wchdai.spring.test;import net.wchdai.spring.dao.StudentDAO;import org.springframework.context.ApplicationContext;import org.springframework.context.support.ClassPathXmlApplicationContext;import junit.framework.TestCase;public class StudentAOPTest extends TestCase{ public void testAOPProxy(){ ApplicationContext ctx = new ClassPathXmlApplicationContext("ApplicationContext.xml"); StudentDAO sdao=(StudentDAO)ctx.getBean("studentDaoProxyFactory"); sdao.saveStudent(); }}
执行结果:
beforeStudentDAOImpl save studentafterReturning
0 0
- Spring, 基于代理的AOP
- Spring AOP之基于ProxyFactoryBean的代理
- 基于CGLIB代理的经典Spring Aop
- Spring基于代理的AOP实现
- 基于Spring AOP的JDK动态代理和CGLIB代理
- spring经典的基于代理的AOP编程-方法
- Spring AOP之基于AbstractAutoProxyCreator的自动代理
- 基于JDK动态代理的经典Spring AOP
- Spring AOP 演化过程(二):基于代理的经典Spring AOP
- Spring, 基于自动代理实现aop
- Spring aop 基于schema的AOP支持及JoinPoint的使用、如何使用CGLIB代理
- 最简单的动态代理实例(spring基于接口代理的AOP原理)
- Spring 的代理服务 AOP
- Spring的AOP与代理
- Spring的AOP与代理
- 代理实现spring的AOP
- Spring AOP的自动代理
- Spring-AOP的代理模式
- TextToSpeech语音解决中文不能用问题
- netty4.0.x源码分析—write和flush
- 黑马-OC-Foundation-NSSet常用对象类
- 自动备份数据库并通过bat 实现自动上传到ftp服务器
- Java中的static关键字解析
- Spring, 基于代理的AOP
- Linux后台进程管理利器:supervisor
- SQL语句将某字段查询出以逗号隔开
- Spring2.5学习4.1_静态代理实现
- 集合的排列与组合
- migrate android code
- 【Java】编写一个方法,实现基本的字符串压缩功能
- java线程同步锁synchronized的认识
- position