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 { ... } |
---|