常见注解

17

Spring 的常见注解

类别

注解

作用描述

补充说明

1. 声明Bean

@Component

通用组件注解,标识为Spring管理的Bean

其他三个注解(@Controller@Service@Repository

均为@Component的特化,功能相同但语义更明确

@Controller

标识为控制层组件(Spring MVC)

通常与@RequestMapping等MVC注解配合使用

@Service

标识为业务逻辑层组件

增强代码可读性,适用于服务层

@Repository

标识为持久层组件(DAO层)

自动转换持久化异常为Spring统一异常体系

2. 依赖注入

@Autowired

自动按类型装配依赖(默认byType)

可配合@Qualifier实现按名称装配

@Qualifier

指定具体Bean的名称(配合@Autowired使用)

解决同一类型多个Bean的冲突问题

@Resource

JDK提供的按名称装配注解(默认byName)

属于JSR-250规范,非Spring原生

3. 作用域控制

@Scope

定义Bean的作用域(如singletonprototype等)

支持requestsession等Web作用域

4. 配置相关

@Configuration

声明当前类为配置类

替代XML配置文件,通常与@Bean配合使用

@ComponentScan

指定Spring扫描的包路径

默认扫描当前类所在包及其子包

@Bean

将方法返回值注册为Spring Bean

常用于管理第三方库的组件

5. AOP增强

@Aspect

声明切面类

需配合@EnableAspectJAutoProxy启用AOP

@Before

前置通知:在目标方法执行前执行

可指定切入点表达式

@After

后置通知:在目标方法执行后执行(无论是否异常)

包括@AfterReturning(成功时)和@AfterThrowing(异常时)

@Around

环绕通知:可控制目标方法执行全过程

需通过ProceedingJoinPoint.proceed()调用目标方法

@Pointcut

定义可重用的切入点表达式

通常作为空方法使用

SpringMVC常见的注解

注解

作用描述

核心属性/示例

使用场景

@RequestMapping

基础请求映射注解,可定义URL路径、请求方法等

- value/path:请求路径 - method:请求类型(GET/POST等) - params/headers:参数过滤条件

类级别定义公共路径前缀,方法级别定义具体接口(如@RequestMapping("/user", method=RequestMethod.POST)

@GetMapping

专用于处理HTTP GET请求的快捷注解

等价于@RequestMapping(method=RequestMethod.GET) 示例:@GetMapping("/list")

数据查询接口(如/api/users

@PostMapping

专用于处理HTTP POST请求的快捷注解

等价于@RequestMapping(method=RequestMethod.POST) 示例:@PostMapping("/create")

数据新增操作(如提交表单)

@RequestBody

将请求体JSON数据转换为Java对象

需配合JSON转换器使用 示例:public User createUser(@RequestBody UserDTO dto)

接收前端提交的JSON格式数据(如RESTful API)

@RequestParam

获取URL查询参数

- name/value:参数名 - required:是否必传 - defaultValue:默认值 示例:?name=张三

传统参数传递方式(如分页参数page=1&size=10

@PathVariable

从URL路径模板中获取参数

需配合{}占位符使用 示例:@GetMapping("/{id}") public User getById(@PathVariable Long id)

RESTful风格接口(如/users/123

@ResponseBody

将方法返回值序列化为JSON响应

需配合@RestController或单独使用 示例:@ResponseBody public User getUser()

前后端分离架构中的API响应

@RequestHeader

获取HTTP请求头信息

可指定具体Header名称 示例:@RequestHeader("Authorization") String token

获取认证令牌、设备信息等Header数据

@PutMapping

专用于处理HTTP PUT请求的快捷注解

等价于@RequestMapping(method=RequestMethod.PUT) 示例:@PutMapping("/update")

全量更新资源操作

@DeleteMapping

专用于处理HTTP DELETE请求的快捷注解

等价于@RequestMapping(method=RequestMethod.DELETE) 示例:@DeleteMapping("/{id}")

删除

Springboot常见注解

注解

核心作用

功能扩展与示例

关键机制

@SpringBootConfiguration

声明当前类为 Spring Boot 的配置类,继承自 @Configuration 注解的功能

- 允许在类中通过 @Bean 方法定义组件 - 启动类本身作为配置类(如定义第三方库的 Bean) 示例: @Bean public User user() { return new User(); }

本质是 @Configuration 的增强版,确保启动类能被 Spring 识别为配置源

@EnableAutoConfiguration

激活 Spring Boot 的自动配置机制,根据依赖和类路径自动加载配置

- 加载 META-INF/spring.factories 中声明的自动配置类 - 支持通过 exclude 排除特定配置 示例: @SpringBootApplication(exclude = {DataSourceAutoConfiguration.class})

通过 AutoConfigurationImportSelector 筛选符合条件的配置类,结合 @Conditional 系列注解实现条件装配

@ComponentScan

自动扫描并注册组件(如 @Component, @Service, @Controller 等)到 Spring 容器

- 默认扫描启动类所在包及其子包 - 可自定义扫描路径 示例: @ComponentScan(basePackages = "com.example")

替代 XML 配置中的 <context:component-scan>,支持多包扫描策略