Springboot之常用注解

参考整理自元宝的回答。

一、Bean声明和管理

注解 核心作用 简要说明
​**@Component**​ ​通用组件标识​ 最基础的注解,标记一个类为 Spring 组件(Bean),将由 Spring 容器管理其生命周期
​**@Service**​ ​业务逻辑层标识​ 特化于服务层(Service Layer),是 @Component的一种,用于标识业务逻辑组件
​**@Repository**​ ​数据访问层标识​ 特化于数据访问层(DAO Layer),是 @Component的一种。它还有一个额外好处,会自动转换特定数据访问异常为 Spring 的统一数据访问异常
​**@Controller** ​ / ​**@RestController**​ ​Web 控制层标识​ @Controller用于标记 Spring MVC 的控制器。@RestController是 @Controller和 @ResponseBody的组合,专为 RESTful Web 服务设计,其所有方法的返回值都会直接写入 HTTP 响应体
​**@Configuration**​ ​声明配置类​ 标记一个类为配置类,该类内部会包含使用 @Bean注解的方法,用于定义 Bean
​**@Bean**​ ​方法级别定义Bean​ 在配置类的方法上使用,方法的返回值将被注册为 Spring 容器中的一个 Bean
​**@Scope**​ ​定义Bean的作用域​ 指定 Bean 的作用域,例如单例(singleton)、原型(prototype,每次注入新实例)、请求(request)、会话(session)等
​**@Lazy**​ ​延迟初始化​ 标记 Bean 是否应该延迟初始化。设置为 true时,Bean 会在第一次被使用时才创建,而不是在容器启动时
​**@Primary**​ ​首选Bean​ 当存在多个相同类型的 Bean 候选时,被此注解标记的 Bean 将作为自动注入时的首选
@PostConstruct 初始化函数 自定义初始化函数
@PreDestroy 销毁函数 自定义销毁函数

二、依赖注入

注解 核心作用 简要说明
​**@Autowired**​ ​按类型自动装配​ Spring 提供的注解,用于自动按照类型(byType)注入依赖。可以用在字段、setter 方法或构造函数上
​**@Qualifier**​ ​按名称细化装配​ 当有多个同一类型的 Bean 时,配合 @Autowired使用,通过指定 Bean 的名称(byName)来消除歧义
​**@Resource**​ ​按名称装配 (JSR-250)​​ Java 标准注解(JSR-250),默认按名称(byName)进行装配。如果找不到匹配的名称,则会回退到按类型装配
​**@Value**​ ​注入简单值/配置​ 用于注入基本数据类型、String、SpEL 表达式结果,或者从配置文件(如 application.properties)中读取属性值

三、web

注解 核心作用 简要说明
​**@RequestMapping**​ ​映射Web请求​ 用于将 HTTP 请求映射到控制器方法上。可以简化其特定 HTTP 方法的变体,如 @GetMapping, @PostMapping等
​**@RequestBody**​ ​绑定请求体​ 指示方法参数应该从 HTTP 请求体中绑定,通常用于接收 JSON 或 XML 格式的数据并转换为 Java 对象
​**@ResponseBody**​ ​返回值直接作为响应体​ 标记一个方法,其返回值应直接写入 HTTP 响应体,而不是解析为视图名称
​**@PathVariable**​ ​提取URL路径变量​ 用于从请求 URI 模板中提取变量值,绑定到方法参数上。例如,URI 模板 /users/{id}中的 {id}
​**@RequestParam**​ ​提取请求参数​ 用于从 URL 查询字符串或表单数据中提取请求参数,绑定到方法参数上
@RequestHeader 提取请求头 取出请求头中的数据并绑定到参数上
​**@ControllerAdvice** ​ / ​**@RestControllerAdvice**​ ​全局控制器增强​ 用于编写跨所有控制器的全局代码,如全局异常处理(@ExceptionHandler)、数据绑定(@InitBinder)

四、配置

解 核心作用 简要说明
​**@SpringBootApplication**​ ​Spring Boot核心注解​ 这是一个组合注解,包含了 @SpringBootConfiguration(允许在上下文中注册额外的 bean 或导入其他配置类)、@EnableAutoConfiguration(启用自动配置)和 @ComponentScan(组件扫描)
​**@EnableAutoConfiguration**​ ​启用自动配置​ Spring Boot 自动配置机制的核心。它会根据项目的类路径、已存在的 Bean 定义和各种属性设置,尝试自动配置你的应用程序
​**@Conditional系列**​ ​条件化配置Bean​ 这是一族注解(如 @ConditionalOnClass, @ConditionalOnProperty等),它们根据特定条件(如某个类是否存在、某个属性是否被设置)来决定是否注册 Bean
​**@ConfigurationProperties**​ ​批量绑定配置属性​ 将配置文件(如 application.properties)中的属性批量绑定到一个带有前缀的 Java Bean 上,实现类型安全的配置
​**@Profile**​ ​环境特定配置​ 指定某个 Bean 或配置类仅在特定的环境(Profile,如 "dev", "prod")被激活时才会被注册到容器中
​**@PropertySource**​ ​加载属性文件​ 指定要加载的外部属性文件(.properties),将其中的属性添加到 Spring 的 Environment中
@Import 导入类 将外部类导入到IOC容器中
@ImportResource 导入配置文件 将xml文件中的配置导入到配置环境中

五、AOP、事务与异步

注解 核心作用 简要说明
​**@Transactional**​ ​声明式事务管理​ 声明一个方法或类需要事务管理。可以配置事务的传播行为、隔离级别、回滚规则等属性
​**@Aspect**​ ​声明切面​ 标记一个类为切面,该类包含了通知(Advice)和切点(Pointcut)的定义
​**@Before/ @After/ @Around等**​ ​声明通知​ 在切面中定义通知类型,例如 @Before在目标方法执行前执行,@Around环绕目标方法执行
​**@EnableAsync**​ ​启用异步执行​ 在配置类上使用,开启对异步任务的支持
​**@Async**​ ​标记异步方法​ 标记一个方法为异步执行,该方法将在调用时在一个独立的线程中运行
相关推荐
shuoshuohaohao3 小时前
MyBatis 小知识点
java·spring·mybatis
海上小飞龙4 小时前
【KMP算法-下篇】同一道题:Java 库函数 2600 微秒,手写 KMP 16 微秒
java·开发语言·算法
谢亮_vipxieliang4 小时前
泛型擦除、通配符与 PECS 一次讲透
java·面试
八解毒剂5 小时前
【计组】中央处理器CPU
java·开发语言·计算机组成原理
打工仔折腾 AI5 小时前
工业场景下时序库与实时计算一体化架构选型实践对比
java·开发语言·后端·python·性能优化·架构·ai agent 实战
ZealSinger6 小时前
Java虚拟线程上线后瓶颈转移到哪看三层
java·开发语言·firefox
2601_961133286 小时前
盘立方软件指标文华期货公式下载
java
蜗牛互联网6 小时前
长任务多Agent共享文件系统的Manifest交接模式
java·人工智能·后端
Sirens.6 小时前
Java并发锁详解:六类锁策略与 synchronized 底层原理
java·前端·算法
sunshine22 girl7 小时前
Java学习五 面向对象高级5 内部类1
java·学习