Spring常用注解汇总

1. IOC容器与Bean管理

| 注解 | 说明 | 示例 |
| @Component | 通用注解,标记类为Spring Bean | @Component public class MyService { ... } |
| @Controller | 标记Web控制器(应用在MVC的控制层) | @Controller public class UserController { ... } |
| @Service | 标记业务逻辑层组件(Service层) | @Service public class UserService { ... } |
| @Repository | 标记数据访问层组件(DAO层),自动转换数据访问异常 | @Repository public class UserDao { ... } |
| @Configuration | 标记配置类,用于定义Bean | @Configuration public class AppConfig { ... } |
| @Bean | 在配置类中定义Bean,常用于第三方库集成 | @Bean public DataSource dataSource() { return new HikariDataSource(); } |
| @Autowired | 自动注入依赖(按类型匹配,优先构造器注入) | @Autowired private UserService userService; |
| @Qualifier | 按名称注入Bean(解决同类型多个Bean的歧义) | @Autowired @Qualifier("mysqlDataSource") DataSource dataSource; |
| @Primary | 标记优先注入的Bean | @Bean @Primary public DataSource primaryDataSource() { ... } |
| @Value | 注入配置文件中的值 | @Value("${app.timeout}") private int timeout; |

@Scope 定义创建Bean的模式(方法上得有@Bean) 类型包括:Singleton、Prototype、Request、Session

2. Web开发(Spring MVC)

| 注解 | 说明 | 示例 |
| @RestController | @Controller + @ResponseBody,用于RESTAPI | @RestController public class UserApi { ... } |
| @RequestMapping | 映射HTTP请求到方法 | @RequestMapping(value = "/users", method = RequestMethod.GET) |
| @GetMapping | 处理HTTP GET请求,用于查询资源 | @GetMapping("/{id}") public User getById(@PathVariable Long id) |
| @PostMapping | 处理HTTP POST请求,用于创建新资源(通常配合@RequestBody接收请求体数据) | @PostMapping("/create") public User create(@RequestBody User user) |
| @PutMapping | 处理HTTP PUT请求,用于全量更新资源(需明确指定资源标识如/users/{id}) | @PutMapping("/users/{id}") public ResponseEntity<User> updateUser(@PathVariable Long id, @RequestBody User user ) {...} |
| @DeleteMapping | 处理HTTP DELETE请求,用于删除资源 | @DeleteMapping("/users/{id}") public ResponseEntity<Void> deleteUser(@PathVariable Long id) {...} |
| @PathVariable | 从URL路径中获取变量 | @GetMapping("/users/{id}") |
| @RequestParam | 获取请求参数(支持默认值和类型转换) | public List<User> search(@RequestParam(defaultValue = "10") int limit) |
| @RequestBody | 将请求体(JSON/XML)转换为Java对象 | @PostMapping public User create(@RequestBody User user) |
| @ResponseBody | 将返回值写入响应体(如返回JSON) | @ResponseBody public User getUser() { ... } |

@CrossOrigin 允许跨域请求 @CrossOrigin(origins = "http://example.com")

3. 数据访问与事务

| 注解 | 说明 | 示例 |
| @Transactional | 声明事务(方法或级别) | @Transactional public void updateUser(User user) { ... } |
| @Entity | JPA注解(标记数据库实体类) | @Entity @Table(name = "users") public class User { ... } |
| @Repository | 数据库访问层组件(Spring Data JPA自动实现接口) | @Repository public interface UserRepository extends JpaRepository<User, Long> { ... } |

@Query 自定义JPQL或原生SQL查询 @Query("SELECT u FROM User u WHERE u.age > :age") List<User> findByAge(@Param("age") int ag

4. AOP与切面编程

| 注解 | 说明 | 示例 |
| @Aspect | 声明切面类 | @Aspect @Component public class LoggingAspect { ... } |
| @Before | 前置通知(方法执行前执行) | @Before("execution(* com.example.service.*.*(..))") |
| @After | 后置通知(方法执行后执行,无论是否异常) | @After("execution(* com.example.service.*.*(..))") |
| @Around | 环绕通知(可控制方法执行流程) | @Around("execution(* com.example.service.*.*(..))") |

@Pointcut 定义切点表达式(复用切点逻辑) @Pointcut("execution(* com.example.service.*.*(..))")

5. SpringBoot特有注解

| 注解 | 说明 | 示例 |
| @SpringBootApplication | 启动类注解(组合了@Configuration,@EnableAutoConfiguration,) | @SpringBootApplication public class MyApp { ... } |
| @EnableAutoConfiguration | 启动自动配置(Spring Boot根据依赖自动配置Bean) | 通常由@SpringBootApplication包含 |
| @ConditionalOnProperty | 根据配置文件条件注册Bean | @Bean @ConditionalOnProperty(name = "feature.enabled", havingValue = "true") |

@SpringBootTest 启动完整Spring上下文集成测试 @SpringBootTest class MyIntegrationTest { ... }
相关推荐
想躺平的咸鱼干6 分钟前
Volatile解决指令重排和单例模式
java·开发语言·单例模式·线程·并发编程
hqxstudying33 分钟前
java依赖注入方法
java·spring·log4j·ioc·依赖
·云扬·41 分钟前
【Java源码阅读系列37】深度解读Java BufferedReader 源码
java·开发语言
春生野草1 小时前
关于SpringMVC的整理
spring
martinzh2 小时前
Spring AI 项目介绍
后端
Bug退退退1232 小时前
RabbitMQ 高级特性之重试机制
java·分布式·spring·rabbitmq
小皮侠2 小时前
nginx的使用
java·运维·服务器·前端·git·nginx·github
前端付豪2 小时前
20、用 Python + API 打造终端天气预报工具(支持城市查询、天气图标、美化输出🧊
后端·python
爱学习的小学渣2 小时前
关系型数据库
后端
武子康2 小时前
大数据-33 HBase 整体架构 HMaster HRegion
大数据·后端·hbase