AOP中获取自定义注解的参数值

Posted -beyond

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了AOP中获取自定义注解的参数值相关的知识,希望对你有一定的参考价值。

目录

1、利用注解实现AOP的基本流程

  1.1、创建一个注解,用来注解切点(pointcut)

  1.2、创建一个service,使用上面定义的注解来指定切点

  1.3、创建Aspect,增加业务逻辑

  1.4、创建Spring配置类

  1.5、测试

2、获取自定义注解的参数  

 

Spring中,可以通过自定义注解的方式来实现AOP,比如下面简单的示例:

 

1.1、创建一个注解,用来注解切点(pointcut)

package cn.ganlixin.annotation;

import java.lang.annotation.ElementType;
import java.lang.annotation.Retention;
import java.lang.annotation.RetentionPolicy;
import java.lang.annotation.Target;

@Retention(RetentionPolicy.RUNTIME)
@Target(ElementType.METHOD)
public @interface DemoAnnotation 
    //注意这里没有定义属性

  

1.2、创建一个service,使用上面定义的注解来指定切点

  这里为了节约篇幅,就不创建service接口,再创建serviceImpl来实现接口了,直接写在service中:

package cn.ganlixin.service;

import cn.ganlixin.annotation.DemoAnnotation;
import org.springframework.stereotype.Service;

@Service
public class DemoService 

    @DemoAnnotation  // 使用自定义的注解,声明该方法为切点方法
    public void demo() 
        System.out.println("this is DemoService.demo()");
    

  

1.3、创建Aspect,增加业务逻辑

package cn.ganlixin.aspect;

import org.aspectj.lang.annotation.Aspect;
import org.aspectj.lang.annotation.Before;
import org.springframework.stereotype.Component;

@Component
@Aspect
public class DemoAspect 

    @Before("@annotation(cn.ganlixin.annotation.DemoAnnotation)")
    public void demoBefore() 
        System.out.println("this is before output message");
    

  

1.4、创建Spring配置类

  主要做的是:指定包扫描路径

package cn.ganlixin;

import org.springframework.context.annotation.ComponentScan;
import org.springframework.context.annotation.Configuration;
import org.springframework.context.annotation.EnableAspectJAutoProxy;

@Configuration
@ComponentScan("cn.ganlixin")
@EnableAspectJAutoProxy
public class AppConfig 
    

  

1.5、测试

package cn.ganlixin;

import cn.ganlixin.service.DemoService;
import org.junit.Test;
import org.springframework.context.ApplicationContext;
import org.springframework.context.annotation.AnnotationConfigApplicationContext;

public class AppTest 

    @Test
    public void testAOP1() 
        ApplicationContext context = new AnnotationConfigApplicationContext(AppConfig.class);

        DemoService demoService = context.getBean(DemoService.class);
        demoService.demo();
    

  输出:

this is before output message
this is DemoService.demo()

  

 

以上是关于AOP中获取自定义注解的参数值的主要内容,如果未能解决你的问题,请参考以下文章

spring 自定义注解(annotation)与 aop获取注解

java自定义注解

自定义注解+AOP记录访问日志

AOP通过反射获取自定义注解

使用AOP获取自定义注解的内容

spring aop