iis服务器助手广告广告
返回顶部
首页 > 资讯 > 后端开发 > JAVA >Spring Boot 常用注解汇总
  • 670
分享到

Spring Boot 常用注解汇总

springbootspringjava后端 2023-08-25 15:08:12 670人浏览 薄情痞子
摘要

Spring Boot 常用注解 一、启动注解@SpringBootApplication@SpringBootConfiguration 注解@EnableAutoConfiguration 注解@ComponentScan 注解


一、启动注解@SpringBootApplication

springBoot最核心的注解,用于SpringBoot的主类,标识这是一个 SpringBoot 应用,用来开启 Spring Boot 的各项能力。

@SpringBootConfiguration,@EnableAutoConfiguration,@ComponentScan三个注解的组合。由于这些注解一般一起使用,所以干脆整合成了一个统一的注解@SpringBootApplication。

@SpringBootConfiguration 注解

继承@Configuration注解,主要用于加载配置文件,二者功能致,标注当前类为配置类, 将当前类内声明的一个或多个以@Bean注解标记的方法的实例纳入到spring容器中,且实例名为方法名。


@EnableAutoConfiguration 注解

开启自动配置功能,帮助SpringBoot应用将所有符合条件的@Configuration配置都加载到当前SpringBoot创建并使用的IoC容器。智能的自动配置功效借助于Spring框架原有的一个工具类:SpringFactoriesLoader的支持。


@ComponentScan 注解

主要用于组件扫描自动装配,自动扫描并加载符合条件的组件或bean定义,最终将这些bean定义加载到容器中。可以通过basePackages等属性指定@ComponentScan自动扫描的范围,若不指定,则Spring框架实现默认从声明@ComponentScan所在类的package进行扫描,SpringBoot的启动类最好放在root package下。


二、配置文件相关注解

@Configuration

用于定义配置类,指出该类是 Bean 配置的信息源,相当于传统的xml配置文件,一般加在主类上。如果有些第三方库需要用到xml文件,建议仍然通过@Configuration类作为项目的配置主类——可以使用@ImportResource注解加载xml配置文件。


@ComponentScan

组件扫描。让spring Boot扫描到Configuration类并把它加入到程序上下文。

@ComponentScan注解默认就会装配标识了@Controller,@Service,@Repository,@Component注解的类到spring容器中。


三、Controller 相关注解

@Controller

控制器,处理Http请求。后面[注入bean相关注解]会细说


@RestController 复合注解

@RestController注解= @ResponseBody+@Controller,效果是将方法返回的对象直接在浏览器上展示成json格式。


@RequestBody

通过HttpMessageConverter读取Request Body并反序列化为Object(泛指)对象

@RequestBody主要用来接收前端传递给后端JSON字符串中的数据的(请求体中的数据的);而最常用的使用请求体传参是POST请求,所以使用@RequestBody接收数据时,一般都用POST方式进行提交。在后端的同一个接收方法里,@RequestBody与@RequestParam()可以同时使用,@RequestBody最多只能有一个,而@RequestParam()可以有多个。


@ResponseBody

  • @ResponseBody这个注解通常使用在控制层(controller)的方法上,其作用是将方法的返回值以特定的格式写入到response的body区域,进而将数据返回给客户端。当方法上面没有写ResponseBody,底层会将方法的返回值封装为ModelAndView对象。

  • 字符串则直接将字符串写到客户端。

  • 是一个对象,此时会将对象转化为json串然后写到客户端。这里需要注意的是,如果返回对象,按utf-8编码。如果返回String,默认按iso8859-1编码,页面可能出现乱码。因此在注解中我们可以手动修改编码格式,比如@RequestMapping(value=“/cat/query”,produces=“text/html;charset=utf-8”),前面是请求的路径,后面是编码格式。

  • 转化为json格式的字符串是通过HttpMessageConverter中的方法实现的,因为它是一个接口,因此由其实现类完成转换。如果是bean对象,会调用对象的getXXX()方法获取属性值并且以键值对的形式进行封装,进而转化为json串。如果是map集合,采用get(key)方式获取value值,然后进行封装。

  • 一般在异步获取数据时使用,在使用@RequestMapping 后,返回值通常解析为跳转路径,加上@responsebody 后返回结果不会被解析为跳转路径,而是直接写入 HTTP response body 中。比如异步获取json 数据,加上 @responsebody 后,会直接返回 json 数据。


