Java面试题———SpringBoot篇②

devtools/2024/9/23 23:27:46/

目录

一,SpringBoot读取配置的方式有几种

二,SpringBoot项目如何热部署

三,SpringBoot项目如何实现方法的异步调用

四,SpringBoot中如何实现定时任务

五,SpringBoot中如何解决跨域问题

六,如何理解拦截器

七,拦截器和过滤器的区别是什么


一,SpringBoot读取配置的方式有几种

SpringBoot常见的读取配置信息的方式有两种:

  1. 使用@Value配合EL表达式(@Value("${name}"))注解直接注入对应的值

  2. 使用@ConfigurationProperties注解把对应的值绑定到一个配置对象,然后将配置对象注入到需要的地方

推荐使用使用第二种方式,在配置比较多的情况下,操作简单,可读性好

二,SpringBoot项目如何热部署

Spring Boot有一个开发工具(DevTools)模块,通过它可以实现SpringBoot项目的热部署

也就是开发人员将文件更改后,它会自动部署到服务器并自动重启服务器。

 <dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-devtools</artifactId></dependency>

三,SpringBoot项目如何实现方法的异步调用

异步调用指的是a方法在调用b方法的时候,无需等待b方法执行完毕,就可以继续向下执行

一般用在a方法无需使用b方法返回结果的场景下,可以在一定程度上提高运行效率

在SpringBoot中使用异步调用是很简单的,只需要做两个操作就可以了

  1. 在启动类上添加@EnableAsync注解,开启异步调用支持

  2. 在被调用的方法上添加@Async注解

java"> controller-a(){代码1 service-a()代码3 }​@Asyncservice-a(){}

四,SpringBoot中如何实现定时任务

在SpringBoot中使用定时任务主要有两种方式,一个就是使用SpringTask,另一个则是使用第三方框架Quartz

SpringTask主要是通过@Scheduled注解来实现定时任务触发的,格式如下

java"> @Scheduled(fixedRate = 5000)public void printTime() {System.out.println(new Date().toLocaleString());}

主要属性如下:

  • fixedRate:按一定的频率执行任务,参数类型为long,单位 ms

  • fixedDelay:上一次任务执行完后多久再执行,参数类型为long,单位 ms

  • initialDelay:延迟多久再第一次执行任务,参数类型为 long,单位 ms

  • cron:使用cron表达式指定任务在特定时间执行

五,SpringBoot中如何解决跨域问题

跨域是指浏览器不能执行其他网站的脚本。它是由浏览器的同源策略造成的,是浏览器对JavaScript实施的安全限制

当浏览器从一个域名的网页去请求另一个域名的资源时,出现域名、端口、协议任一不同,都属于跨域

SpringBoot解决跨域很简单,执行添加一个配置类实现WebMvcConfigurer接口然后重写addCorsMappings方法即可

java"> @Configurationpublic class CorsConfig implements WebMvcConfigurer {@Overridepublic void addCorsMappings(CorsRegistry registry) {registry.addMapping("/**").allowedOrigins("*")//允许跨域访问的路径.allowCredentials(true).allowedMethods("GET", "POST", "PUT", "DELETE", "OPTIONS")//运行跨越的请求方式.maxAge(3600);}}

六,如何理解拦截器

拦截器是Spring提供的一种拦截机制,目的是实现对指定请求路径进行拦截,然后做成指定的处理

自定义一个拦截器需要实现HandlerInterceptor,并重写接口中定义的3个方法

  1. preHandle: 这个方法在Controller处理请求之前被调用,通过方法的返回值可以确定是否放行请求

  2. postHandle:这个方法在Controller处理请求之后被调用

  3. afterCompletion:这个方法将在整个请求结束之后被调用,此方法主要用于进行资源清理

七,拦截器和过滤器的区别是什么

拦截器和过滤器都可以实现请求的拦截处理,不同点有下面几个:

  1. 技术栈所属不同:过滤器属于JavaWeb技术,依赖Servlet容器;而拦截器是属于Spring的技术

  2. 实现原理不同:拦截器是基于Java的反射机制,而过滤器是基于函数回调

  3. 拦截范围不同:过滤器可以拦截所有请求,而拦截器主要是针对发往controller请求

  4. 拦截位置不同:过滤器在前端控制器前拦截行,而拦截器在前端控制器后拦截


http://www.ppmy.cn/devtools/96063.html

相关文章

【图数据库系列】Cypher查询语句:常用语法指南

&#x1f49d;&#x1f49d;&#x1f49d;欢迎来到我的博客&#xff0c;很高兴能够在这里和您见面&#xff01;希望您在这里可以感受到一份轻松愉快的氛围&#xff0c;不仅可以获得有趣的内容和知识&#xff0c;也可以畅所欲言、分享您的想法和见解。 推荐:kwan 的首页,持续学…

Linux - 常用基础指令和命令

文章目录 1、ifconfig指令2、ssh指令3、ls指令4、pwd命令5、cd 指令6、stat命令7、 touch指令8、mkdir指令9、rmdir指令10、rm指令11、man指令12、cp指令13、mv指令14、cat指令15、more指令16、less指令17、head指令18、tail指令19、时间相关的指令20、cal指令21、find指令22、…

spring框架中Spring Validation的注解校验

在进行业务分析时发现当前业务所有的属性都应当有值&#xff0c;因此在设置数据库中的表结构时&#xff0c;也设置了所有属性都是必填。属性又比较多&#xff0c;如果通过一个个的if判断会显得代码比较多&#xff0c;因此考虑到使用注解进行校验属性是否为空。 常见属性上的校验…

Java预约家政上门服务本地服务系统小程序源码

&#x1f31f;【轻松生活&#xff0c;从一键预约家政开始&#xff01;】&#x1f31f; &#x1f3e0; 告别繁琐&#xff0c;拥抱便捷新生活 在这个快节奏的都市生活中&#xff0c;忙碌的你是不是经常为家里的琐事烦恼&#xff1f;打扫、整理、甚至是专业家电维修&#xff0c;…

【屏驱MCU】系列文章合集

屏驱MCU系列文章 【屏显MCU】多媒体接口总结&#xff08;一&#xff09; 【DVP接口】0v5640的DVP接口设计分析&#xff08;硬件&#xff09; 【DVP接口】0v5640的DVP接口设计分析&#xff08;软件&#xff09; 【屏驱MCU】RT-Thread文件系统接口解析 【RT-Thread】串口接收…

视频教程:自研低代码拖拽图形编辑器底层库moveable示例学习

视频地址&#xff1a;自研低代码拖拽图形编辑器底层库moveable示例学习

Elasticsearch 中的复合查询

Elasticsearch 是一种广泛应用的分布式搜索引擎&#xff0c;支持复杂的查询条件以满足不同场景下的搜索需求。其强大的查询 DSL&#xff08;Domain Specific Language&#xff09;允许开发者组合多个查询条件&#xff0c;以实现精准的搜索结果。本文将深入探讨 Elasticsearch 中…

改善工作流

快捷键管理器 打开Editor->Shortcuts查看和编辑Unity中的快捷键 示例 ShiftSpace 窗口最大化 P 选择预制体 进入预制体编辑模式 单一检视窗口 选择组件&#xff0c;选择Properties打开一个窗口&#xff0c;显示组件信息&#xff1b;切换对象&#xff0c;窗口信息不会改变…