一、前言🔥
环境说明: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:
路径变量。参数与大括号里的名字一样要相同。
... ...

5114

被折叠的 条评论
为什么被折叠?