@RequestMapping

将 HTTP 请求映射到 mvc 和 REST 控制器的处理方法上,提供路由信息,负责URL到Controller中的具体函数的映射。


@GetMapping

将HTTP get请求映射到特定处理程序的方法注解


@PostMapping

将HTTP post请求映射到特定处理程序的方法注解


@RequestMapping 和 @GetMapping @PostMapping 区别

  • @GetMapping是组合注解,是@RequestMapping(method = RequestMethod.GET)的缩写。

  • @PostMapping是组合注解,是@RequestMapping(method = RequestMethod.POST)的缩写。


四、取请求参数值

@PathVariable

获取url中的数据


@Value

注入 application.properties 或 application.yml 配置的属性的值;


@RequestParam

获取请求参数的值


@RequestHeader

把Request请求header部分的值绑定到方法的参数上


@CookieValue

把Request header中关于cookie的值绑定到方法的参数上


五、注入bean相关

@Bean

产生一个bean的方法,交给Spring容器管理。支持别名@Bean(“xx-name”)


@Component

把普通pojo实例化到spring容器,虽然有了@Autowired,但是我们还是要写一堆bean的配置文件,相当麻烦,而@Component就是告诉spring,我是pojo类,把我注册到容器中吧,spring会自动提取相关信息。那么我们就不用写麻烦的xml配置文件了

注:@Component是最通用的 Spring 注解。 在类路径扫描期间找到装饰有@Component的 Java 类,并在上下文中注册为 Bean。也泛指各种组件,就是说当我们的类不属于各种归类的时候(不属于@Controller、@Services等的时候),使用@Component来标注这个类。


@controller

用于标注控制层。这里控制层里面的每个方法,都可以去调用@Service标识的类(业务逻辑层),
@Service标识的类中的方法可以继续调用@Resposity标识的接口实现类(Dao层/持久层)。


@Service

注入dao,用于标注服务层(业务逻辑层),主要用来进行业务的逻辑处理

  • @Component注解的一个特例,作用在类上,使用注解配置和类路径扫描时,被@Service注解标注的类会被Spring扫描并注册为Bean,用于标注服务层组件,表示定义一个bean
  • 注解作用域默认单例
  • 使用时没有传参数,Bean名称默认为当前类的类名,首字母小写
  • @Service(“serviceBeanId”)或@Service(value=”serviceBeanId”)使用时传参数,使用value作为Bean名字

@Repository

实现dao访问,用于标注数据访问层(Dao层/持久层),也可以说用于标注数据访问组件,即DAO组件.


@Scope作用域注解

  • @Scope在和@Component注解一起修饰在类上,作为类级别注解时,@Scope表示该类实例的范围

  • 在和@Bean一起修饰在方法上,作为方法级别注解时,@Scope表示该方法返回的实例的范围。

  • 对于@Scope注解,我们常用的属性一般就是:valueproxyMode,value就是指明作用域范围,proxyMode指明哪种作用域代理。

value    singleton   表示该bean是单例的。(默认)    prototype   表示该bean是多例的,即每次使用该bean时都会新建一个对象。    request     在一次http请求中,一个bean对应一个实例。    session     在一个httpsession中,一个bean对应一个实例。    proxyMode    DEFAULT         不使用代理。(默认)    NO              不使用代理,等价于DEFAULT。    INTERFACES      使用基于接口的代理(jdk dynamic proxy)。    TARGET_CLASS    使用基于类的代理(cglib)。

@Entity

实体类注解
@Table(name =“数据库表名”),这个注解也注释在实体类上,对应数据库中相应的表。
@Id、@Column注解用于标注实体类中的字段,pk字段标注为@Id,其余@Column。


@Autowired

自动导入
@Autowired注解作用在构造函数、方法、方法参数、类字段以及注解上
@Autowired注解可以实现Bean的自动注入


@Qualifier

当有多个同一类型的Bean时,可以用@Qualifier(“name”)来指定。与@Autowired配合使用


六、导入配置文件

@PropertySource注解

引入单个properties文件:

@PropertySource(value = {"classpath : xxxx/xxx.properties"})

引入多个properties文件:

