Java基于自定义注解的面向切面的实现
生活随笔
收集整理的这篇文章主要介绍了
Java基于自定义注解的面向切面的实现
小编觉得挺不错的,现在分享给大家,帮大家做个参考.
目的:实现在任何想要切的地方添加一个注解就能实现面向切面编程
自定义注解类
@Target({ElementType.PARAMETER, ElementType.METHOD}) @Retention(RetentionPolicy.RUNTIME) public @interface LongOu {}@Target,@Retention都是java的元注解(总共有4个):
@Target:设置注解的使用范围,这里设置可以用在参数上和方法上。
@Retention:设置注解的生命周期,这里设置在运行时。
切面类:
@Aspect//声明这是一个切面 @Component//把这个类交给spring管理 public class LogOuAspect {// 把切面的连接点放在了我们的注解上@Pointcut("@annotation(com.example.demo.log.LongOu)")public void ouAspect() {}// 在这里定义前置切面@Before("ouAspect()")public void beforeMethod(JoinPoint joinPoint) {// 这里执行保存日志的动作System.out.println("方法前.......");//得到被切方法的参数System.out.println(joinPoint.getArgs()[0]);} }
conctronller类:
@RestController //springboot注解,类下的所有方法返回的数据类型为jason public class AspectController {@RequestMapping("/getUser")@LongOu//这是我们自定义的注解,加上这个注解后就能够切到这个方法了。public User getUser(@PathVariable Integer id,HttpServletRequest request) {System.out.println("方法中。。。。。");User user=new User();user.setName("小明");user.setPassword("xxxx");return user;} }
实体类:
public class User {Integer id;String name;String password;public Integer getId() {return id;}public void setId(Integer id) {this.id = id;}public String getName() {return name;}public void setName(String name) {this.name = name;}public String getPassword() {return password;}public void setPassword(String password) {this.password = password;}}
运行结果:
方法前.......
方法中。。。。。
转载于:https://www.cnblogs.com/tongkey/p/8371833.html
总结
以上是生活随笔为你收集整理的Java基于自定义注解的面向切面的实现的全部内容,希望文章能够帮你解决所遇到的问题。
- 上一篇: Android应用开发—AsyncTas
- 下一篇: Java编程思想 学习笔记7