我們一直使用ProxyFactoryBean來顯式的創建AOP代理
Spring提供的BeanNameAutoProxyCreator類允許我們通過Bean的name屬性來指定代理的Bean
下面通過一個例程來演示如何使用BeanNameAutoProxyCreator
新建一個名字為AOP_Test
代碼 查看源代碼copy to clipboard打印
/**
*
*/
package aop
/**
* @author zhangyong
*
*/
public class TestBeanA {
public void MyMethod() {
System
+
}
}
代碼 查看源代碼copy to clipboard打印
/**
*
*/
package aop
/**
* @author zhangyong
*
*/
public class BeanB {
public void MyMethod() {
System
+
}
}
再創建前置通知類BeforeAdvice
代碼 查看源代碼copy to clipboard打印
/**
*
*/
package aop
import java
import org
/**
* @author zhangyong
*
*/
public class BeforeAdvice implements MethodBeforeAdvice {
public void before(Method method
throws Throwable {
System
}
}
最後創建含有main方法的測試類TestMain
代碼 查看源代碼copy to clipboard打印
/**
*
*/
package aop
import orgntext
import orgntext
/**
* @author zhangyong
*
*/
public class TestMain {
public static void main(String[] args) {
ApplicationContext ac = new ClassPathXmlApplicationContext(
TestBeanA beanA = (TestBeanA)ac
beanA
BeanB beanB = (BeanB)ac
beanB
}
}
在配置文件中配置Bean和自動代理Bean
代碼 查看源代碼copy to clipboard打印
<?xml version=
<beans …………>
<bean id=
<bean id=
<bean id=
<bean class=
BeanNameAutoProxyCreator
<property name=
<list>
<value>Test*</value>
</list>
</property>
<property name=
<list>
<value>BeforeAdvice</value>
</list>
</property>
</bean>
</beans>
運行主類
可以看到
DefaultAdvisorAutoProxyCreator允許我們只需定義相應的Advisor通知者
修改例程
代碼 查看源代碼copy to clipboard打印
<?xml version=
<beans ……>
<bean id=
<bean id=
<bean id=
<bean class=
DefaultAdvisorAutoProxyCreator
<bean class=
PointcutAdvisor
<property name=
<property name=
<list>
<value>*Method*</value>
</list>
</property>
</bean>
</beans>
運行主類輸出結果如下
From:http://tw.wingwit.com/Article/program/Java/ky/201311/28048.html