spring aop
来源:互联网 发布:摩卡监控软件 编辑:程序博客网 时间:2024/05/17 07:02
方式一实现MethodBeforeAdvice接口
方式二使用spring定义纯粹POJO切面
方式三与方式一一样 只是使用了spring的DefaultAdvisorAutoProxyCreator自动创建代理
package com.provider.aop;public interface Runable {public void run();}
package com.provider.aop;public class People implements Runable{@Overridepublic void run() {System.out.println("people run");}}
package com.provider.aop;import java.lang.reflect.Method;import org.springframework.aop.AfterReturningAdvice;import org.springframework.aop.MethodBeforeAdvice;public class RunAdice implements MethodBeforeAdvice,AfterReturningAdvice{@Overridepublic void afterReturning(Object returnValue, Method method, Object[] args, Object target) throws Throwable {System.out.println(returnValue);System.out.println(method);System.out.println(target);System.out.println("afterReturning");}@Overridepublic void before(Method method, Object[] args, Object target) throws Throwable {System.out.println(method);System.out.println(target);System.out.println("before");}}
package com.provider.aop;import org.aspectj.lang.JoinPoint;public class RunAdice2{public void afterReturning() {System.out.println("afterReturning*****");}public void beforeReturning(JoinPoint jp) {System.out.println("------");System.out.println("before*****"+jp.getTarget()+"/"+jp.getSignature().getName());}}
<bean id="people" class="com.provider.aop.People"></bean><bean id="runAdice" class="com.provider.aop.RunAdice"></bean><bean id="runAdice2" class="com.provider.aop.RunAdice2"></bean><bean id="runPointcut" class="org.springframework.aop.support.JdkRegexpMethodPointcut"><property name="pattern" value=".*run" /></bean><bean id="sleepHelperAdvisor" class="org.springframework.aop.support.DefaultPointcutAdvisor"><property name="advice" ref="runAdice" /><property name="pointcut" ref="runPointcut" /></bean><bean id="peopleProxy" class="org.springframework.aop.framework.ProxyFactoryBean"><property name="target" ref="people" /><property name="interceptorNames" value="runAdice" /><property name="proxyInterfaces" value="com.provider.aop.Runable" /></bean><aop:aspectj-autoproxy/><aop:config> <aop:aspect ref="runAdice2"> <aop:before method="beforeReturning" pointcut="execution(* *.run(..))"/> <aop:after method="afterReturning" pointcut="execution(* *.run(..))"/> </aop:aspect> </aop:config>
package com.provider.aop;import org.junit.Test;import org.junit.runner.RunWith;import org.springframework.beans.factory.annotation.Autowired;import org.springframework.beans.factory.annotation.Qualifier;import org.springframework.test.context.ContextConfiguration;import org.springframework.test.context.junit4.SpringJUnit4ClassRunner;@RunWith(SpringJUnit4ClassRunner.class) @ContextConfiguration({"spring-core.xml"})public class AopTest {@Autowired@Qualifier("peopleProxy")Runable p;@Testpublic void testrun(){p.run();}}
使用DefaultAdvisorAutoProxyCreator
package com.provider.aop;import org.springframework.context.annotation.Bean;import org.springframework.context.annotation.Configuration;import org.springframework.aop.framework.autoproxy.DefaultAdvisorAutoProxyCreator;import org.springframework.aop.support.RegexpMethodPointcutAdvisor;@Configurationpublic class AppConfig {public @Bean RunAdice runAdice(){return new RunAdice();}public @Bean(name="peple") People people(){return new People();}public @Bean RegexpMethodPointcutAdvisor RegexpMethodPointcutAdvisor(){ org.springframework.aop.support.RegexpMethodPointcutAdvisor regexpMethodPointcutAdvisor = new RegexpMethodPointcutAdvisor(); regexpMethodPointcutAdvisor.setAdvice(runAdice()); regexpMethodPointcutAdvisor.setPattern(".*run"); return regexpMethodPointcutAdvisor;}public @Bean DefaultAdvisorAutoProxyCreator defaultAdvisorAutoProxyCreator(){return new DefaultAdvisorAutoProxyCreator();}}
package com.provider.aop;import org.junit.Test;import org.junit.runner.RunWith;import org.springframework.beans.factory.annotation.Autowired;import org.springframework.beans.factory.annotation.Qualifier;import org.springframework.test.context.ContextConfiguration;import org.springframework.test.context.junit4.SpringJUnit4ClassRunner;@RunWith(SpringJUnit4ClassRunner.class) @ContextConfiguration(classes={AppConfig.class})public class AppConfigTest {@AutowiredRunable p;@Testpublic void testrun(){p.run();}}
0 0
- AOP、Spring的AOP
- AOP--Spring AOP
- Spring AOP 嵌套AOP
- spring AOP
- Spring AOP
- Spring AOP
- spring aop
- Spring AOP
- spring AOP
- spring aop
- Spring aop
- Spring-AOP
- Spring AOP
- spring aop
- spring aop
- Spring AOP
- Spring AOP
- Spring Aop
- runloop的mode作用是什么
- 【Linux】super daemon的配置文件
- Android仿外卖购物车
- 闲暇之余,兴趣所致
- Android获取验证码倒计时
- spring aop
- url——input的新类型
- Java垃圾回收工作原理
- 路由器刷openwrt
- 培训讲解——创建第一个工程
- GCD浅析
- C++的tips(不定期更新)
- mybatis学习1
- C++项目中的extern "C" {}