Springboot系列(五):史上最最最全springboot常用注解 | 超级干货,建议收藏!

1,491 阅读8分钟

👨‍🎓作者:bug菌
✏️博客:CSDN掘金infoQ51CTO
🎉简介:CSDN博客专家,C站历届博客之星Top50,掘金/InfoQ/51CTO等社区优质创作者,全网合计8w粉+,对一切技术感兴趣,重心偏Java方向;硬核公众号「 猿圈奇妙屋」,欢迎小伙伴们的加入,一起秃头,一起变强。
..
✍️温馨提醒:本文字数:1999字, 阅读完需:约 5 分钟

         嗨,家人们,我是bug菌呀,我又来啦。今天我们来聊点什么咧,OK,接着为大家更《springboot零基础入门教学》系列文章吧。希望能帮助更多的初学者们快速入门!

      小伙伴们在批阅文章的过程中如果觉得文章对您有一丝丝帮助,还请别吝啬您手里的赞呀,大胆的把文章点亮👍吧,您的点赞三连(收藏⭐+关注👨‍🎓+留言📃)就是对bug菌我创作道路上最好的鼓励与支持😘。时光不弃🏃🏻‍♀️,创作不停💕,加油☘️

一、前言🔥

环境说明:Windows10 + Idea2021.3.2 + Jdk1.8 + SpringBoot 2.3.1.RELEASE

       学习了前四期内容,我们算已经半只jio踏进了大门,从项目框架搭建到yaml配置项目启动到多环境动态切换再到stater引入,其实我们已经对springboot有了一定的基础,接下来就要真正步入实战演练了,但在实战之前啊,我们还需要做一件事,那就是熟悉springboot常用的注解,这对日后项目实战有着事半功倍的奇效。大家可得好好学哦~

我们都知道SpringBoot是采用纯java代码所创,不再需要配置繁杂的xml等配置文件,在配置中也可享受面向对象所带来的好处,类型安全对重构提供了良好的支持,减少复杂配置文件的同时亦能享受到springIoC容器提供的功能。其实啊,有这些便利,很大程度都归结于注解的功劳,那先来看看,基本的常用注解有那些吧~

二、Spring Boot常用注解

ps:由于注解过多,小伙伴们可采用ctrl+F 来进行搜索哦。
  • @SpringBootApplication

申明让spring boot自动给程序进行必要的配置,这个配置等同于:@Configuration@EnableAutoConfiguration@ComponentScan 三个配置。

  • @ImportAutoConfiguration

导入配置类,一般做测试的时候使用,正常优先使用@EnableAutoConfiguration.

  • @EnableAutoConfiguration 

自动配置。

  • @SpringBootConfiguration

这个注解实际就是一个@Configuration,标识启动类也是一个配置类。

  • @ComponentScan

组件扫描,可自动发现和装配一些Bean。

  • @Component

可配合CommandLineRunner使用,在程序启动后执行一些基础任务。

  • @RestController

@Controller和@ResponseBody的合集,表示这是个控制器bean,并且是将函数的返回值直 接填入HTTP响应体中,是REST风格的控制器。

  • @ResponseBody

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

  • @RequestMapping

提供路由信息,负责URL到Controller中的具体函数的映射。

  • @Autowired

自动导入依赖的bean。

  • @Inject

等价于默认的@Autowired,只是没有required属性;

  • @PathVariable

获取参数。

@JsonBackReference

解决嵌套外链问题。

  • @Service

一般用于修饰service层的组件。

  • @Bean

用@Bean标注方法等价于XML中配置的bean。

  • @Value

注入Spring boot application.properties配置的属性的值。

  • @Resource

@Resource(name=”name”,type=”type”);没有括号内内容的话,默认byName。与@Autowired干类似的事。

三、jpa注解

  • @Entity,@Table(name="")

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

  • @MappedSuperClass

用在确定是父类的entity上。父类的属性子类可以继承。

  • @NoRepositoryBean

一般用作父类的repository,有这个注解,spring不会去实例化该repository

  • @Column

如果字段名与列名相同,则可以省略。

  • @Id

表示该属性为主键。

  • @GeneratedValue(strategy = GenerationType.SEQUENCE,generator = “repair_seq”)

