您的位置:首页 > 编程语言 > Java开发

Spring, 基于自动代理实现aop

2015-07-07 15:57 671 查看
与自己写代理实现aop(http://blog.csdn.net/u012994584/article/details/46790267)不同的是:

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="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> -->

<bean id="studentDaoAdvisor" class="org.springframework.aop.support.RegexpMethodPointcutAdvisor">
<property name="advice" ref="studentProxy"></property>
<property name="pattern" value=".*Student"></property>
</bean>

<bean class="org.springframework.aop.framework.autoproxy.DefaultAdvisorAutoProxyCreator"></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");
StudentDAO sdao=(StudentDAO)ctx.getBean("studentDaoImpl");
sdao.saveStudent();
}
}


执行结果:

before
StudentDAOImpl save student
afterReturning


自动代理优点:减少了代码,少写了PointCut & ProxyFactory
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: