Spring Boot 常用注解的分类及简明解释

ops/2025/3/16 1:24:27/

以下是 Spring Boot 常用注解的分类及简明解释,帮助快速理解和使用:


一、核心注解

  1. @SpringBootApplication

    • 作用:主类注解,标记 Spring Boot 应用的入口。
    • 组合功能
      • @SpringBootConfiguration:标识配置类。
      • @EnableAutoConfiguration:启用自动配置。
      • @ComponentScan:扫描当前包及子包的组件。
    • 示例
      java">@SpringBootApplication
      public class Application {public static void main(String[] args) {SpringApplication.run(Application.class, args);}
      }
      
  2. @EnableAutoConfiguration

    • 作用:根据依赖自动配置 Spring 容器(如内嵌 Tomcat、数据库配置等)。
  3. @ComponentScan

    • 作用:扫描指定包下的组件(如 @Component, @Service)。
    • 示例
      java">@ComponentScan("com.example.service")
      

二、Web 开发注解

  1. @RestController

    • 作用:组合 @Controller + @ResponseBody,返回值直接作为 HTTP 响应体(如 JSON)。
    • 示例
      java">@RestController
      public class UserController {@GetMapping("/users")public List<User> getAllUsers() { ... }
      }
      
  2. @RequestMapping

    • 作用:映射 HTTP 请求到方法,可指定路径和方法类型(GET/POST 等)。
    • 衍生注解
      • @GetMapping@PostMapping@PutMapping@DeleteMapping(简化 HTTP 方法映射)。
    • 示例
      java">@PostMapping("/user")
      public User createUser(@RequestBody User user) { ... }
      
  3. @PathVariable

    • 作用:从 URL 路径中提取参数。
    • 示例
      java">@GetMapping("/user/{id}")
      public User getUser(@PathVariable Long id) { ... }
      
  4. @RequestParam

    • 作用:获取 URL 查询参数或表单数据。
    • 示例
      java">@GetMapping("/search")
      public List<User> search(@RequestParam String name) { ... }
      
  5. @RequestBody

    • 作用:将请求体(如 JSON)反序列化为对象。
    • 示例
      java">@PostMapping("/user")
      public void saveUser(@RequestBody User user) { ... }
      

三、Bean 管理注解

  1. @Component

    • 作用:通用组件注解,标记类为 Spring Bean。
    • 衍生注解
      • @Service(服务层)、@Repository(数据层)、@Controller(控制层)。
  2. @Configuration

    • 作用:定义配置类,替代 XML 配置文件。
    • 示例
      java">@Configuration
      public class AppConfig {@Beanpublic DataSource dataSource() { ... }
      }
      
  3. @Bean

    • 作用:在配置类中定义一个 Bean。
    • 示例
      java">@Bean
      public RestTemplate restTemplate() {return new RestTemplate();
      }
      
  4. @Autowired

    • 作用:自动注入依赖的 Bean(按类型匹配)。
    • 示例
      java">@Service
      public class UserService {@Autowiredprivate UserRepository repository;
      }
      
  5. @Qualifier

    • 作用:按名称指定注入的 Bean(解决多个同类型 Bean 的冲突)。
    • 示例
      java">@Autowired
      @Qualifier("mysqlDataSource")
      private DataSource dataSource;
      

四、属性注入注解

  1. @Value

    • 作用:注入单个属性值(支持 SpEL 表达式)。
    • 示例
      java">@Value("${app.name}")
      private String appName;
      
  2. @ConfigurationProperties

    • 作用:批量绑定配置文件属性到对象。
    • 示例
      java">@ConfigurationProperties(prefix = "app.datasource")
      public class DataSourceProperties {private String url;// getters/setters
      }
      

五、条件注解

  1. @ConditionalOnProperty

    • 作用:根据配置属性决定是否加载 Bean。
    • 示例
      java">@ConditionalOnProperty(name = "feature.enabled", havingValue = "true")
      @Bean
      public Feature feature() { ... }
      
  2. @ConditionalOnClass/@ConditionalOnMissingClass

    • 作用:根据类是否存在决定是否加载 Bean。

六、事务与异步注解

  1. @Transactional

    • 作用:声明方法需要事务管理。
    • 示例
      java">@Service
      public class UserService {@Transactionalpublic void updateUser(User user) { ... }
      }
      
  2. @Async

    • 作用:异步执行方法(需启用异步支持)。
    • 示例
      java">@Async
      public void sendEmailAsync() { ... }
      

