注解
package cn.hzlim.test;import java.lang.annotation.ElementType;import java.lang.annotation.Retention;import java.lang.annotation.RetentionPolicy;import java.lang.annotation.Target;@Target({ElementType.PARAMETER, ElementType.METHOD})@Retention(RetentionPolicy.RUNTIME)public @interface zhujie {}
切面
package cn.hzlim.test;import org.aspectj.lang.JoinPoint;import org.aspectj.lang.annotation.Aspect;import org.aspectj.lang.annotation.Before;import org.aspectj.lang.annotation.Pointcut;import org.springframework.stereotype.Component;@Aspect@Componentpublic class qiemian { // 把切面的连接点放在了我们的注解上 @Pointcut("@annotation(cn.hzlim.test.zhujie)") public void ouAspect() {} // 在这里定义前置切面 @Before("ouAspect()") public void beforeMethod(JoinPoint joinPoint) { // 这里执行保存日志的动作 System.out.println("方法前......."); //得到被切方法的参数 System.out.println(joinPoint.getArgs()[0]); }}
入口
package cn.hzlim.test;import org.springframework.boot.SpringApplication;import org.springframework.boot.autoconfigure.SpringBootApplication;import org.springframework.web.bind.annotation.GetMapping;import org.springframework.web.bind.annotation.RestController;@RestController@SpringBootApplication(scanBasePackages = { "cn.hzlim.test" })public class main { public static void main(String[] args) { SpringApplication.run(main.class, args); } @zhujie @GetMapping("/") public String test1(int a){ return "ok"; }}