@PropertySource(value = {"classpath : xxxx/xxx.properties""classpath : xxxx.properties"})

@ImportResource导入xml配置文件

可以额外分为两种模式 相对路径classpath,绝对路径(真实路径)file

注意:单文件可以不写value或locations,value和locations都可用

相对路径(classpath)

引入单个xml配置文件:

@ImportSource("classpath : xxx/xxxx.xml")

引入多个xml配置文件:

@ImportSource(locations={"classpath : xxxx.xml" , "classpath : yyyy.xml"})

绝对路径(file)

引入单个xml配置文件:

@ImportSource(locations= {"file : d:/hellxz/dubbo.xml"})

引入多个xml配置文件:

@ImportSource(locations= {"file : d:/hellxz/application.xml" , "file : d:/hellxz/dubbo.xml"})

取值:使用@Value注解取配置文件中的值

@Value("${properties中的键}")private String xxx;

@Import 导入额外的配置信息

功能类似XML配置的,用来导入配置类,可以导入带有@Configuration注解的配置类或实现了ImportSelector/ImportBeanDefinitionReGIStrar。


七、事务注解 @Transactional

在Spring中,事务有两种实现方式,分别是编程式事务管理声明式事务管理两种方式

  • 编程式事务管理: 编程式事务管理使用TransactionTemplate或者直接使用底层的PlatfORMTransactionManager。对于编程式事务管理,spring推荐使用TransactionTemplate。
  • 声明式事务管理: 建立在aop之上的。其本质是对方法前后进行拦截,然后在目标方法开始之前创建或者加入一个事务,在执行完目标方法之后根据执行情况提交或者回滚事务,通过@Transactional就可以进行事务操作,更快捷而且简单。推荐使用

八、全局异常处理

@ControllerAdvice 统一处理异常

  • 注解定义全局异常处理类,本质上是一个Component,因此也会被当成组建扫描。
  • 这个类(加了@ControllerAdvice的类)是为那些声明了(@ExceptionHandler、@InitBinder 或 @ModelAttribute注解修饰的)方法的类而提供的专业化的@Component , 以供多个 Controller类所共享。
  • 即通过AOP拦截异常,具体你想做更细致的拦截筛选和拦截之后的处理,你自己通过@ExceptionHandler、@InitBinder 或 @ModelAttribute这三个注解以及被其注解的方法来自定义
@ControllerAdvice(annotations = {RestController.class, Controller.class}) //拦截加了RestController和Controller的类

@ExceptionHandler 声明异常处理方法

  • @ControllerAdvice 配合 @ExceptionHandler 实现全局异常处理
  • 比如在方法上加:@ExceptionHandler(IllegalArgumentException.class),则表明此方法处理IllegalArgumentException 类型的异常,如果参数为空,将默认为方法参数列表中列出的任何异常(方法抛出什么异常都接得住)。

@ModelAttribute

  • @ControllerAdvice 配合 @ModelAttribute 预设全局数据

@InitBinder

@ControllerAdvice 配合 @InitBinder 实现对请求参数的预处理

来源地址:https://blog.csdn.net/weixin_48063660/article/details/127820917

--结束END--

本文标题: Spring Boot 常用注解汇总

本文链接: https://www.lsjlt.com/news/380326.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

本篇文章演示代码以及资料文档资料下载

下载Word文档到电脑,方便收藏和打印~

