注解介绍:
由于Spring 和Spring boot中有许多注解基本通用,所以在Spring中介绍过的注解就不会再次介绍了。如有需要,可以自行查看哦~
指项目中的组件,@Controller(控制层)、@Service(业务层)、@Repository(数据访问层)都可以称为@Component。
Spring的@Bean注解用于告诉方法,产生一个Bean对象,然后返回一个Bean对象交给Spring管理。产生这个Bean对象的方法Spring只会调用一次,随后这个Spring将会将这个Bean对象放在自己的IOC容器中;添加的bean的id为方法名;比如@Autowired , @Resource,可以通过byTYPE(@Autowired) ,byNAME(@Resource) 的方式获取Bean;
@Autowired 用来获取注入Bean. 可以作用在变量、setter方法、构造函数上;有个属性为required,可以配置为false,找不到Bean也不会报错
@Autowired
private FileService fileService;
@Resource,按照名称匹配的,作用与@Autowired类似。
声明当前类为配置类;
用于对Component进行扫描;
三种用法:
${}是去找外部配置的参数,将值赋过来
#{}是SpEL表达式,去寻找对应变量的内容
#{“xxxx”}直接写字符串就是将字符串的值注入进去
配置类中通过此注解开启对异步任务的支持;
来申明这是一个任务,包括cron,fixDelay,fixRate等类型(方法上,需先开启计划任务的支持)
@EnableAspectAutoProxy:开启对AspectJ自动代理的支持;
@EnableAsync:开启异步方法的支持;
@EnableScheduling:开启计划任务的支持;
@EnableWebMvc:开启web MVC的配置支持;
@EnableConfigurationProperties:开启对@ConfigurationProperties注解配置Bean的支持;
@EnableJpaRepositories:开启对SpringData JPA Repository的支持;
@EnableTransactionManagement:开启注解式事务的支持;
@EnableCaching:开启注解式的缓存支持;
告诉它对被批注的代码元素内部的某些警告保持静默。
用在类上居多。是用来处理请求地址映射的注解,放在方法上表示所有请求方法都是以该地址为父路径。
参数:value(“xxx/xxx”)指定请求实际地址。
@RequestMapping("/admin/vod/file")
params当包含指定参数值才处理
表示该方法的返回结果直接写入HTTP response body中一般在异步获取数据时使用,在使用@RequestMapping后,返回值通常解析为跳转路径,加上@responsebody后返回结果不会被解析为跳转路径,而是直接写入HTTP response body中。比如异步获取json数据,加上@responsebody后,会直接返回json数据。
允许request的参数在request体中,而不是在直接连接的地址后面。
eg:(@RequestBody CourseFormVo courseFormVo)
用于接收路径参数,比如@RequestMapping(“/hello/{name}”)声明的路径,将注解放在参数前,即可获取该值,通常作为Restful的接口实现方法。
eg:@RequestMapping(“/hello/{name}”)
public String getName(@PathVariable String name){}
该注解为一个组合注解,相当于 @Controller 和 @ResponseBody的组合,注解在类上,意味着,该Controller的所有方法都默认加上了@ResponseBody。
统一处理异常,包含@Component,可以被扫描到
(1)@ModelAttribute注释方法
如果把@ModelAttribute放在方法的注解上时,代表的是:该Controller的所有方法在调用前,先执行此@ModelAttribute方法。可以把这个@ModelAttribute特性,应用在BaseController当中,所有的Controller继承BaseController,即可实现在调用Controller时,先执行@ModelAttribute方法。比如权限的验证(也可以使用Interceptor)等。在同一个控制器中,注解了@ModelAttribute
的方法实际上会在@RequestMapping
方法之前被调用。如果 @ModelAttribute 和 @RequestMapping 注解在同一个方法上,那么代表给这个请求单独设置 Model 参数。此时返回的值是 Model 的参数值,而不是跳转的地址。
(2)@ModelAttribute注释一个方法的参数
当作为方法的参数使用,指示的参数应该从模型中检索。如果不存在,它应该首先实例化,然后添加到模型中,一旦出现在模型中,参数字段应该从具有匹配名称的所有请求参数中填充。Spring MVC中被称为数据绑定,数据绑定之后,可以使用 BindingResult
来返回数据验证结果。
当类级别配置了@Transactional,方法级别也配置了@Transactional,应用程序会以方法级别的事务属性信息来管理事务,换言之,方法级别的事务属性信息会覆盖类级别的相关配置信息。
eg:@Transactional(propagation=Propagation.SUPPORTS,readOnly=true)
@schema注解标注在class上,表示此类对应的数据库表对应的schema。
此注解是类注解,作用是json序列化时将java bean中的一些属性忽略掉,序列化和反序列化都受影响。
指出该类是 Bean 配置的信息源,相当于XML中的,一般加在主类上。
让 Spring Boot 根据应用所声明的依赖来对 Spring 框架进行自动配置,一般加在主类上。
相当于以下三个注解的结合,一般用在启动类@SpringBootConfiguration、@EnableAutoConfiguration、@ComponentScan
将资源导入容器
导入properties文件
bean角色定义为ROLE_APPLICATION(默认值)、ROLE_SUPPORT(辅助角色)、ROLE_INFRASTRUCTURE(后台角色,用户无感)
使bean懒加载,取消bean预初始化
在容器中选出与方法返回的类型相同类型
默认按类型装配,如果我们想使用按名称装配,可以结合@Qualifier注解一起使用。(一般项目使用默认类型即可)
申明bean名字,且可以按bean名字加载bean
添加bean的文字描述
启动AspectJ自动配置(AOP)
指定配置类初始化顺序,越小初始化越早
一般用于entity类中,对应数据库中类表名
表明这是一个实体类,一般用于jpa,这两个注解一块使用,但是如果表名和实体类名相同的话,@Table可以省略。
是实体类与数据库字段映射时最简单的类型。类型支持Java基本类型(byte、short、int、long、float、double、char、boolean),包装类,枚举类,以及实现了serializable接口的类型。属性fetch有两个选项EAGER(即时加载,默认值)和LAZY(懒加载)
用在springboot启动类上,表示这是一个eureka服务注册中心;
用在springboot启动类上,表示这是一个服务,可以被注册中心找到;
常用Nacos作为注册中心
开启负载均衡能力;常用Nginx作为负载均衡工具
用在启动类上,开启断路器功能;
用在方法上,fallbackMethod指定断路回调方法;
用在启动类上,表示这是一个配置中心,开启Config Server;
开启zuul路由,用在启动类上;
分别是SpringBoot注解、注册服务中心Eureka注解、断路器注解。对于SpringCloud来说,这是每一微服务必须应有的三个注解,所以才推出了@SpringCloudApplication这一注解集合。
Spring源码中大量使用了ConfigurationProperties注解,比如server.port就是由该注解获取到的,通过与其他注解配合使用,能够实现Bean的按需配置。
该注解有一个prefix属性,通过指定的前缀,绑定配置文件中的配置,该注解可以放在类上,也可以放在方法上。
@ConfigurationProperties 和 @value 有着相同的功能,但是 @ConfigurationProperties的写法更为方便;
远程调用项目下不同微服务的远程调用;@FeignClient标签的常用属性如下:name:指定FeignClient的名称,如果项目使用了Ribbon,name属性会作为微服务的名称,用于服务发现url: url一般用于调试
可以处理跨域请求,让你能访问不是一个域的文件
首先@ApiOperation注解不是Spring自带的,它是是swagger里的注解
是用来构建Api文档的@ApiOperation(value = “接口说明”, httpMethod = “接口请求方式”, response = “接口返回参数类型”, notes = “接口发布说明”;
注解在类上;提供类所有属性的 getting 和 setting 方法,此外还提供了equals、canEqual、hashCode、toString 方法
注解在类上;为类提供一个 属性名为log 的 log4j 日志对象
注解和@Data类似,区别在于它会把所有成员变量默认定义为private final修饰,并且不会生成set方法。
@NoArgsConstructor :注解在类上;为类提供一个无参的构造方法
@AllArgsConstructor :注解在类上;为类提供一个全参的构造方法
最后,感谢CSDN两位大佬文章参考,本文仅供学习参考,如愿查看更详细总结,请查看链接:
哪吒总结: [https://blog.csdn.net/guorui_java/article/details/107379648]
白大锅总结