SpringBoot【五】史上最最最全springboot常用注解

一、前言🔥

环境说明: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(可以为Auto、IDENTITY、native等,Auto表示可在多个数据库间切换),指定sequence的名字是repair_seq

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

name为sequence的名称,以便使用,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:

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

  • @Log4j2 :

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

  • @NoArgsConstructor:

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

  • @AllArgsConstructor:

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

  • @EqualsAndHashCode:

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

  • @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:

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

... ...

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值