一、核心注解(Core Annotations)
@SpringBootApplication:标记主类,启用自动配置和组件扫描。
@Component:通用组件,自动扫描注入 Spring 容器。
@Service:业务逻辑层组件。
@Repository:数据访问层组件,自动处理异常。
@Configuration:声明配置类,替代 XML 配置。
@Bean:在配置类中定义一个 Bean。
@ComponentScan:指定 Spring 要扫描的包路径。
@PropertySource:加载外部属性文件。
@Value:注入属性值。
@Autowired:自动装配 Bean。
@Qualifier:配合 @Autowired 解决多个同类型 Bean 冲突。
@Primary:标记首选 Bean。
@Scope:定义 Bean 的作用域(如 prototype、singleton)。
@Lazy:延迟初始化 Bean。
@Profile:根据环境激活配置。
二、Web 相关(Web & REST)
@RestController:组合 @Controller + @ResponseBody。
@Controller:定义控制器类,返回视图名称。
@RequestMapping:映射请求 URL 到类或方法。
@GetMapping:映射 GET 请求。
@PostMapping:映射 POST 请求。
@PutMapping:映射 PUT 请求。
@DeleteMapping:映射 DELETE 请求。
@PatchMapping:映射 PATCH 请求。
@PathVariable:获取 URL 中的变量。
@RequestParam:绑定请求参数。
@RequestBody:将请求体转为对象。
@ResponseBody:将返回值直接写入 HTTP 响应体。
@RequestHeader:获取请求头信息。
@CookieValue:获取 Cookie 值。
@SessionAttribute:从会话中获取属性。
@CrossOrigin:允许跨域请求。
@ResponseStatus:设置响应状态码。
@ExceptionHandler:处理控制器内异常。
@ControllerAdvice:全局异常处理器。
@RestControllerAdvice:结合 @ControllerAdvice 和 @ResponseBody。
@Valid:触发对 Bean 的校验。
@InitBinder:用于自定义数据绑定与验证规则。
三、数据访问(Data Access / JPA / MyBatis)
@Entity:JPA 实体类。
@Table:指定实体对应的数据库表名。
@Id:标识主键字段。
@GeneratedValue:主键自动生成策略。
@Column:映射字段到数据库列。
@Transient:忽略该字段持久化。
@OneToOne:一对一关联。
@OneToMany:一对多关联。
@ManyToOne:多对一关联。
@ManyToMany:多对多关联。
@JoinColumn:指定外键字段。
@JoinTable:多对多关系中的连接表。
@Query:自定义 JPQL 或原生 SQL 查询。
@Modifying:执行更新操作。
@Transactional:声明事务边界。
@EnableJpaRepositories:启用 JPA Repository 扫描。
@RepositoryRestResource:暴露 Repository 为 REST 接口。
@Select:MyBatis 查询注解。
@Insert:MyBatis 插入注解。
@Update:MyBatis 更新注解。
@Delete:MyBatis 删除注解。
@Options:MyBatis 操作选项,如生成主键。
@Results:结果映射。
@ResultMap:引用已有的结果映射。
@Param:命名参数传递给 SQL。
@Mapper:标记接口为 MyBatis Mapper。
@MapperScan:启用 MyBatis Mapper 扫描。
@EnableTransactionManagement:启用事务管理支持。
四、安全相关(Security)
@EnableWebSecurity:启用 Spring Security。
@EnableGlobalMethodSecurity:启用方法级安全控制。
@PreAuthorize:前置权限判断。
@PostAuthorize:后置权限判断。
@Secured:基于角色的访问控制。
@RolesAllowed:Java EE 标准权限注解。
@AuthenticationPrincipal:获取认证用户信息。
@EnableOAuth2Sso:启用 OAuth2 单点登录。
@EnableResourceServer:启用资源服务器。
@EnableAuthorizationServer:启用授权服务器。
五、测试相关(Testing)
@RunWith(SpringRunner.class):JUnit 测试集成 Spring 上下文。
@SpringBootTest:启动完整 Spring Boot 应用上下文。
@DataJpaTest:仅加载 JPA 相关配置。
@WebMvcTest:仅测试 Web 层(控制器)。
@MockBean:模拟 Bean。
@InjectMocks:注入被测试的类。
@Before:JUnit 测试前准备。
@After:JUnit 测试后清理。
@Test:JUnit 测试方法。
@DataMongoTest:仅加载 MongoDB 相关配置。
@RestClientTest:测试 REST 客户端。
@SpringBootTest(webEnvironment = WebEnvironment.RANDOM_PORT):启动随机端口 Web 环境。
@DirtiesContext:测试后重置应用上下文。
@Sql:执行 SQL 脚本。
@DataRedisTest:仅加载 Redis 配置。
六、其他常用注解
@ConditionalOnClass:当类路径存在某个类时生效。
@ConditionalOnMissingBean:当容器中没有该 Bean 时生效。
@ConditionalOnProperty:根据配置属性是否设置决定是否加载。
@ConditionalOnExpression:根据 SpEL 表达式决定是否加载。
@RefreshScope:配合 Spring Cloud Config 支持动态刷新配置。
@EnableAsync:启用异步方法调用。
@Async:标记异步方法。
@Scheduled:定时任务注解。
@EnableSwagger2:启用 Swagger 文档。
@OpenAPIDefinition:OpenAPI 文档定义(Swagger 3+)。
作者:程序员晓凡
链接:https://juejin.cn/post/7520461940272775231
来源:稀土掘金