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

说说SpringBoot常用的注解?

在面试中,当被问及 Spring Boot 相关的注解时,很多同学可能会觉得这是日常开发中经常接触的内容,因此回答起来信心满满。然而,即使是看似简单的问题,也可能隐藏着更深层次的知识点。以下是对 Spring Boot 中常用注解的总结,希望能帮助大家更深入地理解这些注解。

1.启动类注解:

@SpringBootApplication:下面还包含很多注解,简单说一下3个比较有用的注解,也是理解自动装配的相关注解。

  • @SpringBootConfiguration:标识当前类是一个 Spring Boot 配置类。

  • @EnableAutoConfiguration:开启 Spring Boot 的自动配置功能。

  • @ComponentScan:启用组件扫描,扫描当前包及子包下的 @Component@Service@Controller@Repository 等注解。

2.依赖注入注解:

一、声明bean的注解:

注解作用
@Component通用组件标记
@Service标记业务层(Service 层)组件(等价于@Component)。
@Controller标记 Web 控制器组件(等价于@Component)。
@Repository标记数据访问层(DAO 层)组件(等价于@Component,Spring 会自动处理数据访问异常)。
@Configuration标记配置类(通常用于声明@Bean方法),等价于传统 Spring 的 XML 配置文件。
@Bean声明一个 Bean(标注在方法上,方法返回值会被注册到 IOC 容器)。

二、注入bean:

注解作用
@AutowiredSpring 原生注入注解(默认按类型注入,可配合@Qualifier按名称指定)。
@ResourceJSR-250 标准注解(默认按名称注入,无名称时按类型注入,来自javax.annotation)。
@Qualifier配合@Autowired使用,指定注入的 Bean 名称(解决同类型多 Bean 的歧义问题)。
@Primary标记同类型 Bean 中的“主选” Bean(当@Autowired遇到多 Bean 时优先选择它)。
@Lazy标记 Bean 为延迟加载(默认 IOC 启动时创建 Bean,@Lazy会在首次使用时创建)。
@Scope指定 Bean 的作用域(如singleton(默认单例)、prototype(多例)、request(HTTP 请求作用域)等)。

3.配置管理注解

SpringBoot 通过application.properties/yml管理配置,以下注解用于读取和绑定

注解作用
@Value读取单个配置属性(支持 SpEL 表达式),如@Value("${server.port}")。
@ConfigurationProperties批量绑定配置到 Java 对象(适用于复杂配置,如prefix="spring.datasource"绑定一组属性)。
@PropertySource加载自定义配置文件(默认加载application.properties,可用此注解加载其他文件,如@PropertySource("classpath:my-config.properties"))。
@EnableConfigurationProperties启用@ConfigurationProperties标记的类(通常配合@Configuration使用)。

4.web开发注解:

Spring Boot 内置 Spring MVC,以下注解用于处理 HTTP 请求、响应和参数。

一、控制器与请求映射:

注解作用
@RestControllerRESTful 控制器(等价于@Controller + @ResponseBody,返回数据直接序列化为 JSON/XML)。
@Controller传统 MVC 控制器(需配合@ResponseBody返回数据,或返回视图)。
@RequestMapping通用请求映射(可标记类或方法,指定 URL 路径、请求方法等,如@RequestMapping("/user"))。
@GetMapping@RequestMapping(method = RequestMethod.GET)的简写(处理 GET 请求)。
@PostMapping处理 POST 请求(类似@GetMapping)。
@PutMapping处理 PUT 请求。
@DeleteMapping处理 DELETE 请求。

二、请求参数与响应:

注解作用
@RequestBody将请求体(如 JSON)反序列化为 Java 对象(用于 POST/PUT 等带请求体的请求)。
@RequestParam读取 URL 中的查询参数(如@RequestParam("username") String name)。
@PathVariable读取 URL 路径中的占位符(如@GetMapping("/user/{id}")配合@PathVariable("id") Long userId)。
@ResponseBody将返回值序列化为 JSON/XML(通常配合@Controller使用,@RestController已内置此注解)。
@ResponseStatus设置响应状态码(如@ResponseStatus(HttpStatus.CREATED)返回 201 状态码)。
@CrossOrigin解决跨域问题(标记类或方法,指定允许的源、方法等)。

5.功能启动注解:

注解作用
@EnableAutoConfiguration开启自动配置(@SpringBootApplication已包含此注解)。
@EnableScheduling开启任务调度(支持@Scheduled注解)。
@EnableAsync开启异步方法支持(配合@Async使用)。
@EnableCaching开启缓存支持(配合@Cacheable、@CachePut等注解)。
@EnableTransactionManagement开启声明式事务支持(配合@Transactional使用)。
@EnableFeignClients开启 Feign 客户端(用于微服务远程调用)。

6.其他注解:

注解作用
@Transactional声明事务(标记方法或类,支持事务隔离级别、传播行为等配置)。
@Valid/@Validated开启参数校验(配合javax.validation约束注解,如@NotBlank、@Max)。
@Profile标记 Bean 仅在指定环境(如dev、prod)中生效(通过spring.profiles.active配置)。
@Import手动导入其他配置类或 Bean(类似 XML 中的<import>)。
@Aspect标记 AOP 切面类(配合@Pointcut、@Before等实现切面编程)。

 

http://www.xdnf.cn/news/14861.html

相关文章:

  • 实时开发IDE部署指南
  • DVWA SQL Injection(Blind)漏洞分析与利用
  • 2025年数据挖掘与计算机科学国际会议 (DMCS 2025)
  • 数据湖技术之Iceberg-03 Iceberg整合Flink 实时写入与增量读取
  • 创意Python爱心代码
  • 7.7晚自习作业
  • 基于Java+SpringBoot的在线小说阅读平台
  • 以科技为刃,铸强国之基
  • 【Swift开发】屏蔽NSSecureCoding频繁警告
  • Chatbox➕知识库➕Mcp = 机器学习私人语音助手
  • 2025 年使用大模型进行软件工程:现实检验
  • [附源码+数据库+毕业论文]基于Spring+MyBatis+MySQL+Maven+jsp实现的高校实验室资源综合管理系统,推荐!
  • 汽车功能安全系统阶段开发【技术安全需求TSR】4
  • 算法学习笔记:8.Bellman-Ford 算法——从原理到实战,涵盖 LeetCode 与考研 408 例题
  • Python 3 -- 第一章 基础语法
  • RSTP 拓扑收敛机制
  • 牛客周赛99
  • java ThreadLocal源码分析
  • 基于Java+springboot 的车险理赔信息管理系统
  • centos7.9安装ffmpeg6.1和NASM、Yasm、x264、x265、fdk-aac、lame、opus解码器
  • CentOS-7的“ifupdown“与Debian的“ifupdown“对比 笔记250706
  • 【LeetCode 热题 100】240. 搜索二维矩阵 II——排除法
  • [netty5: WebSocketFrameEncoder WebSocketFrameDecoder]-源码解析
  • 《Spring AI实战:Java智能开发速成指南》
  • 设计模式---观察者模式(发布-订阅模式)
  • 【STM32】通用定时器PWM
  • Spring AI(12)——调用多模态模型识别和生成图像
  • 关于笔记本充电,使用氮化镓充电器
  • Omi录屏专家 Screen Recorder by Omi 屏幕录制Mac
  • 高效处理大体积Excel文件的Java技术方案解析