Spring常用注解(详细的介绍了每个注解的作用)

Spring常用注解

一、@Component

  • 作用:通用组件注解,标识类为 Spring 容器管理的组件,Spring 扫描后注册为 Bean。

二、@Repository

  • 作用:专用于数据访问层(DAO 类),是@Component特殊化注解,明确标识数据访问组件。

三、@Service

  • 作用:标注服务层类,@Component特殊化注解,表明类处理业务逻辑。

四、@Configuration

  • 作用:定义配置类,替代 XML 配置,类中可通过@Bean定义 Bean。

五、@Bean

  • 作用:在配置类中定义 Bean,标注的方法返回对象,注册到 Spring 容器。

六、@ComponentScan

  • 作用:指定 Spring 扫描组件的包路径,自动扫描包内@Component及其派生注解的类。

七、@Aspect

  • 作用:定义切面类,配合@Pointcut、通知注解,实现切面编程。

八、@Pointcut

  • 作用:定义切点表达式,匹配目标连接点(如方法调用)。

九、@Before

  • 作用:前置通知,目标方法执行前执行。

十、@After

  • 作用:后置通知,目标方法执行后执行,无论是否抛异常。

十一、@Around

  • 作用:环绕通知,包裹目标方法,可控制方法执行前后逻辑。

十二、@RequestMapping

  • 作用:映射 HTTP 请求到控制器方法,可指定路径、请求方法等。

十三、@GetMapping

  • 作用@RequestMapping快捷注解,专用于映射 GET 请求。

十四、@PostMapping

  • 作用@RequestMapping快捷注解,专用于映射 POST 请求。

十五、@Value

  • 作用:注入外部配置文件属性值到类字段。

十六、@Transactional

  • 作用:开启事务管理,标注的方法在事务中执行。

十七、@Autowired

  • 作用:用于自动装配依赖的 Bean,它可以作用于构造函数、字段和方法上。默认按照类型进行装配,如果存在多个相同类型的 Bean,可以结合 @Qualifier 注解指定具体的 Bean。

十八、@Controller

  • 作用:主要用于标记表现层(Controller 层)的类,也是 @Component 的特殊化注解,Spring MVC 会将其识别为控制器,处理 HTTP 请求。

十九、@Qualifier

  • 作用:当存在多个相同类型的 Bean 时,@Qualifier 用于指定具体要注入的 Bean。

二十、@Resource

  • 作用:也是用于依赖注入,它默认按照名称进行装配,如果找不到匹配的名称,则按照类型进行装配。
