注解

  1. package cn.hzlim.test;
  2. import java.lang.annotation.ElementType;
  3. import java.lang.annotation.Retention;
  4. import java.lang.annotation.RetentionPolicy;
  5. import java.lang.annotation.Target;
  6. @Target({ElementType.PARAMETER, ElementType.METHOD})
  7. @Retention(RetentionPolicy.RUNTIME)
  8. public @interface zhujie {
  9. }

切面

  1. package cn.hzlim.test;
  2. import org.aspectj.lang.JoinPoint;
  3. import org.aspectj.lang.annotation.Aspect;
  4. import org.aspectj.lang.annotation.Before;
  5. import org.aspectj.lang.annotation.Pointcut;
  6. import org.springframework.stereotype.Component;
  7. @Aspect
  8. @Component
  9. public class qiemian {
  10. // 把切面的连接点放在了我们的注解上
  11. @Pointcut("@annotation(cn.hzlim.test.zhujie)")
  12. public void ouAspect() {}
  13. // 在这里定义前置切面
  14. @Before("ouAspect()")
  15. public void beforeMethod(JoinPoint joinPoint) {
  16. // 这里执行保存日志的动作
  17. System.out.println("方法前.......");
  18. //得到被切方法的参数
  19. System.out.println(joinPoint.getArgs()[0]);
  20. }
  21. }

入口

  1. package cn.hzlim.test;
  2. import org.springframework.boot.SpringApplication;
  3. import org.springframework.boot.autoconfigure.SpringBootApplication;
  4. import org.springframework.web.bind.annotation.GetMapping;
  5. import org.springframework.web.bind.annotation.RestController;
  6. @RestController
  7. @SpringBootApplication(scanBasePackages = { "cn.hzlim.test" })
  8. public class main {
  9. public static void main(String[] args) {
  10. SpringApplication.run(main.class, args);
  11. }
  12. @zhujie
  13. @GetMapping("/")
  14. public String test1(int a){
  15. return "ok";
  16. }
  17. }