以下是Spring Boot中常用的注解及其作用的分类整理:
1. 核心注解
- @SpringBootApplication
标记主启动类,组合了@Configuration、@EnableAutoConfiguration和@ComponentScan,用于启动Spring Boot应用。
2. 配置相关注解
- @Configuration
声明一个类为配置类,替代XML配置文件。 - @Bean
在配置类中定义Bean,方法返回的对象由Spring容器管理。 - @PropertySource
加载指定的属性文件(如application.properties)到Spring环境。 - @Value
注入配置文件中的属性值到字段或方法参数。 - @ConfigurationProperties
将配置文件中的属性批量绑定到Java对象。 - @EnableConfigurationProperties
启用@ConfigurationProperties功能。
3. Spring MVC相关注解
- @RestController
组合@Controller和@ResponseBody,用于定义RESTful控制器。 - @RequestMapping
映射HTTP请求到控制器方法,可指定路径、方法类型等。 - @GetMapping/@PostMapping/@PutMapping/@DeleteMapping
简化版请求映射,分别对应GET、POST、PUT、DELETE方法。 - @PathVariable
从URL路径中提取参数(如/user/{id})。 - @RequestParam
从请求参数中获取值(如?name=abc)。 - @RequestBody
将请求体中的JSON/XML数据反序列化为Java对象。 - @ResponseBody
将方法返回值序列化为JSON/XML响应。 - @CrossOrigin
允许跨域请求(CORS)。
4. 数据访问相关注解
JPA/Hibernate
- @Entity
标记类为JPA实体,对应数据库表。 - @Table
指定实体对应的数据库表名。 - @Id
标记实体类的主键字段。 - @GeneratedValue
配置主键生成策略(如自增)。 - @Column
定义字段与数据库列的映射关系。
Spring Data JPA
- @Repository
标记数据访问层(DAO)组件。 - @Transactional
声明事务管理(可加在类或方法上)。
MyBatis
- @Mapper
标记MyBatis的Mapper接口。 - @MapperScan
配置扫描Mapper接口的包路径。
5. 依赖注入相关注解
- @Autowired
自动注入Bean(按类型)。 - @Qualifier
按名称指定注入的Bean。 - @Component
通用注解,标记类为Spring组件(Bean)。 - @Service/@Repository/@Controller
分别标记服务层、数据层、控制层组件,功能同@Component。
6. AOP相关注解
- @Aspect
声明一个切面类。 - @Pointcut
定义切点表达式。 - @Before/@After/@Around/@AfterReturning/@AfterThrowing
定义通知类型(在方法执行前、后等时机执行)。
7. 定时任务与异步处理
- @EnableScheduling
启用定时任务功能。 - @Scheduled
配置方法执行周期(如cron表达式)。 - @EnableAsync
启用异步方法调用。 - @Async
标记方法为异步执行。
8. 测试相关注解
- @SpringBootTest
标记Spring Boot集成测试类,加载完整应用上下文。 - @Test
JUnit测试方法。 - @MockBean/@SpyBean
模拟或监视Bean(用于测试环境)。 - @AutoConfigureMockMvc
自动配置MockMvc,用于模拟HTTP请求测试。
9. 条件注解(自动配置)
- @ConditionalOnProperty
根据配置文件属性决定是否创建Bean。 - @ConditionalOnClass/@ConditionalOnMissingClass
根据类是否存在决定Bean的创建。 - @ConditionalOnBean/@ConditionalOnMissingBean
根据其他Bean是否存在决定Bean的创建。
10. 缓存相关注解
- @EnableCaching
启用缓存功能。 - @Cacheable
缓存方法返回值(根据键)。 - @CacheEvict
清除缓存。
11. 其他注解
- @Profile
根据环境(如dev/prod)激活配置。 - @Import
导入其他配置类。 - @Lazy
延迟初始化Bean。 - @Primary
当存在多个同类Bean时,优先注入标记的Bean。 -
package com; import com.common.exception.RRException; import com.common.utils.WechatProperties; import com.common.validator.group.AddGroup; import com.common.validator.group.UpdateGroup; import org.aspectj.lang.annotation.Around; import org.aspectj.lang.annotation.Aspect; import org.aspectj.lang.annotation.Before; import org.aspectj.lang.annotation.Pointcut; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.boot.context.properties.ConfigurationProperties; import org.springframework.boot.context.properties.EnableConfigurationProperties; import org.springframework.context.annotation.Bean; import org.springframework.context.annotation.Configuration; import org.springframework.stereotype.Component; import org.springframework.web.bind.annotation.ExceptionHandler; import org.springframework.web.bind.annotation.RestControllerAdvice; import javax.annotation.PostConstruct; import javax.annotation.Resource; import javax.validation.GroupSequence; import java.lang.annotation.*; /* * AOP相关注解 */ //声明一个切面类,用于将横切关注点(如日志、事务等)模块化。需配合@Component注册为Spring Bean @Aspect //环绕通知,拦截指定方法的执行,可自定义方法前后的增强逻辑。execution表达式定义切入点规则 @Around("execution(* com.common.utils.RedisUtils.*(..))") //前置通知,在目标方法执行前执行增强逻辑。dataFilterCut()需通过@Pointcut定义 @Before("dataFilterCut()") //定义切入点,支持基于注解的匹配。例如@annotation(com.common.annotation.DataFilter)表示拦截带有该注解的方法 @Pointcut("@annotation(com.common.annotation.DataFilter)") /* * Bean管理注解 */ //自动注入依赖的Bean,默认按类型匹配。适用于构造方法、字段或Setter方法 @Autowired //声明一个方法返回的对象为Spring Bean,通常用于配置类(@Configuration类中) @Bean //通用组件注解,标记类为Spring管理的Bean,支持自动扫描 @Component //JSR-250规范注解,按名称注入Bean。与@Autowired相比,强调按名称匹配 @Resource(name="redisTemplate") /* * 配置类注解 */ //标记类为配置类,其中可定义@Bean方法或导入其他配置 @Configuration //将配置文件(如application.yml)中以指定前缀(如wechat)开头的属性绑定到类的字段 @ConfigurationProperties(prefix="wechat) //启用指定配置类的属性绑定功能,通常与@ConfigurationProperties配合使用 @EnableConfigurationProperties(WechatProperties.class) /* * 异常处理注解 */ //标记方法为特定异常(如RRException)的处理逻辑 @ExceptionHandler(RRException.class) //全局异常处理类,结合@ExceptionHandler统一处理控制器层异常 @RestControllerAdvice /* * 元注解与生命周期 */ //标记注解是否包含在JavaDoc中,属于元注解^[标准注解]^ @Documented //指定注解的保留策略为运行时,可通过反射读取^[标准注解]^ @Retention(RetentionPolicy.RUNTIME) //标记方法在Bean初始化后执行,用于生命周期回调^[标准注解]^ @PostConstruct //限定注解只能用于方法级别^[标准注解] @Target(ElementType.METHOD) /* * 其他注解 */ //定义验证分组的执行顺序,用于参数校验场景^[验证规范] @GroupSequence({AddGroup.class, UpdateGroup.class}) public class Test { }
5683

被折叠的 条评论
为什么被折叠?