表示主键生成策略是sequence(可以为AutoIDENTITYnative等,Auto表示可在多个数据库间切换),指定sequence的名字是repair_seq

  • @SequenceGeneretor(name = “repair_seq”, sequenceName = “seq_repair”, allocationSize = 1)

namesequence的名称,以便使用,sequenceName为数据库的sequence名称,两个名称可以一致。

  • @Transient

表示该属性并非一个到数据库表的字段的映射,ORM框架将忽略该属性。如果一个属性并非数据库表的字段映射,就务必将其标示为@Transient,否则,ORM框架默认其注解为@Basic。

  • @Basic(fetch=FetchType.LAZY)

标记可以指定实体属性的加载方式。

  • @JsonIgnore

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

  • @JoinColumn(name=”loginId”)

一对一:本表中指向另一个表的外键。一对多:另一个表指向本表的外键。

  • @OneToOne、@OneToMany、@ManyToOne

对应hibernate配置文件中的一对一,一对多,多对一。

四、Lombok注解

  • @Setter

注解在属性上;为属性提供 setting 方法。

  • @Getter

注解在属性上;为属性提供 getting 方法。

  • @Data

注解在类上;提供类所有属性的 gettingsetting 方法,此外还提供了equalscanEqualhashCodetoString 方法。

  • @Log4j2

注解在类上;为类提供一个 属性名为loglog4j 日志对象,和@Log4j注解类似。

  • @NoArgsConstructor

注解在类上;为类提供一个无参的构造方法。

  • @AllArgsConstructor

注解在类上;为类提供一个全参的构造方法。

  • @EqualsAndHashCode:

默认情况下,会使用所有非瞬态(non-transient)和非静态(non-static)字段来生成equalshascode方法,也可以指定具体使用哪些属性。

  • @toString:

生成toString方法,默认情况下,会输出类名、所有属性,属性会按照顺序输出,以逗号分割。

  • @NoArgsConstructor, @RequiredArgsConstructor and @AllArgsConstructor

无参构造器、部分参数构造器、全参构造器,当我们需要重载多个构造器的时候,只能自己手写了。

  • @NonNull

注解在属性上,如果注解了,就必须不能为Null。

  • @val:

注解在属性上,如果注解了,就是设置为final类型,可查看源码的注释知道。

五、事务注解

  • @Transactional

在Spring中,事务有两种实现,分别是编程式事务和声明式事务。

 编程式事务: 编程式事务使用TransationTemplate或者直接使用底层的PlatformTransactionManager。对于编程式事务,spring推荐使用TransationTemplate。

 声明式事务: 建立在AOP基础上,其本质是对方法前后进行拦截,然后再目标方法开始之前创建或者加入一个事务,在执行完目标方法之后根据执行情况提交或者回滚事务,通过@Transactional就可以进行事务操作,更快捷而且简单。推荐使用。

六、全局异常处理

  • @ControllerAdvice:

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

  • @ExceptionHandler(Exception.class):

用在方法上面表示遇到这个异常就执行以下方法。

七、springMVC相关注解

  • @RequestMapping:

@RequestMapping(“/path”):表示该控制器处理所有“/path”的UR L请求。RequestMapping是一个用来处理请求地址映射的注解,可用于类或方法上。

  • @RequestParam:

用在方法的参数前面。

  • @PathVariable:

路径变量。参数与大括号里的名字一样要相同。

 ... ...

OK,以上就是这期所有的内容啦,如果有任何问题欢迎评论区批评指正,咱们下期见。

八、热文推荐:

文末🔥

如果还想要学习更多,小伙伴们可关注bug菌专门为大家创建的专栏《springboot零基础入门教学》,从无到有,从零到一!希望能帮助到更多小伙伴们。

我是bug菌,一名想走👣出大山改变命运的程序猿。接下来的路还很长,都等待着我们去突破、去挑战。来吧,小伙伴们,我们一起加油!未来皆可期,fighting!

感谢认真读完我博客的铁子萌,在这里呢送给大家一句话,不管你是在职还是在读,绝对终身受用。
时刻警醒自己:
抱怨没有用,一切靠自己;
想要过更好的生活,那就要逼着自己变的更强,生活加油!!!