SpringBoot/Spring Cloud常见注解(面试)

2023-11-01

@RequestMapping:在Spring MVC 中使用 @RequestMapping 来映射请求,也就是通过它来指定控制器可以处理哪些URL请求,将请求和处理请求的控制器方法关联起来,建立映射关系,这个控制器方法请求路径为http://localhost:端口号/项目名称/RequestMapping命名

@@RequestMapping("/user")
public class UserController{
	@RequestMapping("/login")
	//这里的请求url路径为http://localhost:8080(默认端口号)/项目名称/user/login
	//你也可以通过网关或者nginx对这个请求url进行转发(这里就不多说了)
	public ResultMessage login(@RequestBody User user){
		//代码....
		return resultMessage;
	}
}

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

//继续用上面的方法举例,这里先看User实体类属性
@Data
public class User{
	private int id;
	private String username;
	private String password;
}

请求体的json数据

{
    "username":"test",
    "password":"test"
}

@Responsebody将java对象转为json格式的数据,将controller的方法返回的对象通过适当的转换器转换为指定的格式之后,写入到response对象的body区,通常用来返回JSON数据或者是XML数据。
注意:在使用此注解之后不会再走视图处理器,而是直接将数据写入到输入流中,他的效果等同于通过response对象输出指定格式的数据。

@RequestParam():注解@RequestParam接收的参数是来自HTTP请求体请求url的QueryString中;RequestParam可以接受简单类型的属性,也可以接受对象类型。
有三个配置参数:

  • required 表示是否必须,默认为 true,必须。
  • defaultValue 可设置请求参数的默认值。
  • value 为接收url的参数名(相当于key值)。
	//常见的是get方法,http://localhost:8080(默认端口号)/项目名称/user/login?username=&password=;当然post也行
	public ResultMessage login(@RequestParam(value = "username") String username,@RequestParam(value = "password")  String password){
		//代码....
		return resultMessage;
	}

@PathVariable:spring3.0的一个新功能:接收请求路径中占位符的值

@PathVariable("xxx")
通过 @PathVariable 可以将URL中占位符参数{xxx}绑定到处理器类的方法形参中@PathVariable("xxx") 
 
@RequestMapping(value="user/{id}/{username}")
请求路径:http://localhost:8080/project/user/1/test

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

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

@Service:注解用于类上,标记当前类是一个service类,加上该注解会将当前类自动注入到spring容器中,不需要再在applicationContext.xml文件定义bean了。

@Mapper:使用@mapper后,不需要在spring配置中设置扫描地址,通过mapper.xml里面的namespace属性对应相关的mapper类,spring将动态的生成Bean后注入到ServiceImpl中。

@MapperScan:功能跟@Mapper一样但是可以直接扫描整个包,使同个包下拥有@Mapper注解效果,该注解在启动类Application上。

@Repository:功能跟@Mapper类似,但是需要在Spring中配置扫描地址,然后生成Dao层的Bean才能被注入到Service层中;@Mapper不需要配置扫描地址,通过xml里面的namespace里面的接口地址,生成了Bean后注入到Service层中。

@Component:@Component (把普通pojo实例化到spring容器中,相当于配置文件中的 )
泛指各种组件,就是说当我们的类不属于各种归类的时候(不属于@Controller、@Services等的时候),我们就可以使用@Component来标注这个类。

@ComponentScan:它对应XML配置中的元素,@ComponentScan的功能其实就是自动扫描并加载符合条件的组件(比如@Component和@Repository等)或者bean定义,最终将这些bean定义加载到IoC容器中。

@Controller:控制器(注入服务)用于标注控制层,相当于struts中的action层

@Entity :表明是一个实体类

@Table :对应的数据表名

@Column : 映射表对应的字段名

@Setter:自动添加类中所有属性相关的 set 方法
@Getter:自动添加类中所有属性相关的 get 方法
@Builder:使得该类可以通过 builder (建造者模式)构建对象
@RequiredArgsConstructor:生成一个该类的构造方法,禁止无参构造
@ToString:重写该类的toString()方法
@EqualsAndHashCode:重写该类的equals()和hashCode()方法

@Data:需要导入Lombok依赖,等价于上面的@Setter、@Getter、@RequiredArgsConstructor、@ToString、@EqualsAndHashCode

@EnableTransactionManagement:启注解事务管理,等同于xml配置方式的 <tx:annotation-driven />,用于启动类上

@Transactional:开启事务,常用于serviceImpl的方法上

@Slf4j:如果不想每次都写private final Logger logger = LoggerFactory.getLogger(当前类名.class); 可以用注解@Slf4j;

@SpringBootApplication:Sprnig Boot项目的核心注解,目的是开启自动配置

