优秀的编程知识分享平台

网站首页 > 技术文章 正文

SpringBoot——100种常用注解(分类版)

nanyue 2025-03-13 18:35:25 技术文章 29 ℃

一、核心注解

@SpringBootApplication

  1. 组合注解:@Configuration + @EnableAutoConfiguration + @ComponentScan
  2. 启动 Spring Boot 应用的主类注解。

@Configuration

  1. 标记类为配置类,替代 XML 配置文件。

@ComponentScan

  1. 自动扫描组件,默认扫描当前包及其子包。

@Import

  1. 导入其他配置类。

@PropertySource

  1. 加载外部配置文件(如 .properties 或 .yml)。

二、依赖注入(DI)

@Autowired

  1. 自动注入依赖(默认按类型匹配)。

@Qualifier

  1. 配合 @Autowired 指定具体 Bean 名称。

@Component

  1. 通用组件注解,标记为 Spring 管理的 Bean。

@Service

  1. 标记服务层组件。

@Repository

  1. 标记数据访问层(DAO)组件,自动处理数据库异常。

@Controller

  1. 标记 Web 控制器(MVC)。

@RestController

  1. @Controller + @ResponseBody,用于 RESTful API。

@Scope

  1. 定义 Bean 的作用域(如 singleton、prototype)。

三、配置与 Bean 管理

@Bean

  1. 在配置类中定义 Bean 实例。

@Value

  1. 注入配置文件中的值(如 @Value("${app.name}"))。

@ConfigurationProperties

  1. 将配置文件属性绑定到 Java 对象。

@Profile

  1. 指定 Bean 在特定环境(如 dev、prod)生效。

@Lazy

  1. 延迟初始化 Bean。

@Primary

  1. 指定优先注入的 Bean。

四、Web 开发(MVC)

@RequestMapping

  1. 映射 HTTP 请求到控制器方法。

@GetMapping

  1. 处理 GET 请求(替代 @RequestMapping(method=GET))。

@PostMapping

  1. 处理 POST 请求。

@PutMapping

  1. 处理 PUT 请求。

@DeleteMapping

  1. 处理 DELETE 请求。

@PathVariable

  1. 获取 URL 路径中的变量(如 /user/{id})。

@RequestParam

  1. 获取请求参数(如 ?name=xxx)。

@RequestBody

  1. 接收请求体中的 JSON/XML 数据。

@ResponseBody

  1. 返回数据而非视图(如 JSON)。

@ModelAttribute

  1. 绑定请求参数到模型对象。

@CrossOrigin

  1. 允许跨域请求。

@ExceptionHandler

  1. 处理控制器内的异常。

@ControllerAdvice

  1. 全局异常处理。

五、数据访问(JPA/Hibernate)

@Entity

  1. 标记 JPA 实体类。

@Table

  1. 指定数据库表名。

@Id

  1. 标记主键字段。

@GeneratedValue

  1. 主键生成策略(如自增)。

@Column

  1. 定义数据库列属性。

@OneToMany

  1. 定义一对多关系。

@ManyToOne

  1. 定义多对一关系。

@JoinColumn

  1. 指定外键列名。

@Transactional

  1. 声明事务管理。

@Query

  1. 自定义 JPQL 或 SQL 查询。

@Modifying

  1. 标记更新或删除操作。

六、验证(Validation)

@Valid

  1. 启用参数校验。

@NotNull

  1. 字段不能为 null。

@Size

  1. 字符串/集合长度限制。

@Email

  1. 校验邮箱格式。

@Pattern

  1. 正则表达式校验。

@Min/@Max

  1. 数值范围限制。

七、条件注解(Conditional)

@ConditionalOnProperty

  1. 当配置属性存在时生效。

@ConditionalOnClass

  1. 当类路径存在某个类时生效。

@ConditionalOnMissingBean

  1. 当容器中不存在指定 Bean 时生效。

@ConditionalOnWebApplication

  1. 仅在 Web 应用环境下生效。

八、AOP(面向切面编程)

@Aspect

  1. 定义切面类。

@Pointcut

  1. 定义切点表达式。

@Before

  1. 前置通知。

@After

  1. 后置通知。

@Around

  1. 环绕通知。

@AfterThrowing

  1. 异常通知。

九、缓存(Caching)

@EnableCaching

  1. 启用缓存支持。

@Cacheable

  1. 缓存方法返回值。

@CacheEvict

  1. 清除缓存。

@CachePut

  1. 更新缓存。

十、定时任务(Scheduling)

@EnableScheduling

  1. 启用定时任务。

@Scheduled

  1. 定义任务执行时间(如 cron 表达式)。

十一、测试(Testing)

@SpringBootTest

  1. 标记 Spring Boot 集成测试类。

@Test

  1. JUnit 测试方法。

@MockBean

  1. 注入 Mock 对象。

@DataJpaTest

  1. 仅测试 JPA 组件。

@WebMvcTest

  1. 仅测试 Web 层。

十二、安全(Security)

@EnableWebSecurity

  1. 启用 Spring Security。

@PreAuthorize

  1. 方法执行前的权限校验。

@PostAuthorize

  1. 方法执行后的权限校验。

@Secured

  1. 基于角色的访问控制。

@WithMockUser

  1. 测试时模拟用户登录。

十三、异步处理

@EnableAsync

  1. 启用异步方法支持。

@Async

  1. 标记异步执行方法。

十四、消息队列(如 RabbitMQ)

@EnableRabbit

  1. 启用 RabbitMQ 支持。

@RabbitListener

  1. 监听消息队列。

@RabbitHandler

  1. 处理消息的方法。

十五、Spring Cloud

@EnableEurekaClient

  1. 注册为 Eureka 客户端。

@EnableFeignClients

  1. 启用 Feign 客户端。

@FeignClient

  1. 定义 Feign 远程调用接口。

@LoadBalanced

  1. 启用负载均衡。

@HystrixCommand

  1. 定义熔断方法(Hystrix)。

十六、Actuator 监控

@Endpoint

  1. 定义自定义监控端点。

@ReadOperation

  1. 监控端点的读操作。

@WriteOperation

  1. 监控端点的写操作。

十七、国际化(i18n)

@MessageSource

  1. 定义国际化消息源。

十八、WebSocket

@EnableWebSocket

  1. 启用 WebSocket 支持。

@MessageMapping

  1. 处理 WebSocket 消息。

十九、工具类注解

@UtilityClass

  1. Lombok 工具类注解(构造方法私有化)。

@Slf4j

  1. Lombok 自动生成日志对象。

@Data

  1. Lombok 自动生成 Getter/Setter/ToString 等方法。

@Builder

  1. Lombok 生成 Builder 模式代码。

@AllArgsConstructor

  1. Lombok 生成全参构造方法。

@NoArgsConstructor

  1. Lombok 生成无参构造方法。

二十、其他常用注解

@Deprecated

  1. 标记方法/类已过时。

@SuppressWarnings

  1. 抑制编译器警告。

@FunctionalInterface

  1. 标记函数式接口(如 Lambda 表达式)。

总结

  • 实际开发中,常用注解约 50-70 个,需结合具体场景灵活使用。
  • 优先掌握核心注解(如 @SpringBootApplication、@RestController、@Autowired、@Transactional)。

Tags:

最近发表
标签列表