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

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

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


一、核心注解

  1. @SpringBootApplication

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

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

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

二、Web 开发注解

  1. @RestController

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

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

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

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

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

三、Bean 管理注解

  1. @Component

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

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

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

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

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

四、属性注入注解

  1. @Value

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

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

五、条件注解

  1. @ConditionalOnProperty

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

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

六、事务与异步注解

  1. @Transactional

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

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

七、测试注解

  1. @SpringBootTest

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

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

八、其他实用注解

  1. @Profile

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

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

总结

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

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


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

相关文章:

  • Spring Boot项目中集成sa-token实现认证授权和OAuth 2.0第三方登录
  • 50.HarmonyOS NEXT 登录模块开发教程(四):状态管理与数据绑定
  • 网络安全工具nc(NetCat)
  • Android7上移植I2C-tools
  • 探索 PyTorch 中的 ConvTranspose2d 及其转置卷积家族
  • SolidWorks中文完整版+教程百度云资源分享
  • 【JavaScript 】1. 什么是 Node.js?(JavaScript 服务器环境)
  • 【Flutter】第一次textEditingController.text获取到空字符串
  • 医院本地化DeepSeek R1对接混合数据库技术实战方案研讨
  • 性能优化:服务器性能影响网站加载速度分析
  • 如何从零编写自己的.NET IoT设备驱动
  • 第54天:Web攻防-SQL注入数据类型参数格式JSONXML编码加密符号闭合复盘报告
  • JVM 详解:Java 虚拟机的核心机制
  • k8s中的控制器的使用
  • DeepSeek 助力 Vue3 开发:打造丝滑的表格(Table)之添加列宽调整功能,示例Table14_06带搜索功能的固定表头表格
  • Linux C++ 编程死锁详解
  • MyBatis一对多查询方式
  • uniapp实现 uview1 u-button的水波纹效果
  • Jump Desktop for Mac v9.0.94 优秀的远程桌面连接工具 支持M、Intel芯片
  • 数据结构——顺序表seqlist