下载Word文档
猜你喜欢
  • Spring Boot 常用注解汇总
    Spring Boot 常用注解 一、启动注解@SpringBootApplication@SpringBootConfiguration 注解@EnableAutoConfiguration 注解@ComponentScan 注解...
    99+
    2023-08-25
    spring boot spring java 后端
  • Spring框架学习常用注解汇总
    目录类注解方法或属性上注解参数注解类注解 @component 标注类,泛指各种组件,类不属于各种分类的时候,用它做标注。 @Service 标注类,声明该类为业务层组件,用于处理业...
    99+
    2024-04-02
  • java中常用注解汇总
    一、java实体类中注解 @Null:被注释的元素必须为null@NotNull:被注释的元素不能为null@AssertTrue:该字段只能为true@AssertFalse:该字段的值只能为false@Min(value):被注释的元素...
    99+
    2023-09-04
    java 开发语言
  • Java经典面试题汇总:Spring Boot
    目录1. 什么是 Spring Boot?2. 为什么要用 Spring Boot? 3. Spring Boot 核心配置文件是什么?4. Spring Boot 提供了...
    99+
    2024-04-02
  • 全面汇总SpringBoot和SpringClould常用注解
    目录什么是注解?一、SpringBoot注解1.1.@SpringBootApplication1.2.@Repository1.3.@Service1.4.@RestCon...
    99+
    2024-04-02
  • spring boot中有哪些常用的注解
    spring boot中有哪些常用的注解?针对这个问题,这篇文章详细介绍了相对应的分析和解答,希望可以帮助更多想解决这个问题的小伙伴找到更简单易行的方法。@RestController和@RequestMapping注解0重要的一个新的改进...
    99+
    2023-05-31
    springboot 中有 注解
  • SpringMVC结构简介及常用注解汇总
    目录MVC结构简介 SpringMVC简介 SpringMVC执行流程 常用注解1. @Controller 2. @ResponseBody 3. @RestController ...
    99+
    2024-04-02
  • Spring Boot Rest常用框架注解有哪些
    本篇内容主要讲解“Spring Boot Rest常用框架注解有哪些”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“Spring Boot Rest常用框架...
    99+
    2023-07-02
  • Spring Boot Rest常用框架注解详情简介
    目录开始Spring Boot Rest的先决条件在Spring Initializer创建Spring Boot项目Spring Boot注解@RestController@Req...
    99+
    2024-04-02
  • Spring Boot条件注解怎么用
    本文小编为大家详细介绍“Spring Boot条件注解怎么用”,内容详细,步骤清晰,细节处理妥当,希望这篇“Spring Boot条件注解怎么用”文章能帮助大家解决疑惑,下面跟着小编的思路慢慢深入,一起来学习新知识吧。前...
    99+
    2023-06-30
  • Python常用库汇总
    fuzzywuzzy ,字符串模糊匹配。   esmre ,正则表达式的加速器。   colorama 主要用来给文本添加各种颜色,并且非常简单易用。   Prettytable 主要用于在终端或浏览器端构建格式化的输出。   dif...
    99+
    2023-01-31
    常用 Python
  • Spring Boot常用功能Profile详解
    入口 相关逻辑的入口是listener类:ConfigFileApplicationListener,当容器广播器触发ApplicationEnvironmentPreparedEv...
    99+
    2024-04-02
  • mysqladmin常用命令汇总
    mysqladmin 工具的使用格式: mysqladmin [option] command [command option] command ...... 参数选项: -c number...
    99+
    2024-04-02
  • Git常用命令汇总
    1、配置自己的用户名和邮箱 git config --global user.name "用户名" //加引号 git config --global user.email "邮箱地...
    99+
    2024-04-02
  • c# 常用框架汇总
    目录Json.NET Math.NETFaker.NetHtml Agility PackNCrawlerSuperWebSocketSuperSocket Qu...
    99+
    2024-04-02
  • RMAN常用命令汇总
    这篇文章主要讲解了“RMAN常用命令汇总”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“RMAN常用命令汇总”吧!1.    ...
    99+
    2024-04-02
  • Linux常用命令汇总
    1、tcpdump抓包 tcpdump这个命令是用来抓包的,默认情况下这个命令是没有的,需要安装一下: yum install -y tcpdump 使用这个命令的时候最好是加上你网卡的名称,不...
    99+
    2023-09-05
    linux 服务器 运维
  • Java常用命令汇总
    这篇文章就主要向大家展示了Java编程中常用的命令,下面看下具体内容。1、javac 将文件编译成.class文件用法: javac <options> <source files>其中, 可能的选项包括: -g ...
    99+
    2023-05-31
    java 常用命令 ava
  • Flutter 常用插件汇总
    目录DIO网络请求框架url_launcher系统应用跳转flutter_easyrefresh上下拉刷新flutter_swiper 轮播组件catcher 异常捕获cached_...
    99+
    2024-04-02
  • Spring Boot请求处理之常用参数注解使用教程
    目录请求处理-SpringBoot常用参数注解使用1、@PathVariable注解2、@RequestHeader注解3、@RequestParam注解4、@CookieValue...
    99+
    2024-04-02
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作