Spring中有哪些常用的注解呢?
下文笔者讲述Spring中常用的注解,如下所示
Spring注解的分类
Spring中注解按分类,可分为: 组件扫描类 依赖注入类 作用域类 生命周期回调 AOP 面向切面编程类 WEB 开发类 测试类 条件注解类 异步处理类 事务管理类 定时类 不同的注解,在Spring中加载位置及加载时间点都不同每一个分类下面的内容如下所示
组件扫描与配置
1. **@Component**:通用组件注解,用于标记类为 Spring 管理的 Bean。 2. **@Service**:用于标记业务层组件。 3. **@Repository**:用于标记数据访问层组件。 4. **@Controller**:用于标记控制层组件。 5. **@Configuration**:用于标记配置类,替代 XML 配置文件。 6. **@Bean**:用于在配置类中定义 Bean。 7. **@ComponentScan**:用于自动扫描并注册带有 `@Component` 注解的类。
依赖注入
1. **@Autowired**:用于自动注入依赖,可以用于字段、构造器、方法等。 2. **@Qualifier**:用于指定具体的 Bean,当存在多个相同类型的 Bean 时使用。 3. **@Resource**:类似于 `@Autowired`,但基于名称进行注入。 4. **@Value**:用于注入属性值,支持 SpEL 表达式。
作用域
1. **@Scope**:用于指定 Bean 的作用域,如 `singleton`、`prototype`、`request`、`session` 等。
生命周期回调
1. **@PostConstruct**:用于标记初始化方法,在依赖注入完成后调用。 2. **@PreDestroy**:用于标记销毁方法,在 Bean 销毁前调用。
AOP(面向切面编程)
1. **@Aspect**:用于标记切面类。 2. **@Before**:用于定义前置通知。 3. **@After**:用于定义后置通知。 4. **@AfterReturning**:用于定义返回后通知。 5. **@AfterThrowing**:用于定义异常通知。 6. **@Around**:用于定义环绕通知。
Web开发
1. **@RequestMapping**:用于映射 HTTP 请求到处理方法。 2. **@GetMapping**:用于映射 HTTP GET 请求。 3. **@PostMapping**:用于映射 HTTP POST 请求。 4. **@PutMapping**:用于映射 HTTP PUT 请求。 5. **@DeleteMapping**:用于映射 HTTP DELETE 请求。 6. **@PathVariable**:用于提取 URL 中的路径变量。 7. **@RequestParam**:用于提取请求参数。 8. **@RequestBody**:用于将请求体中的数据绑定到方法参数。 9. **@ResponseBody**:用于将方法返回值直接写入响应体。 10. **@RestController**:组合了 `@Controller` 和 `@ResponseBody`,用于 RESTful API。
测试
1. **@SpringBootTest**:用于标记 Spring Boot 应用的集成测试。 2. **@RunWith**:用于指定测试运行器,通常与 `SpringRunner` 一起使用。 3. **@MockBean**:用于创建和管理模拟 Bean。 4. **@Test**:用于标记测试方法。
条件注解
1. **@Conditional**:用于根据条件决定是否创建 Bean。 2. **@ConditionalOnClass**:当类路径中存在指定类时创建 Bean。 3. **@ConditionalOnMissingClass**:当类路径中不存在指定类时创建 Bean。 4. **@ConditionalOnProperty**:当配置属性满足特定条件时创建 Bean。
异步处理
1. **@Async**:用于标记方法为异步执行。 2. **@EnableAsync**:启用异步方法支持。
事务管理
1. **@Transactional**:用于标记方法或类为事务性。
定时任务
1. **@Scheduled**:用于标记方法为定时任务。 2. **@EnableScheduling**:启用定时任务支持。
其他
1. **@Profile**:用于指定 Bean 在特定环境下生效。 2. **@Lazy**:用于延迟初始化 Bean。 3. **@Primary**:用于指定优先选择的 Bean。
版权声明
本文仅代表作者观点,不代表本站立场。
本文系作者授权发表,未经许可,不得转载。