Spring中stereotype注解
核心stereotype注解
1. @Component- 通用组件注解
- 是一个通用的 stereotype 注解,用于标识任何Spring管理的组件
- 是所有其他Spring stereotype 注解的元注解(包括@Service、@Repository、@Controller)
- 适用于任何通用的Spring组件
2. @Service- 业务逻辑层组件
- 专门用于标识业务逻辑层(Service层)的组件
- 是@Component的特化版本
- 提供了更明确的语义含义,表明这是一个服务层组件
- 在功能上与@Component相同,但更具可读性和表达性
3. @Repository - 数据访问层组件
- 用于标识数据访问层(DAO层)的组件
- 是@Component的特化版本
- 提供了额外的好处:自动处理数据访问异常
4. @Controller - 表现层控制器组件
- 用于标识表现层(Web层)的组件
- 是@Component的特化版本
- 通常与Spring MVC一起使用
虽然可以都用@Component,但是用具体的组件注解,从语义上来说可以更准确,因为它清楚的表明该组件的标识的功能,所以,Spring提供了丰富的注解来标识和管理不同类型的组件,开发者可以根据具体需求选择合适的注解,这样不仅能让应用正常工作,还能提高代码的可读性和可维护性。
其他相关组件注解
5. @Configuration
- 用于标识配置类
- 相当于XML配置文件的Java配置方式
- 通常与@Bean注解配合使用
6. @RestController
- 是@Controller和@ResponseBody的组合注解
- 专门用于构建RESTful Web服务
7. @ComponentScan
- 用于配置组件扫描
- 指定Spring在哪些包中寻找组件
Web相关注解
8. @ControllerAdvice
- 用于全局异常处理和数据绑定
- 可以处理多个控制器中的异常
9. @RestControllerAdvice
- @ControllerAdvice和@ResponseBody的组合
- 用于RESTful服务的全局异常处理
AOP相关注解
10. @Aspect
- 标识一个切面类
- 在您的代码中就有使用
其他功能性注解
11. @Import
- 用于导入其他配置类
12. @ImportResource
- 用于导入XML配置文件
13. @Conditional
- 条件化组件注册
- 只有满足特定条件时才注册组件