欢迎访问 生活随笔!

生活随笔

当前位置: 首页 > 编程语言 > java >内容正文

java

Java基于自定义注解的面向切面的实现

发布时间:2025/4/5 java 51 豆豆
生活随笔 收集整理的这篇文章主要介绍了 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基于自定义注解的面向切面的实现的全部内容,希望文章能够帮你解决所遇到的问题。

如果觉得生活随笔网站内容还不错,欢迎将生活随笔推荐给好友。