🌱 Spring Boot 常用注解速查表
📁 分类整理 + 应用说明,适用于日常开发参考。
🔧 核心注解(IOC/AOP)
| 注解 | 作用 | 应用层 |
|---|---|---|
| @Component | 标识一个通用组件,注册到 Spring 容器 | 所有组件 |
| @Service | 表示服务层组件(业务逻辑) | Service |
| @Repository | 表示 DAO 层组件,带异常转换功能 | Repository |
| @Controller | 表示控制器组件,返回视图 | Web 控制层 |
| @RestController | @Controller + @ResponseBody,返回 JSON | Web API |
| @Autowired | 按类型注入 Bean | 所有层 |
| @Resource | 默认按名称注入 Bean | 所有层 |
| @Value("${key}") | 注入配置文件中的属性值 | 所有层 |
| @PostConstruct | Bean 初始化后执行方法 | 所有层 |
| @PreDestroy | Bean 销毁前执行方法 | 所有层 |
🌐 Web 开发相关(Spring MVC)
| 注解 | 作用 |
|---|---|
| @RequestMapping | 映射请求路径(支持 GET/POST 等) |
| @GetMapping / @PostMapping | 更具体的请求方法映射 |
| @PathVariable | 获取 URL 中的路径变量 |
| @RequestParam | 获取请求参数(?key=value) |
| @RequestBody | 接收 JSON 请求体并映射为对象 |
| @ResponseBody | 将方法返回值转为 JSON |
| @ModelAttribute | 用于表单绑定参数到对象 |
| @CrossOrigin | 支持跨域请求 |
| @SessionAttributes | 设置需要存储到 session 的属性 |
⚙️ 配置类 / 自动装配相关
| 注解 | 作用 |
|---|---|
| @SpringBootApplication | 启动类核心注解(包含 3 个注解) |
| @Configuration | 定义配置类(相当于 XML 配置) |
| @Bean | 将方法返回对象注册为 Bean |
| @ComponentScan | 指定扫描组件的基础包 |
| @EnableAutoConfiguration | 启用 Spring Boot 自动配置 |
| @EnableConfigurationProperties | 开启配置绑定支持 |
| @ConfigurationProperties(prefix="...") | 将配置文件的属性注入到 Java 类 |
🗃️ 数据访问(JPA)
| 注解 | 作用 |
|---|---|
| @Entity | 定义实体类 |
| @Table(name="...") | 指定数据库表名 |
| @Id | 定义主键 |
| @GeneratedValue | 主键生成策略 |
| @Column | 配置列名、约束等 |
| @Repository | 标注数据访问层类 |
🧪 测试相关
| 注解 | 作用 |
|---|---|
| @SpringBootTest | 启动整个 Spring Boot 环境进行测试 |
| @WebMvcTest | 测试 Controller 层(不启动整个容器) |
| @DataJpaTest | 测试 JPA 数据层 |
| @MockBean | 向测试环境注入 mock 的 Bean |
💡 其他实用注解
| 注解 | 作用 |
|---|---|
| @Primary | 标记为首选注入 Bean(多个 Bean 时) |
| @ConditionalOnProperty | 根据配置文件条件启用 Bean |
| @Slf4j | 自动注入日志对象(需 lombok) |
🧭 建议组合使用(常见套路)
// 启动类
@SpringBootApplication
public class MyApp {
public static void main(String[] args) {
SpringApplication.run(MyApp.class, args);
}
}
// Controller 示例
@RestController
@RequestMapping("/api")
public class UserController {
@Autowired
private UserService userService;
@GetMapping("/users/{id}")
public User getUser(@PathVariable Long id) {
return userService.getById(id);
}
}