Spring Boot 开发 专属注解大全
一、核心启动类注解
-
@SpringBootApplication
- 作用: 标识 Spring Boot 应用的主类,组合注解,包含以下三个核心功能:
@Configuration
: 声明当前类为配置类。@EnableAutoConfiguration
: 启用自动配置机制。@ComponentScan
: 自动扫描当前包及其子包的组件。
- 示例:
@SpringBootApplication public class MyApp { public static void main(String[] args) { SpringApplication.run(MyApp.class, args); } }
- 作用: 标识 Spring Boot 应用的主类,组合注解,包含以下三个核心功能:
-
@SpringBootConfiguration
- 作用: 标识配置类,替代 XML 配置文件,支持 Java 代码配置。
-
@EnableAutoConfiguration
- 作用: 启用 Spring Boot 的自动配置,根据依赖和项目配置自动装配 Bean。
-
@ComponentScan
- 作用: 自动扫描指定包及其子包下的组件(如
@Service
,@Repository
等)。 - 参数:
basePackages
: 指定扫描的基础包。excludeFilters
: 排除特定组件。
- 作用: 自动扫描指定包及其子包下的组件(如
二、Web 开发相关注解
-
@RestController
- 作用: 组合注解,等价于
@Controller + @ResponseBody
,用于构建 RESTful API。 - 示例:
@RestController @RequestMapping("/api/users") public class UserController { @GetMapping("/{id}") public User getUser(@PathVariable Long id) { return userService.findById(id); } }
- 作用: 组合注解,等价于
-
@RequestMapping
- 作用: 映射 HTTP 请求到处理方法,支持 GET、POST、PUT、DELETE 等方法。
- 参数:
value/path
: 请求路径。method
: HTTP 方法(如RequestMethod.GET
)。produces/consumes
: 指定响应/请求的媒体类型(如application/json
)。
-
@GetMapping
,@PostMapping
,@PutMapping
,@DeleteMapping
- 作用: 分别处理 HTTP GET、POST、PUT、DELETE 请求,是
@RequestMapping
的快捷方式。
- 作用: 分别处理 HTTP GET、POST、PUT、DELETE 请求,是
-
@RequestParam
- 作用: 绑定请求参数到方法参数。
- 参数:
value/name
: 参数名。required
: 是否必需(默认true
)。defaultValue
: 默认值。
-
@PathVariable
- 作用: 绑定 URL 路径中的变量到方法参数。
- 示例:
@GetMapping("/users/{id}") public User getUser(@PathVariable Long id) { return userService.findById(id); }
-
@RequestBody
- 作用: 将 HTTP 请求体绑定到方法参数(如 JSON 数据)。
- 示例:
@PostMapping("/users") public User createUser(@RequestBody User user) { return userService.save(user); }
-
@ResponseBody
- 作用: 将方法返回值直接写入 HTTP 响应体(通常与
@Controller
配合使用)。
- 作用: 将方法返回值直接写入 HTTP 响应体(通常与
-
@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); } }
- 作用: 全局异常处理,结合
三、依赖注入相关注解
-
@Autowired
- 作用: 自动注入依赖对象,支持字段、构造方法、Setter 方法。
- 示例:
@Service public class UserService { private final UserRepository userRepository; @Autowired public UserService(UserRepository userRepository) { this.userRepository = userRepository; } }
-
@Qualifier
- 作用: 当存在多个同类型 Bean 时,指定注入的具体 Bean。
- 示例:
@Autowired @Qualifier("mainDataSource") private DataSource dataSource;
-
@Resource
- 作用: 按名称注入依赖(JSR-250 标准),默认按名称而非类型。
-
@Value
- 作用: 注入配置文件中的属性值。
- 示例:
@Value("${app.page.size}") private int pageSize;
四、数据访问相关注解
-
@Repository
- 作用: 标识数据访问层组件(DAO)。
-
@Entity
- 作用: 标识 JPA 实体类。
-
@Table
- 作用: 映射实体类到数据库表。
- 参数:
name
: 表名。schema
: 模式名。
-
@Id
- 作用: 标识实体类的主键字段。
-
@GeneratedValue
- 作用: 指定主键生成策略(如自增、序列等)。
-
@Column
- 作用: 映射实体字段到数据库列。
- 参数:
name
: 列名。nullable
: 是否允许为空。length
: 列长度。
-
@Transactional
- 作用: 声明事务管理。
- 参数:
propagation
: 事务传播行为。isolation
: 事务隔离级别。readOnly
: 是否只读。
五、配置相关注解
-
@PropertySource
- 作用: 加载指定的属性文件(如
application.properties
)。 - 示例:
@Configuration @PropertySource("classpath:custom.properties") public class AppConfig { // ... }
- 作用: 加载指定的属性文件(如
-
@ConfigurationProperties
- 作用: 批量绑定配置属性到对象。
- 示例:
@ConfigurationProperties(prefix = "app") public class AppConfig { private String name; private int version; // getters/setters }
-
@Profile
- 作用: 指定组件在特定环境下激活(如
dev
,prod
)。 - 示例:
@Profile("dev") @Service public class DevService { // ... }
- 作用: 指定组件在特定环境下激活(如
六、条件装配注解
-
@ConditionalOnProperty
- 作用: 根据配置属性值决定是否装配 Bean。
-
@ConditionalOnClass
- 作用: 当类路径中存在指定类时装配 Bean。
-
@ConditionalOnMissingBean
- 作用: 当容器中不存在指定 Bean 时装配。
七、事务管理注解
@EnableTransactionManagement
- 作用: 启用 Spring 的事务管理。
八、异步与定时任务注解
-
@Async
- 作用: 标记方法为异步执行。
-
@EnableAsync
- 作用: 启用异步方法支持。
-
@Scheduled
- 作用: 定义定时任务。
- 参数:
cron
: Cron 表达式。
- 示例:
@Component public class MyTask { @Scheduled(cron = "0 0/5 * * * ?") public void execute() { // 每5分钟执行 } }
-
@EnableScheduling
- 作用: 启用定时任务支持。
九、缓存相关注解
-
@Cacheable
- 作用: 缓存方法结果。
-
@CacheEvict
- 作用: 清除缓存。
-
@EnableCaching
- 作用: 启用缓存支持。
十、测试相关注解
-
@SpringBootTest
- 作用: 启动测试上下文,用于集成测试。
-
@MockBean
- 作用: 模拟 Bean,替换容器中的真实 Bean。
十一、Actuator 监控注解
@Endpoint
- 作用: 自定义监控端点。
- 示例:
@Component @Endpoint(id = "features") public class FeaturesEndpoint { @ReadOperation public Map<String, Object> features() { return Map.of("featureA", true, "featureB", false); } }
十二、JSON 处理注解
-
@JsonIgnore
- 作用: 忽略字段的 JSON 序列化。
-
@JsonFormat
- 作用: 格式化日期/时间字段。
十三、日志与工具注解
- Lombok 注解(需引入 Lombok 依赖):
@Data
: 自动生成 getter/setter、toString()
等。@Slf4j
: 自动生成日志对象。
十四、校验注解
-
@Valid
- 作用: 触发参数校验。
-
@NotNull
,@Size
等- 作用: 校验字段值(如非空、长度限制)。
十五、API 文档注解
- Swagger 注解(需引入 SpringDoc 依赖):
@Api
: 标识 API 控制器。@ApiOperation
: 描述 API 方法。
总结
Spring Boot 通过丰富的注解简化了配置和开发流程,上述注解覆盖了从核心启动、Web 开发、数据访问到高级功能(如事务、异步任务、缓存)的各个方面。开发者可根据需求选择合适的注解,快速构建高效的应用。