<think>嗯,用户想了解Spring常用注解及其介绍。首先,我需要回忆一下Spring框架中常用注解,特别是核心容器、数据访问、Web MVC等方面的。可能还需要分门别类,方便用户理解。 首先,核心容器相关的注解,比如@Component,@Service,@Repository,@Controller,还有@Autowired和@Configuration,@Bean这些。这些是Spring的基础,控制反转和依赖注入相关的。 然后是Spring MVC的注解,像@Controller,@RestController,@RequestMapping,@GetMapping这些。用户如果做Web开发的话,这些肯定很重要。还有处理参数的注解,比如@PathVariable,@RequestParam,@RequestBody。 接下来是数据访问层的,比如@Transactional,@Repository,还有Spring Data JPA的@Query,@Modifying之类的。可能还要提到JPA相关的注解,但用户可能更关心Spring的而不是JPA本身的。 还有配置相关的,@Configuration,@ComponentScan,@PropertySource,@Value这些。AOP的注解,比如@Aspect,@Before,@After等。 另外,Spring Boot的常用注解可能也要包括进来,比如@SpringBootApplication,@EnableAutoConfiguration,虽然用户问的是Spring,但Spring Boot现在很常用,可能也需要提一下。 需要确保每个注解的解释清晰,给出作用和使用场景,最好有简单的代码示例。比如@Component用于类,让Spring自动检测并注册为Bean,@Service在服务层使用,@Repository在数据访问层。 可能还需要注意,有些注解Spring特有的,比如@Autowired,而@Resource是Java标准的。要指出它们的区别。 用户可能对某些注解的细节不太清楚,比如@Controller和@RestController的区别,或者@PathVariable和@RequestParam的不同使用场景。需要简明扼要地解释。 另外,关于作用域,@Scope注解可能也需要提到。还有条件化配置的注解,比如@Conditional,但可能属于高级内容,如果用户是初学者,可能暂时不需要深入。 需要检查是否有遗漏的重要注解,比如@Primary,@Qualifier,用于解决依赖注入冲突的情况。还有@Profile,用于环境配置。 最后,组织这些注解,按照类别分点说明,结构清晰,方便用户查阅。每个注解给出作用、使用场景、示例代码。确保用中文,术语准确,同时示例代码使用正确的LaTeX格式,行内的用$...$,独立成段的用$$...$$,但用户的问题中可能不需要数学公式,所以主要关注注解的代码部分,用反引号包裹或者适当格式。 需要避免错误,比如混淆JPA和Spring注解,确保每个注解的正确归属。例如,@Entity是JPA的,而@Repository是Spring的。虽然相关,但用户可能希望分开。 总结一下,结构应该是分几大模块:核心注解、Web相关、数据访问、配置、AOP、Spring Boot相关等。每个模块下列出常用注解,解释和示例。</think>以下是Spring框架的常用注解及其分类介绍,按功能模块组织: --- ### 一、核心容器注解(IoC/DI) 1. **@Component** - **作用**:标记类为Spring管理的组件,自动扫描注册为Bean - **示例**: ```java @Component public class UserService { ... } ``` 2. **衍生注解**(功能相同,语义化分类) - **@Service**:用于业务逻辑层 - **@Repository**:用于数据访问层(自动转换数据库异常) - **@Controller**:用于Web控制层 3. **@Autowired** - **作用**:自动注入依赖(按类型匹配) - **示例**: ```java @Autowired private UserRepository userRepo; ``` 4. **@Qualifier** - **作用**:配合`@Autowired`按名称指定Bean - **示例**: ```java @Autowired @Qualifier("mysqlUserRepo") private UserRepository userRepo; ``` 5. **@Primary** - **作用**:当存在多个同类型Bean时,标记优先注入的候选 --- ### 二、Web MVC注解 1. **@Controller** - **作用**:定义Web请求处理类 2. **@RestController** - **作用**:组合`@Controller` + `@ResponseBody`,直接返回JSON数据 - **示例**: ```java @RestController public class UserController { @GetMapping("/users") public List<User> getUsers() { ... } } ``` 3. **@RequestMapping** - **作用**:映射HTTP请求路径和方法 - **衍生简化注解**: - `@GetMapping` - `@PostMapping` - `@PutMapping` - `@DeleteMapping` 4. **@PathVariable** - **作用**:绑定URL路径参数 - **示例**: ```java @GetMapping("/users/{id}") public User getUser(@PathVariable Long id) { ... } ``` 5. **@RequestParam** - **作用**:绑定HTTP请求参数(默认必传,可通过`required=false`关闭) - **示例**: ```java @GetMapping("/search") public List<User> search(@RequestParam String keyword) { ... } ``` 6. **@RequestBody** - **作用**:将HTTP请求体反序列化为Java对象(通常用于接收JSON) --- ### 三、配置相关注解 1. **@Configuration** - **作用**:声明配置类(替代XML配置) 2. **@Bean** - **作用**:在配置类中定义Bean(方法级别) - **示例**: ```java @Configuration public class AppConfig { @Bean public DataSource dataSource() { ... } } ``` 3. **@ComponentScan** - **作用**:指定Spring扫描组件的包路径 - **示例**: ```java @ComponentScan("com.example.service") ``` 4. **@PropertySource** - **作用**:加载外部配置文件(如`.properties`) - **示例**: ```java @PropertySource("classpath:app.properties") ``` 5. **@Value** - **作用**:注入配置文件中的值 - **示例**: ```java @Value("${database.url}") private String dbUrl; ``` --- ### 四、数据访问注解 1. **@Transactional** - **作用**:声明事务管理(可配置传播行为和隔离级别) - **示例**: ```java @Transactional public void updateUser(User user) { ... } ``` 2. **@Repository** - **作用**:标记数据访问层类(自动处理持久化异常) --- ### 五、AOP相关注解 1. **@Aspect** - **作用**:声明切面类 2. **通知类型注解** - `@Before`:前置通知 - `@After`:后置通知 - `@Around`:环绕通知 - `@AfterThrowing`:异常通知 --- ### 六、Spring Boot增强注解 1. **@SpringBootApplication** - **作用**:组合注解(`@Configuration` + `@ComponentScan` + `@EnableAutoConfiguration`) 2. **@EnableAutoConfiguration** - **作用**:启用Spring Boot自动配置 --- ### 附:注解对比表 | 注解 | 应用场景 | 示例场景 | |-----------------|-------------------------|-----------------------| | `@Component` | 通用组件注册 | 工具类、第三方库适配 | | `@Service` | 业务逻辑层 | UserService、OrderService | | `@Repository` | 数据访问层 | UserRepository | | `@RestController` | 返回JSON的Web接口 | RESTful API控制器 | --- 通过合理使用这些注解,可以显著简化Spring应用的开发配置流程。建议结合具体场景选择合适的注解
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值