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 分钟前
Rust String 与 &str 详解:字符串所有权、借用与转换
前端·后端·rust
万亿少女的梦1689 分钟前
基于Spring Boot、Java与MySQL的网络订餐系统设计与实现
java·spring boot·mysql·系统设计·网络订餐
咩咩啃树皮9 小时前
第40篇:Vue3组件化开发精讲——组件拆分、复用、父子通信、工程化架构
java·前端·架构
阳光是sunny9 小时前
LangGraph中的Reducer是什么
前端·人工智能·后端
灯澜忆梦9 小时前
GO_并发编程---定时器
开发语言·后端·golang
阳光是sunny9 小时前
从链到图:LangGraph 入门基础全解析
前端·人工智能·后端
鱟鲥鳚9 小时前
Spring Boot 集成 LangChain4j:从模型调用到 Tool Calling(Demo版)
java·spring boot
皮皮林5519 小时前
开源实力派,给本地 AI 装上深度调研能力,一张 3090 跑到 95.7 分!
后端
努力的小雨10 小时前
把 Windows 桌面图标做成一个会自己运转的小世界
后端
武子康10 小时前
Search Console Platform Properties 扩大 SEO 资产边界:从 Page Ranking 到 Topic Coverage(5 类误读边界 + 3 表数据层设计)
前端·人工智能·后端