Spring中自定义注解与AOP中获取注解

来源:互联网 发布:明天教室 知乎 编辑:程序博客网 时间:2024/05/21 06:54

原文地址:http://blog.csdn.net/qpfjalzm123/article/details/45061701

一、自定义注解(annotation)

自定义注解的作用:在反射中获取注解,以取得注解修饰的类、方法或属性的相关解释。

package me.lichunlong.spring.annotation;import Java.lang.annotation.Documented;   import java.lang.annotation.ElementType;   import java.lang.annotation.Retention;   import java.lang.annotation.RetentionPolicy;   import java.lang.annotation.Target;   //自定义注解相关设置@Target({ElementType.METHOD})   @Retention(RetentionPolicy.RUNTIME)   @Documented public @interface LogAnnotation {       //自定义注解的属性,default是设置默认值    String desc() default "无描述信息";   }  

二、自定义注解的使用

package me.lichunlong.spring.service;import me.lichunlong.spring.annotation.LogAnnotation;import me.lichunlong.spring.jdbc.JdbcUtil;import org.springframework.beans.factory.annotation.Autowired;import org.springframework.stereotype.Service;@Servicepublic class UserService {    //与其它注解一样的使用    @LogAnnotation(desc="this is UserService")    public void add() {        System.out.println("UserService add...");    }}

三、AOP中获取注解

    //环绕通知:类似与动态代理的全过程    //携带参数ProceedingJoinPoint,且必须有返回值,即目标方法的返回    @Around(value = "execution(* me.lichunlong.spring.service.*.*(..)) && @annotation(log)")    public Object aroundMethod(ProceedingJoinPoint pjd, LogAnnotation log) {        Object result = null;        System.out.println(log.desc());        try {            System.out.println("前置通知");            result = pjd.proceed();            System.out.println("后置通知");        } catch (Throwable e) {            System.out.println("异常通知");        }        System.out.println("返回通知");        return result;    }

0 0
原创粉丝点击