@Configuration:用于定义配置类,可替换xml配置文件,被注解的类内部包含有一个或多个被@Bean注解的方法,这些方法将会被AnnotationConfigApplicationContext或AnnotationConfigWebApplicationContext类进行扫描,并用于构建bean定义,初始化Spring容器。

注意:@Configuration注解的配置类有如下要求:

@Configuration不可以是final类型;
@Configuration不可以是匿名类;
嵌套的configuration必须是静态类。

@SpringBootConfiguration:@SpringBootConfiguration继承自@Configuration,二者功能也一致,标注当前类是配置类,
并会将当前类内声明的一个或多个以@Bean注解标记的方法的实例纳入到spring容器中,并且实例名就是方法名。

@Bean:@Bean是一个方法级别上的注解,主要用在@Configuration注解的类里,也可以用在@Component注解的类里。添加的bean的id为方法名

@Autowired在这里插入图片描述

  • Autowired默认按byType自动装配
  • Autowired只包含一个参数:required,表示是否开启自动准入,默认是true。
  • Autowired如果要使用byName,需要使用@Qualifier一起配合。
  • Autowired能够用在:构造器、方法、参数、成员变量和注解上
  • Autowired是spring定义的注解
    参考链接

@Qualifier:Qualifier的意思是合格者,通过这个标示,表明了哪个实现类才是我们所需要的,添加@Qualifier注解,需要注意的是@Qualifier的参数名称为我们之前定义@Service注解的名称之一。

@Resource

  • 默认byName自动装配。
  • 包含七个参数,其中最重要的两个参数是:name 和 type。
  • 如果指定了name,则用byName自动装配,如果指定了type,则用byType自动装配。
  • 能用在:类、成员变量和方法上。
  • JSR-250定义的注解。在这里插入代码片

@EnableFeignClients:@EnableFeignClients注解告诉框架扫描所有使用注解@FeignClient定义的feign客户端,并把feign客户端注册到IOC容器中。

@FeignClient

  • name:指定FeignClient的名称,如果项目使用了Ribbon,name属性会作为微服务的名称,用于服务发现 url:
  • url一般用于调试,可以手动指定@FeignClient调用的地址 decode404:当发生http
  • 404错误时,如果该字段位true,会调用decoder进行解码,否则抛出FeignException configuration:
  • Feign配置类,可以自定义Feign的Encoder、Decoder、LogLevel、Contract fallback:
  • 定义容错的处理类,当调用远程接口失败或超时时,会调用对应接口的容错逻辑,fallback指定的类必须实现@FeignClient标记的接口
  • fallbackFactory: 工厂类,用于生成fallback类示例,通过这个属性我们可以实现每个接口通用的容错逻辑,减少重复的代码
  • path: 定义当前FeignClient的统一前缀

@Override:重写注解,
1、可以当注释用,方便阅读;
2、编译器可以给你验证@Override下面的方法名是否是你父类中所有的,如果没有则报错。例如,你如果没写@Override,而你下面的方法名又写错了,这时你的编译器是可以编译通过的,因为编译器以为这个方法是你的子类中自己增加的方法。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

