1211 字
6 分钟
Spring Boot的常用注解
Spring Boot的常用注解
Spring Boot 的核心设计理念是“约定优于配置”(Convention over Configuration)。它通过大量的注解极大地简化了传统 Spring 项目中繁琐的 XML 配置。
为了方便理解,我们可以将 Spring Boot 中最常用的注解按功能模块进行分类:
1. 核心与启动类注解
这些注解通常用于项目的入口类,负责启动整个 Spring 应用上下文。
@SpringBootApplication- 作用: 这是 Spring Boot 最核心的注解,通常标注在包含
main方法的主类上。 - 细节: 它实际上是一个复合注解,主要包含了以下三个重要注解:
@SpringBootConfiguration:等同于@Configuration,声明当前类是一个配置类。@EnableAutoConfiguration:Spring Boot 的灵魂。它会根据类路径(classpath)下的依赖自动配置 Spring 的各种 Bean(例如引入了 web 依赖,就自动配置 Tomcat 和 Spring MVC)。@ComponentScan:自动扫描当前包及其子包下的所有标记了@Component、@Service等注解的类,并将它们注册为 Bean。
- 作用: 这是 Spring Boot 最核心的注解,通常标注在包含
2. 依赖注入与组件扫描(Stereotype Annotations)
用于将类交给 Spring 容器(IoC)管理,以及在需要的地方注入这些类。
@Component- 作用: 泛指组件。当一个类不好归类到后面的某一层时,可以使用它,将其标记为 Spring 管理的 Bean。
@Service- 作用: 用于标注业务逻辑层(Service 层)的类。功能上与
@Component相同,但提供了更好的语义化,方便后续做面向切面编程(AOP)。
- 作用: 用于标注业务逻辑层(Service 层)的类。功能上与
@Repository- 作用: 用于标注数据访问层(DAO/Mapper 层)的类。它除了注册 Bean,还能将底层数据库的异常(如 SQLException)统一封装成 Spring 的数据访问异常。
@Controller- 作用: 用于标注控制层的类,负责处理由前端发起的 HTTP 请求,通常结合视图解析器(如 Thymeleaf、JSP)返回 HTML 页面。
@Autowired- 作用: 用于依赖注入。Spring 会自动寻找类型匹配的 Bean 注入到该字段、构造方法或 Setter 方法中。默认按类型(byType)装配。
@Qualifier- 作用: 当一个接口有多个实现类,
@Autowired无法判断该注入哪一个时,结合@Qualifier("beanName")可以指定按名称(byName)装配。
- 作用: 当一个接口有多个实现类,
3. Web 与 HTTP 请求映射
这些是在开发 RESTful API 或 Web 接口时每天都会用到的注解。
@RestController- 作用: 复合注解,等于
@Controller+@ResponseBody。标注在类上,表示该类的所有方法都会直接返回数据(通常是 JSON/XML),而不是返回视图页面。
- 作用: 复合注解,等于
@RequestMapping- 作用: 映射 HTTP 请求 URL 到具体的类或方法上。可以指定请求的路径、方法(GET/POST等)、请求头等。
@GetMapping/@PostMapping/@PutMapping/@DeleteMapping- 作用: 它们是
@RequestMapping的快捷方式,分别对应 HTTP 的 GET(查询)、POST(新增)、PUT(修改)、DELETE(删除)操作,使代码更简洁。
- 作用: 它们是
@PathVariable- 作用: 获取 URL 路径中的动态参数。
- 例子:
/users/{id},方法参数写@PathVariable("id") Long id即可拿到 URL 中的 id 值。
@RequestParam- 作用: 获取请求的查询参数(Query string)或表单数据。
- 例子:
/users?name=张三,方法参数写@RequestParam("name") String name。
@RequestBody- 作用: 用于接收 HTTP 请求体(Body)中的数据(通常是 JSON 格式),并自动反序列化为 Java 对象。常用于 POST/PUT 请求。
4. 配置与属性绑定
用于读取 application.properties 或 application.yml 中的配置信息。
@Configuration- 作用: 声明当前类是一个配置类(替代传统的 Spring XML 配置文件)。类中通常包含一个或多个
@Bean方法。
- 作用: 声明当前类是一个配置类(替代传统的 Spring XML 配置文件)。类中通常包含一个或多个
@Bean- 作用: 标注在方法上,表示该方法会返回一个对象,并且这个对象会被 Spring 容器管理起来。常用于引入第三方库的组件。
@Value- 作用: 注入配置文件中的简单属性值。
- 例子:
@Value("${server.port}")可以将配置文件中的端口号注入到变量中。
@ConfigurationProperties- 作用: 将配置文件中的某段带有相同前缀的配置项,批量映射到一个 Java 类的属性上。非常适合处理复杂的、结构化的配置数据。
5. 全局异常处理
优雅地处理系统抛出的各种异常。
@ControllerAdvice/@RestControllerAdvice- 作用: 这是一个增强型的 Controller。通常与
@ExceptionHandler配合使用,用于实现全局统一异常处理。@RestControllerAdvice会将返回结果自动转为 JSON。
- 作用: 这是一个增强型的 Controller。通常与
@ExceptionHandler- 作用: 标注在方法上,指定该方法拦截并处理特定类型的异常(例如
@ExceptionHandler(NullPointerException.class))。
- 作用: 标注在方法上,指定该方法拦截并处理特定类型的异常(例如
6. 测试相关
@SpringBootTest- 作用: 标注在测试类上。它会启动整个 Spring Boot 的应用上下文(相当于把项目跑起来),以便进行深度的集成测试。
@MockBean- 作用: 用于模拟(Mock)Spring 容器中的某个 Bean。在单元测试中,如果某个服务依赖了数据库调用或外部 API,可以使用它来创建一个虚拟的 Bean,从而隔离测试环境。
Spring Boot的常用注解
http://www.shineacz.top/posts/spring-boot的常用注解/