Spring Boot 开发 专属注解大全

Spring Boot 开发 专属注解大全

一、核心启动类注解
  1. @SpringBootApplication

    • 作用: 标识 Spring Boot 应用的主类,组合注解,包含以下三个核心功能:
      • @Configuration: 声明当前类为配置类。
      • @EnableAutoConfiguration: 启用自动配置机制。
      • @ComponentScan: 自动扫描当前包及其子包的组件。
    • 示例:
      @SpringBootApplication
      public class MyApp {
          public static void main(String[] args) {
              SpringApplication.run(MyApp.class, args);
          }
      }
      
  2. @SpringBootConfiguration

    • 作用: 标识配置类,替代 XML 配置文件,支持 Java 代码配置。
  3. @EnableAutoConfiguration

    • 作用: 启用 Spring Boot 的自动配置,根据依赖和项目配置自动装配 Bean。
  4. @ComponentScan

    • 作用: 自动扫描指定包及其子包下的组件(如 @Service, @Repository 等)。
    • 参数:
      • basePackages: 指定扫描的基础包。
      • excludeFilters: 排除特定组件。
二、Web 开发相关注解
  1. @RestController

    • 作用: 组合注解,等价于 @Controller + @ResponseBody,用于构建 RESTful API。
    • 示例:
      @RestController
      @RequestMapping("/api/users")
      public class UserController {
          @GetMapping("/{id}")
          public User getUser(@PathVariable Long id) {
              return userService.findById(id);
          }
      }
      
  2. @RequestMapping

    • 作用: 映射 HTTP 请求到处理方法,支持 GET、POST、PUT、DELETE 等方法。
    • 参数:
      • value/path: 请求路径。
      • method: HTTP 方法(如 RequestMethod.GET)。
      • produces/consumes: 指定响应/请求的媒体类型(如 application/json)。
  3. @GetMapping, @PostMapping, @PutMapping, @DeleteMapping

    • 作用: 分别处理 HTTP GET、POST、PUT、DELETE 请求,是 @RequestMapping 的快捷方式。
  4. @RequestParam

    • 作用: 绑定请求参数到方法参数。
    • 参数:
      • value/name: 参数名。
      • required: 是否必需(默认 true)。
      • defaultValue: 默认值。
  5. @PathVariable

    • 作用: 绑定 URL 路径中的变量到方法参数。
    • 示例:
      @GetMapping("/users/{id}")
      public User getUser(@PathVariable Long id) {
          return userService.findById(id);
      }
      
  6. @RequestBody

    • 作用: 将 HTTP 请求体绑定到方法参数(如 JSON 数据)。
    • 示例:
      @PostMapping("/users")
      public User createUser(@RequestBody User user) {
          return userService.save(user);
      }
      
  7. @ResponseBody

    • 作用: 将方法返回值直接写入 HTTP 响应体(通常与 @Controller 配合使用)。
  8. @ControllerAdvice

    • 作用: 全局异常处理,结合 @ExceptionHandler 使用。
    • 示例:
      @ControllerAdvice
      public class GlobalExceptionHandler {
          @ExceptionHandler(ResourceNotFoundException.class)
          public ResponseEntity<ErrorResponse> handleNotFound(ResourceNotFoundException ex) {
              ErrorResponse error = new ErrorResponse(404, ex.getMessage());
              return ResponseEntity.status(HttpStatus.NOT_FOUND).body(error);
          }
      }
      
三、依赖注入相关注解
  1. @Autowired

    • 作用: 自动注入依赖对象,支持字段、构造方法、Setter 方法。
    • 示例:
      @Service
      public class UserService {
          private final UserRepository userRepository;
      
          @Autowired
          public UserService(UserRepository userRepository) {
              this.userRepository = userRepository;
          }
      }
      
  2. @Qualifier

    • 作用: 当存在多个同类型 Bean 时,指定注入的具体 Bean。
    • 示例:
      @Autowired
      @Qualifier("mainDataSource")
      private DataSource dataSource;
      
  3. @Resource

    • 作用: 按名称注入依赖(JSR-250 标准),默认按名称而非类型。
  4. @Value

    • 作用: 注入配置文件中的属性值。
    • 示例:
      @Value("${app.page.size}")
      private int pageSize;
      