SpringBoot/Spring Cloud常见注解(面试) 的相关文章

  • 如何在 Openfire 中使用 smack

    你好 我计划开发一个可以连接到 gtalk facebook 等的聊天客户端 我决定将 smack API 与 openfire 一起使用 但我需要很少的指导来了解如何将它与 openfire 服务器一起使用 openfire 是否提供了基
  • (Java) App Engine 中的静态文件无法访问

    The 示例文档 http code google com appengine docs java gettingstarted staticfiles html表示您只需将文件放在 war 或子目录 中 并且应该可以从主机访问它们 只要它
  • HAProxy SSL终止+客户端证书验证+curl/java客户端

    我希望使用我自己的自签名证书在 HAProxy 上进行 SSL 终止 并使用我创建的客户端证书验证客户端访问 我通过以下方式创建服务器 也是 CA 证书 openssl genrsa out ca key 1024 openssl req
  • 从 MS Access 中提取 OLE 对象(Word 文档)

    我有一个 Microsoft Access 数据库 其中包含一个包含 Microsoft Word 文档的 OLE 对象字段 我试图找到代码来检索保存在 OLE 对象中的文件 以便用户可以从我的 JavaFx 应用程序中的按钮下载它 但没有
  • 在 Struts 2 中传递 URL 参数而不使用查询字符串

    我想使用类似的 URL host ActionName 123 abc 而不是像这样传递查询字符串 host ActionName parm1 123 parm2 abc 我怎样才能在 Struts 2 中做到这一点 我按照下面的方法做了
  • Android 中 localTime 和 localDate 的替代类有哪些? [复制]

    这个问题在这里已经有答案了 我想使用从 android API 获得的长值 该值将日期返回为长值 表示为自纪元以来的毫秒数 我需要使用像 isBefore plusDays isAfter 这样的方法 Cursor managedCurso
  • 为什么Iterator接口没有add方法

    In IteratorSun 添加了remove 方法来删 除集合中最后访问的元素 为什么没有add方法来向集合中添加新元素 它可能对集合或迭代器产生什么样的副作用 好的 我们开始吧 设计常见问题解答中明确给出了答案 为什么不提供 Iter
  • Java:从集合中获取第一项

    如果我有一个集合 例如Collection
  • 添加到列表时有没有办法避免循环?

    我想知道这样的代码 List
  • 虽然我的类已加载,但 Class.forName 抛出 ClassNotFoundException

    代码如下 它的作用是加载我放在主目录中的 jar 文件中的所有类 import java io File import java util jar JarFile import java util jar JarEntry import j
  • 用于缓存的 Servlet 过滤器

    我正在创建一个用于缓存的 servlet 过滤器 这个想法是将响应主体缓存到memcached 响应正文由以下方式生成 结果是一个字符串 response getWriter print result 我的问题是 由于响应正文将不加修改地放
  • Java:如何确定文件所在的驱动器类型?

    Java 是否有一种独立于平台的方法来检测文件所在的驱动器类型 基本上我有兴趣区分 硬盘 可移动驱动器 如 USB 记忆棒 和网络共享 JNI JNA 解决方案不会有帮助 可以假设 Java 7 您可以使用 Java 执行 cmd fsut
  • 我们如何测试包私有类?

    我正在看书Effective Java in Item 13 Minimize the accessibility of classes and members 它提到 为了方便测试 您可能想让类 接口或成员更易于访问 这在某种程度上是好的
  • 如何停止执行的 Jar 文件

    这感觉像是一个愚蠢的问题 但我似乎无法弄清楚 当我在 Windows 上运行 jar 文件时 它不会出现在任务管理器进程中 我怎样才能终止它 我已经尝试过 TASKKILL 但它对我也不起作用 On Linux ps ef grep jav
  • 无法在 Java/Apache HttpClient 中处理带有垂直/管道栏的 url

    例如 如果我想处理这个网址 post new HttpPost http testurl com lists lprocess action LoadList 401814 1 Java Apache 不允许我这么做 因为它说竖线 是非法的
  • IntelliJ 组织导入

    IntelliJ 是否具有类似于 Eclipse 中的组织导入功能 我拥有的是一个 Java 文件 其中多个类缺少导入 例子 package com test public class Foo public Map map public J
  • 我可以限制分布式应用程序发出的请求吗?

    我的应用程序发出 Web 服务请求 提供商处理的请求有最大速率 因此我需要限制它们 当应用程序在单个服务器上运行时 我曾经在应用程序级别执行此操作 一个对象跟踪到目前为止已发出的请求数量 并在当前请求超出允许的最大负载时等待 现在 我们正在
  • 禁用 Android 菜单组

    我尝试使用以下代码禁用菜单组 但它不起作用 菜单项仍然启用 你能告诉我出了什么问题吗 资源 菜单 menu xml menu menu
  • 如何处理 StaleElementReferenceException

    我正在为鼠标悬停工作 我想通过使用 for 循环单击每个链接来测试所有链接的工作条件 在我的程序中 迭代进行一次 而对于下一次迭代 它不起作用并显示 StaleElementReferenceException 如果需要 请修改代码 pub
  • 检查应用程序是否在 Android Market 上可用

    给定 Android 应用程序 ID 包名称 如何以编程方式检查该应用程序是否在 Android Market 上可用 例如 com rovio angrybirds 可用 而 com random app ibuilt 不可用 我计划从

