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

Spring Boot 常用注解及其功能详解

以下是 Spring Boot 常用注解及其功能详解,分为几大类(核心注解、依赖注入、Web开发、配置相关、数据访问、安全等),适合日常开发参考。


🧱 一、核心注解

注解功能
@SpringBootApplication@Configuration@EnableAutoConfiguration@ComponentScan 的组合注解,是 Spring Boot 的入口
@ComponentScan自动扫描并注册 @Component@Service@Repository@Controller 标注的类到 Spring 容器中
@EnableAutoConfiguration启用 Spring Boot 的自动配置机制,自动根据依赖自动配置 Bean
@Configuration表示当前类是一个配置类,等同于传统的 applicationContext.xml

💉 二、依赖注入相关注解

注解功能
@Component标注一个普通组件类
@Service标注业务逻辑层组件
@Repository标注 DAO 层组件,并支持 Spring 的异常转换
@Controller标注控制器组件(配合 MVC)
@RestController@Controller + @ResponseBody,返回 JSON 数据用
@Autowired自动注入 Bean(按类型注入)
@Qualifier配合 @Autowired 使用,按名称注入 Bean
@ResourceJSR-250 标准注解,默认按名称注入
@Value注入配置文件中的值,例如 @Value("${server.port}")
@PostConstruct方法在 bean 初始化完成后执行(初始化方法)
@PreDestroy方法在 bean 销毁前执行(销毁方法)

🌐 三、Web 相关注解(Spring MVC)

注解功能
@RequestMapping通用的请求映射,可以用于类或方法上
@GetMapping@PostMapping@PutMapping@DeleteMapping更简洁的请求方式映射
@PathVariable获取 URL 路径中的变量
@RequestParam获取请求参数,如 ?id=1
@RequestBody将请求体 JSON 转换为 Java 对象
@ResponseBody将返回值转为 JSON 响应(用在 @Controller 方法上)
@CrossOrigin处理跨域请求
@ExceptionHandler处理控制器中的异常
@ControllerAdvice全局异常处理、数据绑定、全局数据等
@ModelAttribute绑定请求参数到模型对象上,或暴露数据到前端页面

🛠 四、配置与属性绑定

注解功能
@ConfigurationProperties将配置文件中的值绑定到 Bean 上,适合批量注入
@PropertySource指定额外的 properties 配置文件
@EnableConfigurationProperties开启 @ConfigurationProperties 支持
@Profile指定该类或 Bean 仅在某个环境 Profile 激活时加载(如 dev/prod)

🗃 五、数据访问相关(Spring Data / JPA)

注解功能
@Entity标注 JPA 实体类,对应数据库表
@Table指定实体类映射的表名
@Id指定主键字段
@GeneratedValue设置主键生成策略
@Repository持久层组件,支持异常转换
@Transactional表示方法或类为事务处理方法
@Modifying用于执行更新、删除操作的自定义 JPQL 语句

🔒 六、安全相关(Spring Security)

注解功能
@EnableWebSecurity启用 Web 安全配置
@Secured基于角色的访问控制
@PreAuthorize / @PostAuthorize方法前/后进行权限校验
@RolesAllowed指定允许访问的角色(JSR-250)

🧪 七、测试相关

注解功能
@SpringBootTest启动整个 SpringBoot 容器进行集成测试
@WebMvcTest只测试 Web 层(Controller)
@DataJpaTest测试 JPA 相关功能
@MockBean向 Spring 容器中添加一个模拟 Bean
@BeforeEach / @AfterEach测试前/后运行
@Test标注测试方法(JUnit)

🧠 小结

核心:@SpringBootApplication = @ComponentScan + @EnableAutoConfiguration + @Configuration
依赖注入:@Autowired、@Component、@Service、@Repository
Web控制:@RestController、@RequestMapping、@GetMapping、@RequestParam、@PathVariable
配置绑定:@ConfigurationProperties、@Value
数据访问:@Entity、@Id、@Repository、@Transactional
安全控制:@Secured、@PreAuthorize
测试:@SpringBootTest、@MockBean

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

相关文章:

  • 【LLM实战|langchain、qwen_agent】RAG高级
  • 力扣-238.除自身以外数组的乘积
  • 【ros-humble】2.自定义通讯接口发布者python,qt使用(话题)
  • Java多线程初阶-线程协作与实战案例
  • 在超算中心,除了立式机柜(rack-mounted)还有哪些形式?
  • 【大模型实战篇】部署GPT-OSS-120B踩得坑(vllm / ollama等推理框架)
  • 使用Prometheus + Grafana + node_exporter实现Linux服务器性能监控
  • 大语言模型的过去与未来——GPT-5发布小谈
  • (已解决)Mac 终端上配置代理
  • Document Picture-in-Picture API拥抱全新浮窗体验[参考:window.open]
  • 交流异步电机的定子与转子转速差产生的原因
  • KTH7111-离轴专用芯片,支持自校准,可替MA600和TLE5012,离轴精度可达±0.2
  • 对数函数分段定点实现
  • 单相交流异步电机旋转磁场产生原理
  • 力扣-53.最大子数组和
  • 从零构建TransformerP2-新闻分类Demo
  • Redis:集群(Cluster)
  • 修复C++14兼容性问题 逻辑检查
  • Vue3 计算属性与监听器
  • 项目一系列-第2章 Git版本控制
  • 贪心(set维护)
  • 「iOS」————优先级反转
  • Redis是单线程性能还高的原因
  • Redis缓存击穿、穿透雪崩
  • 【递归完全搜索】USACO Bronze 2018 December - 往返搬运Back and Forth
  • Python字典高阶操作:高效提取子集的技术与工程实践
  • RAG初步实战:从 PDF 到问答:我的第一个轻量级 RAG 系统(附详细项目代码内容与说明)
  • React 状态管理入门:从 useState 到复杂状态逻辑
  • React+TypeScript代码注释规范指南
  • HTML5 Web Workers 深度剖析:助力网页性能飞速提升