大家好,我是晓凡。
以下是 熬夜整理的Spring Boot 中最常用的 100 个注解(按功能分类整理),适用于配置、控制层、数据访问、安全、测试等常见场景:
🧱 一、核心注解(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+)。
✅ 提示:
- 实际开发中并不需要掌握全部,根据项目需求选择使用。
- 大部分注解来源于 Spring Framework、Spring Boot、Spring Data、Spring Security 等模块。
- 如果你需要具体某个注解的详细说明或示例,可以告诉我。
希望对您有所帮助,我们下期再见ヾ(•ω•`)o