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 开发、数据访问到高级功能(如事务、异步任务、缓存)的各个方面。开发者可根据需求选择合适的注解,快速构建高效的应用。
2万+

被折叠的 条评论
为什么被折叠?



