spring自定义注解

 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 }

有追求,才有动力!

向每一个软件工程师致敬!

by wujf

mail:921252375@qq.com

原文地址:https://www.cnblogs.com/wujf/p/5343820.html