Spring Boot 常用注解
2023-09-21 08:35:18 0 举报
AI智能生成
Spring Boot 常用注解
作者其他创作
大纲/内容
web相关
@Controller:标记一个类为控制器。
@RestController:标记一个类为 RESTful 风格的控制器。
@RequestMapping:定义请求映射规则。
@GetMapping:定义 GET 请求映射规则。
@PostMapping:定义 POST 请求映射规则。
@PutMapping:定义 PUT 请求映射规则。
@DeleteMapping:定义 DELETE 请求映射规则。
@PatchMapping:定义 PATCH 请求映射规则。
@PathVariable:获取 URL 路径中的参数。
@RequestParam:获取请求参数。
@RequestBody:获取请求体。
@ResponseBody:返回响应体。
@ResponseStatus:设置响应状态码。
@CrossOrigin:允许跨域请求。
@Validated:参数校验。
@NotNull 验证对象是否为 null
@NotEmpty 验证字符串是否为空(不为 null 且长度不为 0)
@NotBlank 验证字符串是否为空白字符(不为 null 且至少包含一个非空白字符)
@Size(min, max) 验证对象(字符串、数组、集合等)的大小是否在指定的范围内
@Min(value) 验证数值是否大于等于指定的值
@Max(value) 验证数值是否小于等于指定的值
@DecimalMin(value) 验证数值是否大于等于指定的值
@DecimalMax(value) 验证数值是否小于等于指定的值
@Digits(integer, fraction) 验证数值是否符合指定的整数位数和小数位数
@Positive 验证数值是否为正数
@Negative 验证数值是否为负数
@PositiveOrZero 验证数值是否为非负数(即大于等于 0)
@NegativeOrZero 验证数值是否为非正数(即小于等于 0)
@Email 验证字符串是否为有效的邮箱地址
@URL 验证字符串是否为有效的 URL
@Pattern(regexp) 验证字符串是否符合指定的正则表达式
@Future 验证日期类型字段的值是否为未来时间
@FutureOrPresent 验证日期类型字段的值是否为当前时间或未来时间
@Past 验证日期类型字段的值是否为过去时间
@PastOrPresent 验证日期类型字段的值是否为当前时间或过去时间
@ControllerAdvice:定义全局异常处理类
@ExceptionHandler:处理异常。
配置
@Value
直接读取各种配置源的属性名
@ConfigurationProperties
读取配置信息并与 bean 绑定
@PropertySource
指定加载自定义的配置文件
@Import:用于将其他配置类导入到当前配置类中,可以用于解决模块化配置的问题。
Spring Data
@Entity
声明数据库实体类
@Table
设置表明
@Id
声明一个字段为主键
@GeneratedValue
声明主键的生成策略
@Column
声明字段,经常用于属性名和表字段的映射
@Transient
指定不需要持久化的字段
@Lob
声明某个字段为大字段
@Enumerated
声明枚举类型的字段
@Modifying
加在DAO方法上,提示是修改操作
@Transactional
作用于类上
表示所有该类的public 方法都配置相同的事务属性信息
作用于方法上
当类配置了@Transactional,方法也配置了@Transactional,方法的事务会覆盖类的事务配置信息
测试
@ActiveProfiles
常作用于测试类上, 用于声明生效的 Spring 配置文件
@Test
声明一个方法为测试方法
@Transactional
被声明的测试方法的数据会回滚,避免污染测试数据
@WithMockUser
Spring Security 提供的,用来模拟一个真实用户,并且可以赋予权限
配置启动
@SpringBootApplication
等价于以默认属性使用 @Configuration、@EnableAutoConfiguration、@ComponentScan
@Configuration
Spring Boot 提倡基于 Java 的配置,相当于你之前在 xml 中配置 bean
@EnableAutoConfiguration
类级别的注解,这个注解告诉 Spring Boot 根据添加的 jar 依赖猜测你想如何配置 Spring
@ComponentScan
标注哪些路径下的类需要被Spring扫描
AOP
@Aspect:标记一个类为切面。
@Pointcut:定义切入点。
@Before:在切入点之前执行。
@After:在切入点之后执行。
@Around:环绕通知,可以在切入点前后执行。
@AfterReturning:在方法返回值后执行。
@AfterThrowing:在方法抛出异常后执行。
缓存
@EnableCaching: 开启 Spring 缓存支持。
@Cacheable:用于缓存方法的返回值,可以指定缓存名称、缓存键、缓存条件等。
@CachePut:用于更新缓存中的数据,可以指定缓存名称、缓存键、缓存条件等。
@CacheEvict:用于清除缓存中的数据,可以指定缓存名称、缓存键、缓存条件等。
@Caching:用于组合多个缓存操作,可以指定多个 @Cacheable、@CachePut、@CacheEvict 注解。
@CacheConfig:用于定义缓存的公共配置,可以指定缓存名称、缓存管理器、缓存键生成器等。
@CacheResult:用于缓存方法的返回值,可以指定缓存名称、缓存键、缓存条件等。
@CacheRemove:用于清除缓存中的数据,可以指定缓存名称、缓存键、缓存条件等。
@CachePutExpire:用于更新缓存中的数据,并指定缓存过期时间和时间单位。
@CacheDefaults:用于定义缓存的默认配置,可以指定缓存名称、缓存管理器、缓存键生成器等。
定时任务
@EnableScheduling: 开启 Spring 定时任务支持。
@Scheduled: 定义定时任务的执行方式。
@ScheduledAnnotationBeanPostProcessor:用于处理 @Scheduled 注解的后置处理器,可以将该注解添加到 Spring 配置文件中,从而启用 @Scheduled 注解的支持。
异步
@EnableAsync: 开启 Spring 异步方法支持。
@Async: 标记一个方法为异步方法。
安全
@EnableWebSecurity: 开启 Spring Security 支持。
@Secured: 标记一个方法需要特定的角色或权限。
@PreAuthorize、@PostAuthorize: 在方法执行前或执行后进行权限检查。
@AuthenticationPrincipal: 获取当前用户的认证信息。
微服务
@EnableDiscoveryClient: 开启服务发现客户端支持。
@EnableFeignClients: 开启 Feign 客户端支持。
@FeignClient: 定义一个 Feign 客户端接口。
@EnableCircuitBreaker: 开启断路器支持。
@HystrixCommand: 标记一个方法为 Hystrix 命令。
@EnableZuulProxy: 开启 Zuul 代理支持。
@EnableHystrixDashboard: 开启 Hystrix 仪表盘支持。
@EnableConfigServer: 开启配置中心支持。
@RefreshScope: 将 Bean 标记为可动态刷新的 Bean。
负载均衡
Ribbon
@LoadBalanced:用于启用客户端负载均衡功能,使用该注解修饰的 RestTemplate、WebClient 等客户端组件可以自动实现负载均衡。
@RibbonClients:用于定义多个 Ribbon 客户端的配置信息,可以使用 @RibbonClient 注解的属性来指定不同的客户端名称。
@RibbonClient:用于定义 Ribbon 客户端的配置信息,包括服务名称、负载均衡策略、重试策略、连接超时时间等。
@RibbonProperty:用于定义 Ribbon 客户端的属性配置,例如连接超时时间、重试次数等。
@RibbonServer:用于定义 Ribbon 客户端的服务器列表,可以手动指定服务器列表或使用服务发现机制获取服务器列表。
LoadBalancer
@LoadBalanced:用于启用客户端负载均衡功能,使用该注解修饰的 RestTemplate、WebClient 等客户端组件可以自动实现负载均衡。
@LoadBalancerClient:用于定义客户端负载均衡的目标服务,包括服务名称、负载均衡策略、重试策略、连接超时时间等。
@LoadBalancerClients:用于定义多个客户端负载均衡的配置信息,可以使用 @LoadBalancerClient 注解的属性来指定不同的客户端名称。
@LoadBalancerRetry:用于定义客户端负载均衡的重试策略,例如定义重试次数、重试间隔、重试异常类型等。
@LoadBalancerClientCustomizer:用于自定义客户端负载均衡的配置,例如定义连接超时时间、读取超时时间等。
@LoadBalancerClientConfiguration:用于定义客户端负载均衡的配置信息,例如定义负载均衡策略、重试策略、连接超时时间等。
@LoadBalancerClientsConfiguration:用于定义多个客户端负载均衡的配置信息,可以使用 @LoadBalancerClientConfiguration 注解的属性来指定不同的客户端名称。
@LoadBalancerAutoConfiguration:用于自动配置客户端负载均衡的相关组件,例如自动配置 RestTemplate、WebClient 等客户端组件。
@LoadBalancerExchangeFilterFunction:用于自定义客户端负载均衡的 ExchangeFilterFunction,可以在请求发送之前或响应接收之后进行拦截和处理。
Bean管理
Bean 生命周期
@PreDestroy:在 Bean 销毁前调用,用于清理操作。
@Conditional:根据条件决定是否创建 Bean。
@ConditionalOnBean
配置了某个特定的Bean
@ConditionalOnMissingBean
没有配置特定的Bean
@ConditionalOnClass
Classpath里有指定的类
@ConditionalOnMissingClass
Classpath里没有指定的类
@ConditionalOnExpression
给定的SpEL表达式计算结果为true
@ConditionalOnJava
Java的版本匹配特定值或者一个范围值
@ConditionalOnJndi
参数中给定的JNDI位置必须存在一个,如果没有给参数,则要有JNDI InitialContext
@ConditionalOnProperty
指定的配置属性要有一个明确的值
@ConditionalOnResource
Classpath里没有指定的资源
@ConditionalOnWebApplication
这是一个Web应用程序
@ConditionalOnNotWebApplication
这不是一个Web应用程序
@DependsOn:指定 Bean 依赖的其他 Bean。
@Lazy:指定 Bean 是否延迟初始化。
@PostConstruct:在 Bean 实例化后调用,用于初始化操作。
基础注解
@Autowired
@Component
@Respository
@Service
@Scope
singleton
request
prototype
session
0 条评论
下一页