七、测试注解

  1. @SpringBootTest

    • 作用:启动完整应用上下文进行集成测试。
    • 示例
      java">@SpringBootTest
      public class UserServiceTest { ... }
      
  2. @MockBean

    • 作用:在测试中模拟一个 Bean。
    • 示例
      java">@MockBean
      private UserRepository mockRepo;
      

八、其他实用注解

  1. @Profile

    • 作用:根据环境(如 devprod)加载 Bean。
    • 示例
      java">@Profile("dev")
      @Bean
      public DataSource devDataSource() { ... }
      
  2. @Scheduled

    • 作用:定义定时任务。
    • 示例
      java">@Scheduled(cron = "0 0 * * * ?")
      public void reportDaily() { ... }
      

总结

  • 核心注解@SpringBootApplication 是入口,自动配置和组件扫描是核心。
  • Web 开发@RestController@RequestMapping 是构建 RESTful API 的基础。
  • Bean 管理@Component@Service 等注解简化了依赖注入。
  • 属性绑定@ConfigurationProperties 适合批量配置,@Value 适合单值注入。

根据实际需求选择合适的注解,可大幅提升开发效率!


http://www.ppmy.cn/ops/166082.html

相关文章

黑马JUC学习笔记-上

1.进程与线程 1.进程与线程的概念 2.并行和并发 并发 操作系统的任务调度器可以在同一时间应对多件事情 时间片轮转 每个线程都有一个时间片 在一个时间片内如果线程未执行完毕会被暂停 然后将下一条将要执行的指令存在程序计数器上&#xff08;类似于存档&#xff09;然后…

python+flask实现360全景图和stl等多种格式模型浏览

1. 安装依赖 pip install flask 2. 创建Flask应用 创建一个基本的Flask应用&#xff0c;并设置路由来处理不同的文件类型。 from flask import Flask, render_template, send_from_directory app Flask(__name__) # 设置静态文件路径 app.static_folder static app.r…

深搜专题9:取数游戏

输入描述 第一行有一个正整数 T&#xff0c;表示了有 T 组数据。 对于每一组数据&#xff0c;第一行有两个正整数 N 和 M&#xff0c;表示了数字矩阵为 N 行 M 列。 接下来 N 行&#xff0c;每行 M 个非负整数&#xff0c;描述了这个数字矩阵。 对于20%的数据&#xff0c;1…

JVM调优关注的核心指标?

博主介绍&#xff1a;✌全网粉丝5W&#xff0c;全栈开发工程师&#xff0c;从事多年软件开发&#xff0c;在大厂呆过。持有软件中级、六级等证书。可提供微服务项目搭建与毕业项目实战&#xff0c;博主也曾写过优秀论文&#xff0c;查重率极低&#xff0c;在这方面有丰富的经验…

新疆美女演员吾热叶提正式加入创星演员出道计划,开启演艺事业新篇章

2月25日&#xff0c;演员吾热叶提正式加入“创星演员出道计划”&#xff0c;不仅得到参演都市爱情喜剧《和我结婚吧》角色的机会&#xff0c;还获得网剧《一念逍遥》的出演机会&#xff0c;自此开启全新影视之路。作为拥有无限潜力的演员&#xff0c;相信吾热叶提能凭借自身实力…

vue3 elementUi table自由渲染组件

文章目录 前言CustomTable如何使用tableColumn 属性h函数创建原生元素创建组件动态生成 前言 elementui中的table组件&#xff0c;表格中想要自由地渲染内容&#xff0c;是一种比较麻烦的事情&#xff0c;比如你表格中想要某一列插入一个button按钮&#xff0c;是不是要用插槽…

CSS元素层叠顺序规则

CSS元素层叠顺序规则 看图说话总结: background/borderz-index(<0)blockfloatinline/inline-blockz-index(0,auto)z-index (>0)

【CentOS】搭建Radius服务器

目录 背景简介&#xff1a;Radius是什么&#xff1f;Radius服务器验证原理搭建Radius服务器环境信息yum在线安装配置FreeRADIUS相关文件clients.conf文件users文件重启服务 验证 参考链接 背景 在项目中需要用到Radius服务器作为数据库代理用户的外部验证服务器&#xff0c;做…