Spring+Spring Boot+Spring Cloud项目开发常用注解大全

Spring+Spring Boot+Spring Cloud常用注解总结

一. Spring

注解介绍:
由于Spring 和Spring boot中有许多注解基本通用,所以在Spring中介绍过的注解就不会再次介绍了。如有需要,可以自行查看哦~

  1. @Component

指项目中的组件,@Controller(控制层)、@Service(业务层)、@Repository(数据访问层)都可以称为@Component。

  1. @Bean

Spring的@Bean注解用于告诉方法,产生一个Bean对象,然后返回一个Bean对象交给Spring管理。产生这个Bean对象的方法Spring只会调用一次,随后这个Spring将会将这个Bean对象放在自己的IOC容器中;添加的bean的id为方法名;比如@Autowired , @Resource,可以通过byTYPE(@Autowired)byNAME(@Resource) 的方式获取Bean;

  1. @Import(要导入到容器中的组件);
  2. @Autowired

@Autowired 用来获取注入Bean. 可以作用在变量、setter方法、构造函数上;有个属性为required,可以配置为false,找不到Bean也不会报错

    @Autowired
    private FileService fileService;
  1. @Resource

@Resource,按照名称匹配的,作用与@Autowired类似。

  1. @Configuration

声明当前类为配置类;

  1. @ComponentScan

用于对Component进行扫描;

  1. @Aspect 声明一个切面
  2. @Value

三种用法:

  • ${}是去找外部配置的参数,将值赋过来

  • #{}是SpEL表达式,去寻找对应变量的内容

  • #{“xxxx”}直接写字符串就是将字符串的值注入进去

  1. @EnableAsync

配置类中通过此注解开启对异步任务的支持;

  1. @Scheduled

来申明这是一个任务,包括cron,fixDelay,fixRate等类型(方法上,需先开启计划任务的支持)

  1. Enablexxx注解

@EnableAspectAutoProxy:开启对AspectJ自动代理的支持;
@EnableAsync:开启异步方法的支持;
@EnableScheduling:开启计划任务的支持;
@EnableWebMvc:开启web MVC的配置支持;
@EnableConfigurationProperties:开启对@ConfigurationProperties注解配置Bean的支持;
@EnableJpaRepositories:开启对SpringData JPA Repository的支持;
@EnableTransactionManagement:开启注解式事务的支持;
@EnableCaching:开启注解式的缓存支持;

  1. @SuppressWarnings

告诉它对被批注的代码元素内部的某些警告保持静默。

  1. @RequestMapping

用在类上居多。是用来处理请求地址映射的注解,放在方法上表示所有请求方法都是以该地址为父路径
参数:value(“xxx/xxx”)指定请求实际地址。

@RequestMapping("/admin/vod/file")

params当包含指定参数值才处理

  1. @ResponseBody

表示该方法的返回结果直接写入HTTP response body中一般在异步获取数据时使用,在使用@RequestMapping后,返回值通常解析为跳转路径,加上@responsebody后返回结果不会被解析为跳转路径,而是直接写入HTTP response body中。比如异步获取json数据,加上@responsebody后,会直接返回json数据。

  1. @RequestBody

允许request的参数在request体中,而不是在直接连接的地址后面。

eg:(@RequestBody CourseFormVo courseFormVo)

  1. @PathVariable

用于接收路径参数,比如@RequestMapping(“/hello/{name}”)声明的路径,将注解放在参数前,即可获取该值,通常作为Restful的接口实现方法。

eg:@RequestMapping(“/hello/{name}”)

​ public String getName(@PathVariable String name){}

  1. @RestController

该注解为一个组合注解,相当于 @Controller@ResponseBody的组合,注解在类上,意味着,该Controller的所有方法都默认加上了@ResponseBody。

  1. @ControllerAdvice

统一处理异常,包含@Component,可以被扫描到

  1. @ModelAttribute

