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

SpringBoot项目中常用的一些注解

一、核心注解

  1. @SpringBootApplication

    • 作用:标注一个主程序类,表明这是一个Spring Boot应用程序的入口。
    • 说明:这是一个复合注解,组合了@Configuration、@EnableAutoConfiguration和@ComponentScan。
  2. @EnableAutoConfiguration

    • 作用:Spring Boot会根据添加的jar依赖自动配置项目。
    • 用法:只需在启动类或配置类上添加该注解即可(注意:@SpringBootApplication注解已经组合了这个注解,所以在启动类上可以不使用)。
  3. @ComponentScan

    • 作用:自动扫描并加载符合条件的组件或者Bean,定义扫描的路径。
    • 用法:通常与@SpringBootApplication一起使用,无需单独添加。
    • 说明:主要是用来扫描Bean,如果启动未加载到Bean,可以通过这个注解指定Bean扫描加载路径(注意:这个注解也已经整合在@SpringBootApplication注解中,所以可以不用在主类中添加这个注解)。
  4. @Configuration

    • 作用:标识一个类作为配置类,类似于Spring XML配置文件。
    • 用法:直接在类上添加这个注解,一般都是配合@Bean注解使用。
    • 说明:表明这个类是一个Java配置类。

二、Web注解

  1. @Controller

    • 作用:表示这个类是一个控制器,用于接收来自客户端的请求并处理它们。
  2. @RestController

    • 作用:结合了@Controller和@ResponseBody两个注解的功能,用于标记一个类或者方法,表示该类或方法用于处理HTTP请求,并将响应的结果直接返回给客户端,而不需要进行视图渲染。
    • 用法:一般直接放在控制器类上,也就是控制层,配合@RequestMapping使用。

三、依赖注入注解

  1. @Autowired

    • 作用:用于自动装配Bean,即将需要的Bean对象注入到目标Bean中,省去了手动配置的步骤。
    • 用法:可以用于字段、构造方法、Setter方法上,实现不同的自动装配方式。
    • 说明:可以减少编码工作量,提高代码的可维护性和灵活性,使得Bean之间的依赖关系更加清晰。

四、数据访问注解

  1. @Repository

    • 作用:将一个类标识为数据访问层(DAO)的组件,用于对数据库进行CRUD操作,封装数据访问逻辑。
    • 说明:被标识为@Repository的类通常包含与数据库交互的方法,如数据的增删改查等。

五、事务注解

  1. @Transactional

    • 作用:用来声明一个方法或类中所有公共方法的事务边界。
    • 说明:使用@Transactional可以极大简化事务管理的复杂性,确保数据的一致性和完整性。

六、日志注解

  1. @Slf4j

    • 作用:在SpringBoot项目中,@Slf4j是Lombok提供的一个日志注解,用于简化日志声明。
    • 用法:引入Lombok依赖后,在类上添加@Slf4j,即可自动创建一个Logger实例,无需手动创建LoggerFactory.getLogger()。

七、AOP相关注解

  1. @Aspect

    • 作用:把当前类标识为一个切面供容器读取。
  2. @Pointcut

    • 作用:定义切入点,即带有通知的连接点,在程序中主要体现为书写切入点表达式。
  3. @Before

    • 作用:标识一个前置增强方法,相当于BeforeAdvice的功能。
  4. @AfterReturning

    • 作用:后置增强,相当于AfterReturningAdvice,方法退出时执行。
  5. @AfterThrowing

    • 作用:异常抛出增强,相当于ThrowsAdvice。
  6. @After

    • 作用:final增强,不管是抛出异常或者正常退出都会执行。
  7. @Around

    • 作用:环绕增强,相当于MethodInterceptor。

八、其他注解 

1、@Component、@Service、@Repository

  • 作用:都是用于将类注入到Spring容器中的注解,但它们使用的场景不同。

  • 功能

    • @Component:是一个通用的注解,用于指定一个类是一个Spring Bean。

    • @Service:用于标识一个类是业务逻辑层的Bean。

    • @Repository:用于标识一个类是数据访问层的Bean。

2、@ResponseBody

  • 作用:用于方法或类上,表示该方法的返回结果直接写入HTTP response body中,而不会被解析为跳转路径。