四、数据访问相关注解
  1. @Repository

    • 作用: 标识数据访问层组件(DAO)。
  2. @Entity

    • 作用: 标识 JPA 实体类。
  3. @Table

    • 作用: 映射实体类到数据库表。
    • 参数:
      • name: 表名。
      • schema: 模式名。
  4. @Id

    • 作用: 标识实体类的主键字段。
  5. @GeneratedValue

    • 作用: 指定主键生成策略(如自增、序列等)。
  6. @Column

    • 作用: 映射实体字段到数据库列。
    • 参数:
      • name: 列名。
      • nullable: 是否允许为空。
      • length: 列长度。
  7. @Transactional

    • 作用: 声明事务管理。
    • 参数:
      • propagation: 事务传播行为。
      • isolation: 事务隔离级别。
      • readOnly: 是否只读。
五、配置相关注解
  1. @PropertySource

    • 作用: 加载指定的属性文件(如 application.properties)。
    • 示例:
      @Configuration
      @PropertySource("classpath:custom.properties")
      public class AppConfig {
          // ...
      }
      
  2. @ConfigurationProperties

    • 作用: 批量绑定配置属性到对象。
    • 示例:
      @ConfigurationProperties(prefix = "app")
      public class AppConfig {
          private String name;
          private int version;
          // getters/setters
      }
      
  3. @Profile

    • 作用: 指定组件在特定环境下激活(如 dev, prod)。
    • 示例:
      @Profile("dev")
      @Service
      public class DevService {
          // ...
      }
      
六、条件装配注解
  1. @ConditionalOnProperty

    • 作用: 根据配置属性值决定是否装配 Bean。
  2. @ConditionalOnClass

    • 作用: 当类路径中存在指定类时装配 Bean。
  3. @ConditionalOnMissingBean

    • 作用: 当容器中不存在指定 Bean 时装配。
七、事务管理注解
  1. @EnableTransactionManagement
    • 作用: 启用 Spring 的事务管理。
八、异步与定时任务注解
  1. @Async

    • 作用: 标记方法为异步执行。
  2. @EnableAsync

    • 作用: 启用异步方法支持。
  3. @Scheduled

    • 作用: 定义定时任务。
    • 参数:
      • cron: Cron 表达式。
    • 示例:
      @Component
      public class MyTask {
          @Scheduled(cron = "0 0/5 * * * ?")
          public void execute() {
              // 每5分钟执行
          }
      }
      
  4. @EnableScheduling

    • 作用: 启用定时任务支持。
九、缓存相关注解
  1. @Cacheable

    • 作用: 缓存方法结果。
  2. @CacheEvict

    • 作用: 清除缓存。
  3. @EnableCaching

    • 作用: 启用缓存支持。
十、测试相关注解
  1. @SpringBootTest

    • 作用: 启动测试上下文,用于集成测试。
  2. @MockBean

    • 作用: 模拟 Bean,替换容器中的真实 Bean。
十一、Actuator 监控注解
  1. @Endpoint
    • 作用: 自定义监控端点。
    • 示例:
      @Component
      @Endpoint(id = "features")
      public class FeaturesEndpoint {
          @ReadOperation
          public Map<String, Object> features() {
              return Map.of("featureA", true, "featureB", false);
          }
      }
      
十二、JSON 处理注解
  1. @JsonIgnore

    • 作用: 忽略字段的 JSON 序列化。
  2. @JsonFormat

    • 作用: 格式化日期/时间字段。
十三、日志与工具注解
  1. Lombok 注解(需引入 Lombok 依赖):
    • @Data: 自动生成 getter/setter、toString() 等。
    • @Slf4j: 自动生成日志对象。
十四、校验注解
  1. @Valid

    • 作用: 触发参数校验。
  2. @NotNull, @Size

    • 作用: 校验字段值(如非空、长度限制)。
十五、API 文档注解
  1. Swagger 注解(需引入 SpringDoc 依赖):
    • @Api: 标识 API 控制器。
    • @ApiOperation: 描述 API 方法。

总结

Spring Boot 通过丰富的注解简化了配置和开发流程,上述注解覆盖了从核心启动、Web 开发、数据访问到高级功能(如事务、异步任务、缓存)的各个方面。开发者可根据需求选择合适的注解,快速构建高效的应用。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值