注解
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
@Component
public 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";
}
}