Spring Boot 提供了大量的注解,用于简化配置和加速程序开发。
常用注解有以下这些:
组件管理注解
1、Bean相关
- @Component :将一个类标识为
Spring组件(Bean)
,被Spring容器自动检测跟注册
。通用组件,适用于任何层次
。 - @ComponentScan :自动扫描
指定包及其子包
的Spring组件。 - @Controller :标识控制层组件,是
@Component
的一个特化,用于表示Web控制器
。处理HTTP请求
并返回视图或响应数据
。
java
@Controller
public class MyController {
@RequestMapping("/hello")
public String hello() {
return "hello";
}
}
- @RestController :是
@Controller
和@ResponseBody
的结合,返回的对象会自动序列化为 JSON 或 XML,并写入 HTTP 响应体中。 - @Service :标识服务层组件,是
@Component
的一个特化,用于表示业务逻辑服务。 - @Repository :标识
持久化组件(DAO层)
,是@Component
的一个特化,标识数据访问组件 。用于与数据库交互
。 - @Bean :方法注解,用于
修饰方法
,将修饰方法的返回对象添加到Spring容器
中,其他组件可以通过依赖注入方式使用这个对象
。 - @Configuration :标识一个类为
配置类
,@Component
的一个特化,通常配合@Bean注解一起使用。 - @Scope :声明一个Spring Bean实例的作用域 ,范围有
单例模式、原型模式
等。
2、依赖注入
- @Autowired :用于
自动注入依赖对象,Spring框架提供
。 - @Resource :按名称
自动注入依赖对象(可以按类型、按默认名称),JDK提供
。 - @Qualifier :与
@Autowired
一起使用,用于指定要注入的哪个Bean的名称,存在多个相同类型的Bean时,可以使用@Qualifier
指定注入哪一个。
Web相关(请求处理注解)
3、请求映射
- @RequestMapping :映射HTTP请求到处理方法上,支持
GET/POST/PUT/DELETE
等请求方法。可以标注在类或方法上 。标注在类上时,表示类中的所有响应请求的方法都是以该类路径为父路径。 - @GetMapping、@PostMapping、@PutMapping、@DeleteMapping :分别用于映射
HTTP GET、POST、PUT、DELETE
请求到处理方法上。它们是@RequestMapping
的特化,分别对应不同的 HTTP 请求方法。 - @RequestParam :用于将请求参数绑定到
Controller
方法的参数上。主要用于处理GET、POST
等请求中的查询参数,例如将 example.com/api?param1=... 中的 param1 和 param2 参数设置到方法的参数上。 - @PathVariable :用于从
请求URL路劲中提取变量值
,并将其绑定到控制器方法的参数上
。
4、请求体处理
- @RequestBody :将
HTTP
请求体的内容(如JSON、XML
)转换为Java
对象。通常用于接收前端传递的数据,标注在方法的参数上。 - @ResponseBody :将方法的返回值转换为指定格式(如
JSON、XML
)作为HTTP
响应的内容返回给客户端。通常与@RequestMapping
或@GetMapping
等注解一起使用在方法上。
配置相关
5、配置类
- @Configuration:标记类为配置类,定义Bean。
- @Bean:在配置类中声明Bean实例,交由Spring IOC容器管理。
java
@Configuration
public class AppConfig {
@Bean
public MyService myService() {
return new MyServiceImpl();
}
}
6、条件控制
- @ConditionalOnProperty :根据配置文件属性动态加载Bean。
- @ConditionalOnClass :当类路径存在
指定类
时生效。
7、属性注入
- @ConfigurationProperties :用于将配置属性绑定到一个实体类 上。通常用于从配置文件中读取属性值并绑定到类的字段上。
- @Value :用于
注入属性值
,通常从配置文件中获取
。标注字段
上,并指定属性值来源
(如配置文件中的某个属性)。
配置启动注解
8、启动配置
- @SpringBootApplication :用于标识
SpringBoot
应用程序的入口类。它是一个组合注解,包括了@Configuration、@EnableAutoConfiguration 和 @ComponentScan
三个注解。
java
@SpringBootApplication
public class Application {
public static void main(String[] args) {
SpringApplication.run(Application.class, args);
}
}
- @EnableAutoConfiguration :启用
Spring Boot
的自动配置机制,根据添加的依赖和配置文件自动配置 Spring 应用。
其他常用
9、定时任务
- @Scheduled :声明一个方法需要
定时执行
。标注在方法上,并指定定时执行的规则
(如每隔一定时间执行一次)。
10、事务管理
- @Transactional :声明
事物管理
,标注在类或方法
上,指定事物传播行为,隔离级别等。
11、数据校验
- @Valid :结合
JSR-303
校验请求体参数(如@NotBlank
,@Email
)
12、全局异常处理
- @ControllerAdvice+@ExceptionHandler:定义全局统一处理异常。