(1)@ModelAttribute注释方法
如果把@ModelAttribute放在方法的注解上时,代表的是:该Controller的所有方法在调用前,先执行此@ModelAttribute方法。可以把这个@ModelAttribute特性,应用在BaseController当中,所有的Controller继承BaseController,即可实现在调用Controller时,先执行@ModelAttribute方法。比如权限的验证(也可以使用Interceptor)等在同一个控制器中,注解了@ModelAttribute的方法实际上会在@RequestMapping方法之前被调用。如果 @ModelAttribute 和 @RequestMapping 注解在同一个方法上,那么代表给这个请求单独设置 Model 参数。此时返回的值是 Model 的参数值,而不是跳转的地址。

(2)@ModelAttribute注释一个方法的参数

当作为方法的参数使用,指示的参数应该从模型中检索。如果不存在,它应该首先实例化,然后添加到模型中,一旦出现在模型中,参数字段应该从具有匹配名称的所有请求参数中填充。Spring MVC中被称为数据绑定,数据绑定之后,可以使用 BindingResult 来返回数据验证结果。

  1. @Transactional

当类级别配置了@Transactional,方法级别也配置了@Transactional,应用程序会以方法级别的事务属性信息来管理事务,换言之,方法级别的事务属性信息会覆盖类级别的相关配置信息。

eg:@Transactional(propagation=Propagation.SUPPORTS,readOnly=true)

  1. @Schema

@schema注解标注在class上,表示此类对应的数据库表对应的schema。

  1. @JsonIgnoreProperties

此注解是类注解,作用是json序列化时将java bean中的一些属性忽略掉,序列化和反序列化都受影响。

二. Spring Boot

  1. @Configuration

指出该类是 Bean 配置的信息源,相当于XML中的,一般加在主类上。

  1. @EnableAutoConfiguration

让 Spring Boot 根据应用所声明的依赖来对 Spring 框架进行自动配置,一般加在主类上。

  1. @SpringBootApplication

相当于以下三个注解的结合,一般用在启动类@SpringBootConfiguration、@EnableAutoConfiguration、@ComponentScan

  1. @ImportResource

将资源导入容器

  1. @PropertySource

导入properties文件

  1. @Role

bean角色定义为ROLE_APPLICATION(默认值)、ROLE_SUPPORT(辅助角色)、ROLE_INFRASTRUCTURE(后台角色,用户无感)

  1. @Lazy

使bean懒加载,取消bean预初始化

  1. @Lookup

在容器中选出与方法返回的类型相同类型

  1. @Autowired

默认按类型装配,如果我们想使用按名称装配,可以结合@Qualifier注解一起使用。(一般项目使用默认类型即可)

  1. @Qualifier

申明bean名字,且可以按bean名字加载bean

  1. @Description

添加bean的文字描述

  1. @EnableAspectConfiguration

启动AspectJ自动配置(AOP)

  1. @AutoConfigureOrder

指定配置类初始化顺序,越小初始化越早

  1. @Conditional,当指定的条件都满足时,组件才被注册
  2. @ConditionalOnResource,指定resources都在classpath上才注册配置
  3. @ConditionalOnWebApplication,是在web环境才注册配置
  4. @ConditionalOnMissingBean,指定bean不在上下文中时,才初始化当前bean。用在方法上,则默认依赖类为方法的返回类型
  5. @EnableCaching,开启缓存配置,支持子类代理或者AspectJ增强
  6. @CacheConfig,在一个类下,提供公共缓存配置
  7. @CacheEvict,删除缓存
  8. @CachePut,每次先执行方法,再将结果放入缓存
  9. @EnableScheduling,开启定时任务功能,一般放在启动类
  10. @ConfigurationProperties,将properties文件里的内容,自动注入bean对应的属性中
  11. @EnableConfigurationProperties,启动@ConfigurationProperties功能
  12. @Entity ,@Table(name=“”)

一般用于entity类中,对应数据库中类表名

表明这是一个实体类,一般用于jpa,这两个注解一块使用,但是如果表名和实体类名相同的话,@Table可以省略。

  1. @Id:用在属性上,表明该属性为主键
  2. @Basic

