SpringBoot 的核心注解有哪些?
Bean 相关:
1. @Component
功能:最基础的通用型注解,用于标识一个类作为 Spring 组件(Bean)。
特点:
- 被标注的类会被 Spring 自动扫描并注册为 Bean
- 适用于任何层次的组件(当没有更具体的注解可用时)
- 是其他更具体注解(如@Controller、@Service、@Repository)的元注解
2. @ComponentScan
功能:配置 Spring 扫描哪些包及其子包中的组件。
特点:
- 通常用在主配置类(@SpringBootApplication 注解的类)上
- 可以指定 basePackages 或 basePackageClasses 来定义扫描范围
- 默认扫描当前包及其子包
3. @Controller
功能:专门用于标记控制器层组件,处理 HTTP 请求。
特点:
- 是 @Component 的特化版本
- 通常与 @RequestMapping 等注解配合使用
- 返回的通常是视图名称(用于服务端渲染)
4. @RestController
功能:专门用于 RESTful 风格的控制器。
特点:
- 组合了 @Controller 和 @ResponseBody
- 方法返回值会直接序列化为 JSON/XML 写入响应体
- 适用于构建 API 接口
拓展:@ RestController 和 @ Controller的区别
5. @Repository
功能:专门用于数据访问层(DAO 层)组件。
特点:
- 是 @Component 的特化版本
- 提供额外的异常转换(将数据访问异常转换为 Spring 的统一异常体系)
- 通常与 JPA、MyBatis 等持久层框架一起使用
6. @Bean
功能:方法级别注解,用于显式声明一个 Bean。
特点:
- 通常用在配置类(@Configuration 注解的类)中
- 方法名默认作为 Bean 的名称
- 可以自定义 Bean 的名称、作用域、初始化/销毁方法等
- 适用于第三方库的组件或需要复杂初始化的 Bean
其余重要的 Bean 相关注解:
注入相关
1. @Autowired
功能:Spring 框架提供的自动装配注解,用于自动注入依赖对象。
特点:
- 默认按类型(byType)进行自动装配
- 可以用于构造器、字段、setter 方法和普通方法
- 是 Spring 特有的注解
- 如果找到多个匹配类型,会尝试按名称匹配
2. @Resource
功能:JDK 提供的注解(JSR-250),功能类似于 @Autowired。
特点:
- 默认按名称(byName)进行装配
- 如果没有指定 name 属性,则退化为按类型(byType)装配
- 是 Java 标准注解,不依赖 Spring
- 只能用于字段和 setter 方法,不能用于构造器
3. @Qualifier
功能:与 @Autowired 配合使用,用于解决多个同类型 Bean 的歧义性问题。
特点:
- 当容器中存在多个相同类型的 Bean 时,用于指定具体的 Bean
- 可以用于字段、方法参数和构造器参数
- 通常与自定义限定符注解一起使用
读取配置相关:
1. @Value 注解
基本功能
@Value
是 Spring 框架提供的注解,用于直接注入单个配置值。
2. @ConfigurationProperties 注解
基本功能
@ConfigurationProperties
是 Spring Boot 提供的注解,用于将一组相关的配置属性批量绑定到一个 Java Bean 上。
Web相关
@RequestMapping
特性:
- 可以用在类级别或方法级别
- 支持所有 HTTP 方法 (GET, POST, PUT, DELETE 等)
- 可通过属性配置:value/path: 指定请求路径 method: 指定 HTTP 方法 params: 指定请求参数条件 headers: 指定请求头条件 consumes: 指定请求的 Content-Typeproduces: 指定响应的 Content-Type
@GetMapping(理同PostMapping、DeleteMapping、PutMapping)
- 专门处理 HTTP GET 请求
- 等价于 @RequestMapping(method = RequestMethod.GET)