[特殊字符] Spring Boot 常用注解全解析:20 个高频注解 + 使用场景实例

一文掌握 Spring Boot 中最常用的 20 个注解,涵盖开发、配置、Web、数据库、测试等场景,配合示例讲解,一站式掌握!


📌 一、核心配置类注解

1. @SpringBootApplication

  • 作用 :标记为 Spring Boot 应用的入口类,包含了 @Configuration@EnableAutoConfiguration@ComponentScan
  • 使用场景:主启动类上唯一标注一次。
java 复制代码
@SpringBootApplication
public class MyApp {
    public static void main(String[] args) {
        SpringApplication.run(MyApp.class, args);
    }
}

🧩 二、组件注册相关注解

2. @Component

  • 作用:声明一个组件,交由 Spring 容器管理。
  • 使用场景:普通工具类、服务类等。
java 复制代码
@Component
public class MyUtil {
    // ...
}

3. @Service

  • 作用:声明业务逻辑层组件。
  • 区别 :语义上表示"服务类",本质还是 @Component
java 复制代码
@Service
public class UserService {
    // ...
}

4. @Repository

  • 作用:声明数据访问层组件,并支持自动异常转换。
  • 使用场景:操作数据库的 DAO 类。
java 复制代码
@Repository
public class UserDao {
    // ...
}

5. @Controller

  • 作用:声明控制器类,处理前端请求。
  • 配套注解 :配合 @RequestMapping@GetMapping 等使用。
java 复制代码
@Controller
public class HomeController {
    @GetMapping("/")
    public String home() {
        return "index";
    }
}

6. @RestController

  • 作用 :相当于 @Controller + @ResponseBody,返回 JSON 数据。
  • 使用场景:用于 RESTful API。
java 复制代码
@RestController
@RequestMapping("/api")
public class UserController {
    @GetMapping("/users")
    public List<User> getUsers() {
        return userService.getAll();
    }
}

🌐 三、请求映射注解

7. @RequestMapping

  • 作用:用于类或方法上,通用映射。
  • 支持:GET、POST、PUT、DELETE等方式。
java 复制代码
@RequestMapping(value = "/user", method = RequestMethod.GET)
public User getUser() {
    return user;
}

8. @GetMapping / @PostMapping / @PutMapping / @DeleteMapping

  • 作用:简化的 HTTP 方法映射注解。
  • 建议:优先使用这些更语义化的注解。
java 复制代码
@GetMapping("/user/{id}")
public User findById(@PathVariable Long id) {
    return userService.find(id);
}

💾 四、依赖注入注解

9. @Autowired

  • 作用:自动注入 Spring 管理的 Bean。
  • 推荐:构造器注入代替字段注入。
java 复制代码
@Autowired
private UserService userService;

10. @Qualifier

  • 作用:解决多个 Bean 注入时的冲突。
  • 配合@Autowired 使用。
java 复制代码
@Autowired
@Qualifier("myImpl")
private MyService service;

🏷️ 五、参数绑定注解

11. @RequestParam

  • 作用:绑定 URL 查询参数。
  • 默认:支持设置是否必须。
java 复制代码
@GetMapping("/search")
public List<User> search(@RequestParam String keyword) {
    return userService.search(keyword);
}

12. @PathVariable

  • 作用:绑定路径中的变量。
java 复制代码
@GetMapping("/user/{id}")
public User getUser(@PathVariable Long id) {
    return userService.getById(id);
}

13. @RequestBody

  • 作用:接收 JSON 数据,反序列化为对象。
java 复制代码
@PostMapping("/user")
public void saveUser(@RequestBody User user) {
    userService.save(user);
}

🔒 六、配置与环境注解

14. @Value

  • 作用 :读取 application.yml.properties 中的配置项。
java 复制代码
@Value("${server.port}")
private int port;

15. @Configuration

  • 作用:标记为配置类,等价于 XML 配置。
java 复制代码
@Configuration
public class AppConfig {
    @Bean
    public MyBean myBean() {
        return new MyBean();
    }
}

16. @Bean

  • 作用:向 Spring 容器注册一个 Bean。
  • 配合@Configuration 使用。
java 复制代码
@Bean
public RestTemplate restTemplate() {
    return new RestTemplate();
}

🧪 七、测试相关注解

17. @SpringBootTest

  • 作用:用于 Spring Boot 的集成测试。
java 复制代码
@SpringBootTest
public class UserServiceTest {
    @Autowired
    private UserService userService;
}

18. @MockBean

  • 作用:用于测试中替换某个 Bean,通常用于 Mock。
java 复制代码
@MockBean
private UserRepository userRepository;

✨ 八、数据校验注解(JSR-303)

19. @Valid / @Validated

  • 作用:用于校验请求参数是否合法。
  • 配套注解 :配合 @NotNull@Size 等使用。
java 复制代码
@PostMapping("/register")
public void register(@Valid @RequestBody User user) {
    // ...
}

🔄 九、事务管理注解

20. @Transactional

  • 作用:开启事务。
  • 常用属性rollbackFor, readOnly, propagation
java 复制代码
@Transactional(rollbackFor = Exception.class)
public void saveData() {
    // ...
}

✅ 总结表格:注解速查表

注解 类型 场景 特点
@SpringBootApplication 启动注解 启动类 三合一复合注解
@Component 通用组件 工具类等 可被扫描
@Service 业务组件 Service 层 本质是 @Component
@Repository DAO组件 数据访问 自动异常封装
@Controller Web 控制器 页面跳转 搭配模板引擎
@RestController API 控制器 返回 JSON = @Controller + @ResponseBody
@Autowired 注入 自动注入 构造/字段均可
@RequestMapping 请求映射 多 HTTP 方法 可用于类/方法
@GetMapping 请求映射 精准 HTTP 方法 推荐使用
@Value 配置读取 yml、prop 值注入 字符串解析
@Transactional 事务管理 Service 层 原子性保障
@Bean 手动注册 第三方类 自定义 Bean
@Valid / @Validated 参数校验 表单、实体 搭配校验注解
@SpringBootTest 测试注解 单元/集成测试 提供完整容器
@MockBean 测试 Mock 替换 Bean 使用 Mockito

📘 建议收藏:这些注解是你开发 Spring Boot 项目的"基本功",越熟练越高效!

如果你觉得有帮助,别忘了点赞、收藏和分享~

相关推荐
豆沙沙包?2 分钟前
2025年- H118-Lc86. 分隔链表(链表)--Java版
java·数据结构·链表
摆烂工程师9 分钟前
教你如何认证 Gemini 教育优惠的二次验证,薅个 1年的 Gemini Pro 会员
后端·程序员·gemini
绝无仅有24 分钟前
未来教育行业的 Go 服务开发解决方案与实践
后端·面试·github
A尘埃37 分钟前
智能工单路由系统(Java)
java·开发语言·智能工单
程序员爱钓鱼1 小时前
Go语言实战案例- 命令行参数解析器
后端·google·go
心在飞扬1 小时前
Redis 介绍与 Node.js 使用教程
后端
JosieBook1 小时前
【SpringBoot】21-Spring Boot中Web页面抽取公共页面的完整实践
前端·spring boot·python
milanyangbo2 小时前
“卧槽,系统又崩了!”——别慌,这也许是你看过最通俗易懂的分布式入门
分布式·后端·云原生·架构
失散132 小时前
分布式专题——1.1 Redis单机、主从、哨兵、集群部署
java·数据库·redis·分布式·架构
刘一说2 小时前
Linux调试命令速查:Java/微服务必备
java·linux·微服务