0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

Springboot常用注解合集

jf_78858299 来源:java架构学习专栏 作者:java架构学习专栏 2023-04-07 14:27 次阅读

常用注解

@SpringBootApplication

前几章,在系统启动类里面,都加入了此启动注解,此注解是个组合注解,包括了@SpringBootConfiguration@EnableAutoConfiguration@ComponentScan注解。

  • @SpringBootConfiguration 继承至@Configuration,对于熟悉spring开发者而言,此标注当前类是配置类,并会将当前类内声明的一个或多个以@Bean注解标记的方法的实例纳入到srping容器中,并且实例名就是方法名。
  • @EnableAutoConfiguration 这个注解就是springboot能自动进行配置的魔法所在了。主要是通过此注解,能所有符合自动配置条件的bean的定义加载到spring容器中,比如根据spring-boot-starter-web ,来判断你的项目是否需要添加了webmvctomcat,就会自动的帮你配置web项目中所需要的默认配置。具体的使用,会在后期自定义实现一个自动启动类时,会讲解到它的一些机制。此章节就不深入了,只需要它是这个用途即可,一般上也单独使用不要这个注解,但比如需要排除一些无需自动配置的类时,可利用exclude进行排除。
  • @ComponentScan 这个熟悉spring的开发者也应该熟悉,会扫描当前包及其子包下被@Component,@Controller,@Service,@Repository等注解标记的类并纳入到spring容器中进行管理。

@Controller 和 @RestController

@RestController 是Spring4之后加入的注解,原来在@Controller中返回json需要@ResponseBody来配合,如果直接用@RestController替代@Controller就不需要再配置@ResponseBody,默认返回json格式。而@Controller是用来创建处理http请求的对象,一般结合@RequestMapping使用。

@RequestMapping

一个用来处理请求地址映射的注解,可用于类或方法上。用于类上,表示类中的所有响应请求的方法都是以该地址作为父路径。

常用属性(摘抄至网络):

  • value, method;

    value: 指定请求的实际地址,指定的地址可以是URI Template 模式(后面将会说明);

    method: 指定请求的method类型, GET、POST、PUT、DELETE等;

  • consumes,produces;

    consumes: 指定处理请求的提交内容类型(Content-Type),例如application/json, text/html;

    produces: 指定返回的内容类型,仅当request请求头中的(Accept)类型中包含该指定类型才返回;

  • params,headers

    params: 指定request中必须包含某些参数值是,才让该方法处理。

    headers: 指定request中必须包含某些指定的header值,才能让该方法处理请求。

常用的基本上就valuemethod了。 其简化注解有

@GetMapping 等同于 @RequestMapping(method = RequestMethod.GET)

@PostMapping 等同于 @RequestMapping(method = RequestMethod.POST)

@PutMapping 等同于 @RequestMapping(method = RequestMethod.PUT)

@DeleteMapping 等同于 @RequestMapping(method = RequestMethod.DELETE)

@PatchMapping 等同于 @RequestMapping(method = RequestMethod.PATCH)

@RequestBody和@ResponseBody

  • @RequestBody注解允许request的参数在reqeust体中,常常结合前端POST请求,进行前后端交互。
  • @ResponseBody注解支持将的参数在reqeust体中,通常返回json格式给前端。

@PathVariable、@RequestParam、@RequestAttribute

  • @PathVariable用来接收参数,如/path/001,可接收001作为参数

图片

  • @RequestParam 用来接收URL中的参数,如/param?id=001,可接收001作为参数

图片

  • @RequestAttribute用于访问由过滤器或拦截器创建的、预先存在的请求属性,效果等同与request.getAttrbute().

图片

@Component、@Service、@Repository

这三者都是申明一个单例的bean类并纳入spring容器中,后两者其实都是继承于@Component

  • @Component 最普通的组件,可以被注入到spring容器进行管理
  • @Repository 作用于持久层
  • @Service 作用于业务逻辑层

通常一些类无法确定是使用@Service还是@Component时,注解使用@Component,比如redis的配置类等

@ModelAttribute

主要是绑定请求参数到指定对象上。此注解可被用于方法、参数上。

  • 运用在参数上,会将客户端传递过来的参数按名称注入到指定对象中,并且会将这个对象自动加入ModelMap中,便于View层使用;
  • 运用在方法上,会在每一个@RequestMapping 标注的方法前执行 ,如果有返回值,则自动将该返回值加入到ModelMap中;

由于现在都采用前后端分离开发,故此注解相对用的较少了,但对于一些在每次请求前需要进行一些额外操作时。使用此注解依然是个选择,比如进行统一的业务校验等,但使用此注解实现类似功能时需要注意,使用异步调用时,比如callable或者DeferredResult时,被此注解的方法会执行两次,因为异步请求时,是挂起另一个线程去重新执行,对于配置了拦截器而已,它们的执行顺序为

拦截器的相关知识点会在下章进行说明,这里只是特殊说明下。解决方案的话可简单根据DispatcherType类型进行判断,异步时对应类型为:ASYNC,第一次请求正常为:REQUEST。

@Qualifier:当有多个同一类型的Bean时,可以用@Qualifier(“name”)来指定。与@Autowired配合使用。@Qualifier限定描述符除了能根据名字进行注入,但能进行更细粒度的控制如何选择候选者,具体使用方式如下:

@Autowired 
@Qualifier(value = “demoInfoService”) 
private DemoInfoService demoInfoService;

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

@Api @ApiOperation @ApiParam

@Api @ApiOperation @ApiParam主要是用于swagger提供开发者文档,文档中生成的注释内容

图片

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配置文件中的一对一,一对多,多对一。

全局异常处理

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

@ExceptionHandler(Exception.class):用在方法上面表示遇到这个异常就执行以下方法。

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • spring
    +关注

    关注

    0

    文章

    332

    浏览量

    14161
  • 系统
    +关注

    关注

    1

    文章

    981

    浏览量

    21036
  • 注解
    +关注

    关注

    0

    文章

    18

    浏览量

    2638
  • SpringBoot
    +关注

    关注

    0

    文章

    172

    浏览量

    106
收藏 人收藏

    评论

    相关推荐

    Springboot是如何获取自定义异常并进行返回的

    源码剖析Springboot是如何获取自定义异常并进行返回的。来吧!第一步:肯定是在Springboot启动的过程中进行的异常处理初始化,于是就找到了handlerExceptionResolver类
    发表于 03-22 14:15

    AD常用库元件资源合集

    AD常用库元件资源合集
    发表于 01-14 15:42 213次下载

    Spring Boot常用注解与使用方式

    企业开发项目SpringBoot已经是必备框架了,其中注解是开发中的小工具(谁处可见哦),用好了开发效率大大提升,当然用错了也会引入缺陷。
    的头像 发表于 07-08 10:57 1094次阅读

    求一种SpringBoot定时任务动态管理通用解决方案

    SpringBoot的定时任务的加强工具,实现对SpringBoot原生的定时任务进行动态管理,完全兼容原生@Scheduled注解,无需对原本的定时任务进行修改
    的头像 发表于 02-03 09:49 549次阅读

    一个无需注解SpringBoot API文档生成神器

    如果提交的表单是 application/x-www-form-urlencoded 类型的key/value格式,你可以在 SpringBoot 端通过在 @param 参数后添加字段解释或者在相关的JavaBean对象里面添加解释:
    的头像 发表于 03-13 09:38 589次阅读

    什么是 SpringBoot

    本文从为什么要有 `SpringBoot`,以及 `SpringBoot` 到底方便在哪里开始入手,逐步分析了 `SpringBoot` 自动装配的原理,最后手写了一个简单的 `start` 组件,通过实战来体会了 `
    的头像 发表于 04-07 11:28 1020次阅读
    什么是 <b class='flag-5'>SpringBoot</b>?

    SpringBoot常用注解及使用方法1

    基于 SpringBoot 平台开发的项目数不胜数,与常规的基于`Spring`开发的项目最大的不同之处,SpringBoot 里面提供了大量的注解用于快速开发,而且非常简单,基本可以做到开箱即用! 那
    的头像 发表于 04-07 11:51 444次阅读

    SpringBoot常用注解及使用方法2

    基于 SpringBoot 平台开发的项目数不胜数,与常规的基于Spring开发的项目最大的不同之处,SpringBoot 里面提供了大量的注解用于快速开发,而且非常简单,基本可以做到开箱即用!
    的头像 发表于 04-07 11:52 407次阅读

    SpringBoot常用注解及原理

    SpringBootConfiguration继承自@Configuration,二者功能也一致,标注当前类是配置类, 并会将当前类内声明的一个或多个以@Bean注解标记的方法的实例纳入到spring容器中,并且实例名就是方法名。
    的头像 发表于 04-07 14:30 406次阅读

    SpringBoot的核心注解1

    今天跟大家来探讨下SpringBoot的核心注解@SpringBootApplication以及run方法,理解下springBoot为什么不需要XML,达到零配置
    的头像 发表于 04-07 14:34 489次阅读
    <b class='flag-5'>SpringBoot</b>的核心<b class='flag-5'>注解</b>1

    SpringBoot的核心注解2

    今天跟大家来探讨下SpringBoot的核心注解@SpringBootApplication以及run方法,理解下springBoot为什么不需要XML,达到零配置
    的头像 发表于 04-07 14:34 1750次阅读
    <b class='flag-5'>SpringBoot</b>的核心<b class='flag-5'>注解</b>2

    springmvc常用5种注解

    SpringMVC是一种基于Java的Web框架,使用注解可以更加方便灵活地开发和管理控制器,实现请求的映射和处理。在SpringMVC中,有许多常用注解,本文将详细介绍其中的五种注解
    的头像 发表于 11-22 16:51 363次阅读

    springboot核心注解

    Spring Boot 是基于 Spring 框架的开源框架,它可以帮助开发者快速构建、部署和运行独立的、生产级的 Spring 应用程序。Spring Boot 提供了一系列核心注解,这些注解可以
    的头像 发表于 11-23 09:23 290次阅读

    一个注解搞定SpringBoot接口防刷

    技术要点:springboot的基本知识,redis基本操作,
    的头像 发表于 11-28 10:46 221次阅读

    SpringBoot核心注解由几个注解组成

    简化应用程序开发的注解,其中核心注解包括 @SpringBootApplication、@RestController、@RequestMapping、@Autowired、@ComponentScan
    的头像 发表于 12-03 15:09 336次阅读