3、 处理请求参数的注解

  • @RequestParam:用于接收URL?后面的参数,适用于GET或POST请求。

  • @PathVariable:用于获取路径参数,如URL中的/{id}/{name}这种形式的参数。

  • @RequestBody:用于获取请求体数据(body),通常用于POST请求,接收json数据。

  • @RequestHeader:用于获取请求标头的信息。

  • @CookieValue:用于获取Cookie的值。

4、@Value、@ConfigurationProperties、@PropertySource

  • @Value:用于获取配置文件中的单个属性值。

  • @ConfigurationProperties:可以直接注入整个类的数据。

  • @PropertySource:用于指定加载的配置文件,但注意它不支持YML文件读取。

5、@build

  • 作用:@build注解通常与Lombok插件一起使用,用于自动生成所需要的代码。通过@build注解,可以使得编写的类能够通过代码实例化,自动生成setter、getter、toString等方法。但需要注意的是,直接使用@build注解进行对象创建并不是一种推荐的做法,更好的方式是使用Lombok提供的builder模式来创建对象。

  • 功能:简化代码,减少手动编写setter、getter、toString等方法的重复劳动,提高开发效率。

6、@Select

  • 作用:@Select注解是MyBatis框架中的一个注解,用于标记查询语句。它可以在接口方法上使用,也可以在XML文件中使用。

  • 功能:通过@Select注解,可以直接在接口方法上指定SQL查询语句,无需编写XML配置文件。这使得查询语句更加直观和易于管理。同时,@Select注解还支持参数替换和动态SQL等功能。

7、@Target

  • 作用:@Target注解是Java中的一个元注解(即注解的注解),用于指定其他注解可以应用的目标元素(如类、方法、字段等)。

  • 功能:通过@Target注解,可以限制其他注解的使用范围,确保它们只能被应用到指定的元素上。这有助于提高代码的可读性和可维护性,避免注解被误用或滥用。

8、@Retention

  • 作用:@Retention注解也是Java中的一个元注解,用于指定注解的生命周期。

  • 功能:通过@Retention注解,可以定义注解在何时被保留和丢弃。Java提供了三种RetentionPolicy(保留策略):SOURCE、CLASS和RUNTIME。

    • SOURCE:注解只在源代码中保留,在编译成.class文件时被丢弃。这种策略通常用于检查性的注解,如@Override和@SuppressWarnings。

    • CLASS:注解在编译成.class文件时被保留,但在JVM加载类文件时被丢弃。这是默认的保留策略,通常用于在编译时进行一些预处理操作,如生成辅助代码。

    • RUNTIME:注解不仅被保留在.class文件中,而且在JVM加载类文件后仍然可用。这种策略通常用于在运行时通过反射机制获取注解信息,进行相应处理。

http://www.lryc.cn/news/479287.html

相关文章:

  • 【网络】自定义协议——序列化和反序列化
  • Pytorch如何精准记录函数运行时间
  • 使用 Java 实现邮件发送功能
  • html第一个网页
  • 前后端交互接口(三)
  • 华为Mate70前瞻,鸿蒙NEXT正式版蓄势待发,国产系统迎来关键一战
  • 【安卓13 源码】Input子系统(4)- InputReader 数据处理
  • Xserver v1.4.2发布,支持自动重载 nginx 配置
  • Java反射原理及其性能优化
  • RabbitMQ 管理平台(控制中心)的介绍
  • 【SQL】在 SQL Server 中创建数据源是 MySQL 数据表的视图
  • 现代Web开发:Next.js 深度解析与最佳实践
  • LeetCode题练习与总结:赎金信--383
  • eval: jdk1.8.0_431/jre/bin/java: Permission denied
  • .Net IOC理解及代码实现
  • 履带机器人(一、STM32控制部分--标准库)
  • 地理空间-Java实现航迹稀释
  • qt QHttpMultiPart详解
  • 【测试】【Debug】vscode中同一个测试用例出现重复
  • Mac上的免费压缩软件-FastZip使用体验实测
  • Linux(CentOS)运行 jar 包
  • 基于YOLOv8 Web的安全帽佩戴识别检测系统的研究和设计,数据集+训练结果+Web源码
  • LabVIEW VISA通信常见问题
  • Node.js Stream(流)以及模块系统使用介绍 (基础介绍 五)
  • 嵌入式linux中设备树控制硬件的方法
  • 定时器入门:Air780E定时器基础与进阶
  • Java LeetCode练习
  • go 集成go-redis 缓存操作
  • python数据结构基础(3)
  • java-智能识别车牌号_基于spring ai和开源国产大模型_qwen vl