整理文档,搜刮出一个Spring 基于 Aspect 注解的增强实现的代码,稍微整理精简一下做下分享
定义基本实体类
package com.advice;/** * @author Duoduo * @version 1.0 * @date 2017/4/25 23:41 */public class Performer { public void doPerform() { System.out.println("Performer do perform ....................... "); }}定义基于注解的增强类
package com.advice;import org.aspectj.lang.ProceedingJoinPoint;import org.aspectj.lang.annotation.*;/** * @author Duoduo * @version 1.0 * @date 2017/4/25 23:42 */@Aspect//定义切面public class Audience { //定义切点 @Pointcut("execution(* com.advice.Performer.doPerform(..))") public void doPerform(){} @Before("doPerform()") public void takeSeas() { System.out.println("The audience is taking their seats."); } @Before("doPerform()") public void turnOffPhone() { System.out.println("The audience is turn off their cellphone."); } @AfterReturning("doPerform()") public void applaund() { System.out.println("CLAP CLAP CLAP CLAP ..."); } @AfterThrowing("doPerform()") public void demandRefund() { System.out.println("Boo! we want our money back!"); } @Around("doPerform()") public void watchPerfomance(ProceedingJoinPoint joinPoint) { try { Long start = System.currentTimeMillis(); joinPoint.proceed(); long end = System.currentTimeMillis(); System.out.println("The performance took "+(end-start)+" milliseconds"); } catch (Throwable throwable) { throwable.printStackTrace(); } }}Spring 自动代理配置
<!-- aop 增强自动代理 --><aop:aspectj-autoproxy/><bean id="audience" class="com.advice.Audience"/><bean id="performer" class="com.advice.Performer"/>Junit测试
@Test public void testDoPerform() throws Exception { ApplicationContext context = new ClassPathXmlApplicationContext("classpath:smart-context.xml"); //代理为指向Interface的代理 Performer performer = (Performer) context.getBean("performer"); System.out.println("+++++++++++++++++++++++++++++++++"); performer.doPerform(); }测试结果
+++++++++++++++++++++++++++++++++2017-04-26 20:51:16,980 DEBUG [main] (AbstractBeanFactory.java:251) - Returning cached instance of singleton bean 'audience'The audience is taking their seats.The audience is turn off their cellphone.Performer do perform ....................... The performance took 91 millisecondsCLAP CLAP CLAP CLAP ...以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持。