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 }