首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 软件管理 > 软件架构设计 >

Spring AOP概念学习(3)-自动代理

2012-11-09 
Spring AOP概念学习(三)-自动代理Spring AOPSpring AOPSpring AOP1BeanNameAutoProxyCreator1Bean package

Spring AOP概念学习(三)-自动代理

    上一篇文章是Spring AOP的单独代理,这一篇是关于Spring AOP的自动代理。其中的原理没必要多说,Spring AOP可以通过两种方式实现自动代理。下面就是分别介绍这两种方式。

    1、使用BeanNameAutoProxyCreator

         1)首先创建Bean类

 

package com.javaeye.sunjiesh.proxy.auto;public class HelloBeanA {public void testHelloBeanA(){System.out.println(this.getClass().getName()+" is running");}}

 

package com.javaeye.sunjiesh.proxy.auto;public class HelloBeanB {public void testHelloBeanB(){System.out.println(this.getClass().getName()+" is running");}}
 

         2)创建Advice类

 

package com.javaeye.sunjiesh.aop;import java.lang.reflect.Method;import org.springframework.aop.AfterReturningAdvice;public class AfterAdviceBean implements AfterReturningAdvice{public AfterAdviceBean() {// TODO Auto-generated constructor stub}@Overridepublic void afterReturning(Object returnValue, Method method,Object[] args, Object target) throws Throwable {// TODO Auto-generated method stubSystem.out.println("afterReturning is running");}}

 

package com.javaeye.sunjiesh.aop;import java.lang.reflect.Method;import org.springframework.aop.MethodBeforeAdvice;public class BeforeAdviceBean implements MethodBeforeAdvice{public BeforeAdviceBean() {// TODO Auto-generated constructor stub}@Overridepublic void before(Method method, Object[] args, Object target)throws Throwable {// TODO Auto-generated method stubSystem.out.println("before is running");}}
 

         3)创建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" xmlns:context="http://www.springframework.org/schema/context"xmlns:tx="http://www.springframework.org/schema/tx"xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-2.5.xsdhttp://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context-2.5.xsdhttp://www.springframework.org/schema/tx http://www.springframework.org/schema/tx/spring-tx-2.5.xsd"><bean id="helloBeanA" name="code">package com.javaeye.sunjiesh.proxy.auto;import org.springframework.context.ApplicationContext;import org.springframework.context.support.ClassPathXmlApplicationContext;public class SpringAopMain {public SpringAopMain() {// TODO Auto-generated constructor stub}/** * @param args */public static void main(String[] args) {// TODO Auto-generated method stubApplicationContext ctx = new ClassPathXmlApplicationContext("spring-beans3.xml");HelloBeanA h1 = (HelloBeanA) ctx.getBean("helloBeanA");h1.testHelloBeanA();HelloBeanB h2 = (HelloBeanB) ctx.getBean("helloBeanB");h2.testHelloBeanB();}}
 

         5)输出

 

before is runningcom.javaeye.sunjiesh.proxy.auto.HelloBeanA is runningafterReturning is runningbefore is runningcom.javaeye.sunjiesh.proxy.auto.HelloBeanB is runningafterReturning is running
 

    2、使用DefaultAdvisorAutoProxyCreator

        只要修改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" xmlns:context="http://www.springframework.org/schema/context"xmlns:tx="http://www.springframework.org/schema/tx"xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-2.5.xsdhttp://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context-2.5.xsdhttp://www.springframework.org/schema/tx http://www.springframework.org/schema/tx/spring-tx-2.5.xsd"><bean id="helloBeanA" /><bean id="nameMatchMethodPointcutAdvisor"ref="beforeAdvice" /><property name="mappedNames"><list><value>test*</value></list></property></bean></beans>

热点排行