是实体类与数据库字段映射时最简单的类型。类型支持Java基本类型(byte、short、int、long、float、double、char、boolean),包装类,枚举类,以及实现了serializable接口的类型。属性fetch有两个选项EAGER(即时加载,默认值)和LAZY(懒加载)

三.Spring Cloud

  1. @EnableEurekaServer

用在springboot启动类上,表示这是一个eureka服务注册中心

  1. @EnableDiscoveryClient

用在springboot启动类上,表示这是一个服务,可以被注册中心找到;

常用Nacos作为注册中心

  1. @LoadBalanced

开启负载均衡能力;常用Nginx作为负载均衡工具

  1. @EnableCircuitBreaker

用在启动类上,开启断路器功能;

  1. @HystrixCommand(fallbackMethod=”backMethod”)

用在方法上,fallbackMethod指定断路回调方法;

  1. @EnableConfigServer

用在启动类上,表示这是一个配置中心,开启Config Server;

  1. @EnableZuulProxy

开启zuul路由,用在启动类上;

  1. @SpringCloudApplication
    • @SpringBootApplication
    • @EnableDiscovertyClient
    • @EnableCircuitBreaker

分别是SpringBoot注解、注册服务中心Eureka注解、断路器注解。对于SpringCloud来说,这是每一微服务必须应有的三个注解,所以才推出了@SpringCloudApplication这一注解集合。

  1. @ConfigurationProperties

Spring源码中大量使用了ConfigurationProperties注解,比如server.port就是由该注解获取到的,通过与其他注解配合使用,能够实现Bean的按需配置。

该注解有一个prefix属性,通过指定的前缀,绑定配置文件中的配置,该注解可以放在类上,也可以放在方法上。

@ConfigurationProperties 和 @value 有着相同的功能,但是 @ConfigurationProperties的写法更为方便

  1. @FeignClient注解

远程调用项目下不同微服务的远程调用;@FeignClient标签的常用属性如下:name:指定FeignClient的名称,如果项目使用了Ribbon,name属性会作为微服务的名称,用于服务发现url: url一般用于调试

  1. @CrossOrigin

可以处理跨域请求,让你能访问不是一个域的文件

  1. @ApiOperation

首先@ApiOperation注解不是Spring自带的,它是是swagger里的注解

是用来构建Api文档的@ApiOperation(value = “接口说明”, httpMethod = “接口请求方式”, response = “接口返回参数类型”, notes = “接口发布说明”;

  1. @EnableFeignClients 开启Spring Cloud Feign的支持
  2. @RibbonClient,这个注解用来为负载均衡客户端做一些自定义的配置,可以进一步配置或自定义从哪里获取服务端列表、负载均衡策略、Ping也就是服务鉴活策略等等

四. Lombok

  1. @Data

注解在类上;提供类所有属性的 getting 和 setting 方法,此外还提供了equals、canEqual、hashCode、toString 方法

  1. @Setter :注解在属性上;为属性提供 setting 方法
  2. @Getter :注解在属性上;为属性提供 getting 方法
  3. @Log4j

注解在类上;为类提供一个 属性名为log 的 log4j 日志对象

  1. @Synchronized : 加个同步锁
  2. @SneakyThrows : 等同于try/catch 捕获异常
  3. @Value

注解和@Data类似,区别在于它会把所有成员变量默认定义为private final修饰,并且不会生成set方法。

  1. @NoArgsConstructor :注解在类上;为类提供一个无参的构造方法

  2. @AllArgsConstructor :注解在类上;为类提供一个全参的构造方法

    最后,感谢CSDN两位大佬文章参考,本文仅供学习参考,如愿查看更详细总结,请查看链接:
    哪吒总结: [https://blog.csdn.net/guorui_java/article/details/107379648]
    白大锅总结

猜你喜欢

转载自blog.csdn.net/zhangkai__/article/details/125883476