1 <?xml version="1.0" encoding="UTF-8"?> 2 <beans xmlns="http://www.springframework.org/schema/beans" 3 xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:aop="http://www.springframework.org/schema/aop" 4 xmlns:context="http://www.springframework.org/schema/context" 5 xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd 6 http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context-3.2.xsd 7 http://www.springframework.org/schema/aop http://www.springframework.org/schema/aop/spring-aop-3.2.xsd"> 8 <aop:aspectj-autoproxy /> 9 10 <context:component-scan base-package="wjf.maven"> 11 <context:include-filter type="annotation" 12 expression="org.aspectj.lang.annotation.Aspect" /> 13 </context:component-scan> 14 </beans>
1 package wjf.maven; 2 3 import java.lang.annotation.Documented; 4 import java.lang.annotation.ElementType; 5 import java.lang.annotation.Retention; 6 import java.lang.annotation.RetentionPolicy; 7 import java.lang.annotation.Target; 8 9 @Documented 10 @Retention(RetentionPolicy.RUNTIME) 11 @Target({ ElementType.METHOD, ElementType.PARAMETER }) 12 public @interface DemoAnnotation { 13 //定义注解里的参数,通过default指定默认值 14 String desc() default "##########无描述信息##########"; 15 }
1 package wjf.maven; 2 3 import org.aspectj.lang.ProceedingJoinPoint; 4 import org.aspectj.lang.annotation.Around; 5 import org.aspectj.lang.annotation.Aspect; 6 7 //定义一个切面 8 @Aspect 9 public class DemoProcess { 10 11 @Around(value = "execution(* wjf.maven.*.*(..)) && @annotation(log)") 12 public Object aroundMethod(ProceedingJoinPoint pjd, DemoAnnotation log ) { 13 Object result = null; 14 System.out.println(log.desc()); 15 try { 16 System.out.println("前置通知"); 17 result = pjd.proceed(); 18 System.out.println("后置通知"); 19 } catch (Throwable e) { 20 System.out.println("异常通知"); 21 } 22 System.out.println("返回通知"); 23 return result; 24 } 25 }
1 package wjf.maven; 2 3 import org.springframework.stereotype.Service; 4 5 @Service 6 public class AopTest { 7 8 @DemoAnnotation(desc = "我是测试") 9 public void test() { 10 // System.out.println("hello world!!"); 11 } 12 13 @DemoAnnotation 14 public void test2() { 15 System.out.println("hello world!!"); 16 } 17 }