随机推荐

  • Hadoop是小象——YARN / Split&Block

    了解Hadoop架构 Hadoop可运行于一般的商用服务器上 具有高容错 高可靠性 高扩展性等特点 特别适合写一次 读多次的场景 其架构如下 HDFS 分布式文件存储 可靠性由心跳机制和冗余提供 YARN 分布式资源管理 MapReduce
  • mysql jdbcurl配置_jdbc的URL配置

    Microsoft SQL Server Microsoft SQL Server JDBC Driver 一般用来连接 SQLServer 2000 驱动程序包名 msbase jar mssqlserver jar msutil jar
  • 【金融申请评分卡】目标变量界定

    一 目标变量是什么 目标变量就是假定申请客户的好坏 逻辑回归公式里的Y 先来看下逻辑回归公式 y 11 e z y 1 1 e z
  • c++入门到精通教程 c++11/14/17-王健伟-专题视频课程

    c 入门到精通教程 c 11 14 17 528人已学习 课程介绍 本教程适合那些只有一点点c语言编程知识的新手 也适合那些c 98标准已经掌握的不错但对c 11 14 17新标准基本无所知的c 开发老手 欢迎大家尽早加入学习 请大家从授课
  • 网络流媒体(七)———RTSP

    RTSP协议介绍 RTSP协议的一些分析 一 一些字符串函数的使用 RTSP协议的一些分析 二 printf类似函数 sscanf以及log保存到内存中 printf输入重定位 1 简介 DSP产生的媒体流需要通过网络传送到客户端 如图1
  • python编程遵循哪些规律_Python实操(3):python编程规范

    选择pythoncharm作为Python开发ide也是在网上查了好长时间 这两天了解到visual studio code强大 易用 同时也一直用visual studio做c c 开发 所以决定把以后的开发平台切换到微软系 换平台以后发
  • 前后端分离:SpringBoot项目部署服务器操作步骤详细

    部署后端 SpringBoot到服务器 首先就是对自己项目application yaml进行配置 此处使用过多mysql8 0 spring datasource url jdbc mysql 127 0 0 1 3306 book se
  • 计算机网络笔记and题解

    上次博客就写了一点划分子网和子网掩码相关的计算 然后还要一个重要的五分类编址CIDR 也就是构造超网 无分类编址CIDR Classless Inter Domain Routing 正式名字是无分类域间路由选择 特点 1 CIDR消除了传
  • 秒级数据转化为分钟级数据sql编写

    前言 利用python读取hive 将hive中秒级数据转化为以10分钟为间隔的数据 除时间与设备id外所有字段的值求平均值 代码 连接hive 创建连接通道 并且得到连接通道的钥匙 句柄 conn connect host 地址 port
  • 存储过程解析

    使用存储过程来解决涨工资 涨工资 总裁涨1000 经理涨800 其他人涨400 伪代码 ResultSet rs select empno job from emp While rs next Int eno rs getInt empno
  • Stable diffusion加载safetensors 模型出现Exception: device privateuseone:0 is invalid

    一 问题 博主用CPU硬解 Stable diffusion sd v1 4 ckpt能跑 但换成v1 5 pruned emaonly safetensors等最新格式的模型就出现Exception device privateuseon
  • MATLAB数据可视化

    MATLAB数据可视化 二维绘图 plot命令 plot y plot x y plot x y s 常见的二维绘图常用设置选项 fplot 三维绘图 plot3 mesh 函数 绘制参数网状表面图 surf 函数 绘制三维阴影曲面图 辅助
  • 蓝桥杯:三羊献瑞(答案不唯一)

    目录 题目描述 题目分析 测试用的代码 Java 答案 因为我个人做选择题有把所有可能性列举的习惯 所以我习惯性列举一下 发现答案并不像题目里面说的 三羊献瑞是唯一的 具体看我的测试用例 Test 但是结果呢 题目描述 本题为填空题 只需要
  • 软件测试和软件开发哪个发展更好

    经常有想转IT行业的同学 在了解软件测试和软件开发之后不知道转那个岗位好 今天就系统的 从多个维度来比较软件测试与软件开发 具体包括从基本素质要求 性格要求 入职门槛 知识结构 竞争压力 职业发展 职业前景等 希望能给在选择软件测试与开发朋
  • java设计模式之抽象工厂模式

    什么是抽象工厂设计模式 抽象工厂模式是一种创建型设计模式 它提供了一种创建一系列相关或依赖对象的方法 而无需指定它们具体的类 抽象工厂模式是工厂方法模式的扩展 它使用一组相关的工厂来创建对象 而工厂方法模式只是使用一个单一的工厂 在抽象工厂
  • APP移动端测试+安装+ADB命令的介绍

    重点 app测试的内容 add命令 monkey命令 次重点 模拟器的安装 雷电 夜神 android的自带的模拟器使用 常规测试 真机测试 简单了解云测Testing 腾讯云 在职小伙伴下周演示 了解 市场有的移动端的操作系统有 1 an
  • LeetCode技巧篇(一)prefix sum 前缀和

    介绍 前缀和 prefix sum 是算法题中比较实用的一种技巧 当算法题的背景是整数型数组且出现 子数组和 或者 连续的子数组 既可以考虑使用前缀和来求解会得到不错的效果 假设给定的数组A各个元素分别为 那么我们可以得到一个前缀和数组B
  • ICCV 2023

    点击下方卡片 关注 CVer 公众号 AI CV重磅干货 第一时间送达 点击进入 gt 3D点云和Transformer 交流群 本文介绍我们在ICCV 2023上接收的论文 PointCLIP V2 Adapting CLIP for P
  • snull驱动环境搭建与测试分析

    Here are possible values for the network numbers Once you put these lines in etc networks you can call your networks by
  • SpringBoot/Spring Cloud常见注解(面试)

    RequestMapping 在Spring MVC 中使用 RequestMapping 来映射请求 也就是通过它来指定控制器可以处理哪些URL请求 将请求和处理请求的控制器方法关联起来 建立映射关系 这个控制器方法请求路径为http l