-
@Autowired
非常常用。 spring的注解,用于完成自动装配。自动装配说白了就是为对象赋值的时候,用于创建属性的实例,然后再利用反射机制,将实例化好的属性,赋值给对象。 @Autowired默认按照类型进行自动装配,若在IOC容器中进行查找的时候,如果找到两个同样类型的,会按照名字去匹配,若没有名字相同的就会抛异常。
-
@PostConstruct
比较常用。 网上很多人说是Spring的注解,但是我点进去看了一下,它在javax.annotation包下,我觉得这应该是java自带的注解吧。 Java中该注解的说明:@PostConstruct该注解被用来修饰一个非静态的void()方法。被@PostConstruct修饰的方法会在服务器加载Servlet的时候运行,并且只会被服务器执行一次。PostConstruct在构造函数之后执行,init()方法之前执行。 通常我们会是在Spring框架中使用到@PostConstruct注解 该注解的方法在整个Bean初始化中的执行顺序:
Constructor(构造方法) -> @Autowired(依赖注入) -> @PostConstruct(注释的方法)
在项目中的应用,我遇到过的就是在Spring项目中加载数据字典。网上还有一种应用,是在Spring项目定时任务中的使用,贴过来记录一下。
spring项目的定时任务
spring自带的@schedule,没有开关,项目启动总会启动一个线程;
做项目的时候就使用Java的timer,这个设置开关即可自由的控制,关闭的时候,不会启动线程;
Java的timer也需要找到一个启动类,可以放到main函数里面启动,这样的话,代码的耦合性太高了,而使用PostConstruct是很干净的。
出处:https://blog.csdn.net/qq_37636695/article/details/84791468
-
@RequestBody
非常常用。
一般用于controller层接收前端传来的对象参数。
用这个注解接收参数前台必须采用post请求的方式,且@RequestBody只能有一个,若需要传递多个参数,可以根据需要搭配或仅使用@RequestParams来完成。
注:
后端@RequestBody注解对应的类在将HTTP的输入流(含请求体)装配到目标类(即:@RequestBody后面的类)时,会根据json字符串中的key来匹配对应实体类的属性,如果匹配一致且json中的该key对应的值符合(或可转换为)实体类的对应属性的类型要求时,会调用实体类的setter方法将值赋给该属性。
若前端传递的对象中某属性赋值为"",当后端对应对象属性为String类型时,接收到的为"";若后端对应对象属性为Integer类型时,接收到的为null。
若前端传递的对象中某属性在后端无法找到对应,默认不处理。
参考:
https://blog.csdn.net/justry_deng/article/details/80972817 -
@RequestParams
非常常用。
是springmvc中接收普通参数的注解。
语法:@RequestParam(value=”参数名”,required=”true/false”,defaultValue=””)
value:表示参数名,即前端页面传过来的参数名,要求必须一致,否则将会报错400。
defaultValue:参数默认值,如果设置了该值,required=true将失效,自动为false,如果没有传该参数,就使用默认值
required:表示是否要强制包含该参数,默认值为false,表示允许请求中不包含该参数,并且该参数值会为设为null。true表示该请求中必须包含该参数否则报错。
注:
若不使用该注解,其实一样是可以接收参数的,要求controller方法中的参数名称要跟form中name名称一致。使用该注解,若配置了value,那么form中name名称要与value后的名称一致。 -
@PathVariabl
不怎么常用。 一般用于绑定路径中的占位符参数到方法参数的变量中,无论get还是post请求都可以。但若是绑定了,但请求路径中没有该参数,将会报错。
注:
如果URL中无参数,将会出错;如果URL有参数,但是没有使用@PathVariabl该注解,那么URL的参数不会默认与方法参数绑定!方法里的参数会默认绑定表单里面对应的参数!
参考:
https://www.cnblogs.com/helloworld6379/p/9501943.html
- @Data
idea中lombok插件的注解,主要作用是提高代码的简洁。可以省去实体类get、set和toString方法的代码量。
使用方式需要在maven的pom文件中添加依赖,一般idea下载插件后,在类名上方添加这个注解,导包的时候就会提示自动加入依赖了。
- @Transient
java 的transient关键字的作用是需要实现Serilizable接口,将不需要序列化的属性前添加关键字transient,序列化对象的时候,这个属性就不会序列化到指定的目的地中。
@transient 就是在给某个javabean上需要添加个属性,但是这个属性你又不希望给存到数据库中去,仅仅是做个临时变量,用一下。不修改已经存在数据库的数据的数据结构。
参考:
https://blog.csdn.net/rongxiang111/article/details/86476028
以上仅为个人学习过程中常用到的注解,结合一些博主的文章和个人理解的总结,如有错误,请随时指出。
未完待续…
-
@RestController
-
@RequestMappinp
-
@PutMapping
-
GetMapping