当前位置: 首页 > article >正文

SpringBoot之AOP 的使用

一.什么是注解?

注解是在javaSE5就被引入的Java的,提供一种以元数据的形式添加到代码中。注解可以在编译时存在,并且对代码的执行没有直接的影响。(可以理解为标签,类似于人种:黄种人-白种人-黑种人等)

元注解说明 参数
@TargetAnnotation所修饰的对象范围:Annotaion可以被用于package,types(类,接口,枚举,Annotation类型),类型成员(方法,构造方法,成员变量,枚举值),方法参数和本地变量(如循环变量,catch参数)

1.CONSTRUCTOR:用于描述构造器。

2.FIELD:用于描述域。

3.LOCAL_VARIABLE:用于描述局部变量。

4.METHOD:用于描述方法。

5.PACKAGE:用于描述包。

6.PARAMETER:用于描述参数。

7.TYPE:用于描述类,接口(包括注解类型)或enum声明。

@Retention定义了Annotation被保留的时间长短

1.SOURCE:在源文件中有效。

2.CLASS:在class文件中有效

3.RUNTIME:在运行时有效。

二.注解的使用

例如:@RestController注解


@RestController
public class ProxyDemoController {
}

 以下是@RestController 的代码:

package org.springframework.web.bind.annotation;

import java.lang.annotation.Documented;
import java.lang.annotation.ElementType;
import java.lang.annotation.Retention;
import java.lang.annotation.RetentionPolicy;
import java.lang.annotation.Target;
import org.springframework.core.annotation.AliasFor;
import org.springframework.stereotype.Controller;

@Target({ElementType.TYPE})
@Retention(RetentionPolicy.RUNTIME)
@Documented
@Controller
@ResponseBody
public @interface RestController {
    @AliasFor(
        annotation = Controller.class
    )
    String value() default "";
}

三.认识aop

AOP的含义为面向切面编程,是对方法的一个增强。利用AOP可以对业务逻辑的各个部分进行隔离,从而使得业务逻辑各部分之间耦合度降低,提高代码的可重用性,同时提高开发效率。

例如权限校验的业务:权限校验管理员和访客,进行更新操作

 其中前三步骤代码可以简化

四.aop 的使用

AOP一般使用在权限管理,事务处理,日志等。

aop相关注解:

@Befor

在切点方法执行之前

@After

在切点方法执行之后

以下为通过注解实现对权限管理的aop使用:

 


http://www.kler.cn/a/394383.html

相关文章:

  • idea 弹窗 delete remote branch origin/develop-deploy
  • K8S单节点部署及集群部署
  • 操作系统lab4-页面置换算法的模拟
  • 用MVVM设计模式提升WPF开发体验:分层架构与绑定实例解析
  • Qwen2-VL:发票数据提取、视频聊天和使用 PDF 的多模态 RAG 的实践指南
  • HTTP常见的请求头有哪些?都有什么作用?在 Web 应用中使用这些请求头?
  • oracle查询字段类型长度等字段信息
  • Unity音频导入设置
  • TensorFlow_T7 咖啡豆识别
  • JavaEE-多线程初阶(5)
  • 自定义反序列化过程
  • 【金猿人物展】罗格科技CTO崔鹏——数据驱动未来:从2024看2025大数据行业的变革与挑战...
  • shell 100例
  • STM32中断系统
  • 库存管理高效秘籍
  • ubuntu的dns设置问题
  • 从ROS Bag文件提取点云数据并保存为PCD格式进行处理 ros ubuntu
  • 15分钟学 Go 第 52 天 :发布与版本控制
  • 如何将Edge标签页设置得干净好用
  • Docker部署Nginx
  • 【C语言】计算3x3矩阵每行的最大值并存入第四列
  • 解密复杂系统:理论、模型与案例(3)
  • Fantasy中玩家断线的检测
  • C语言的内存函数
  • 【LeetCode】【算法】538. 把二叉搜索树转换为累加树
  • 【IC每日一题:IC常用模块--RR/handshake/gray2bin】