2023新年常用的springboot面试问题_极悦注册
专注Java教育14年 全国咨询/投诉热线:444-1124-454
极悦LOGO图
始于2009,口口相传的Java黄埔军校
首页 学习攻略 Java学习 2023新年常用的springboot面试问题

2023新年常用的springboot面试问题

更新时间:2022-12-08 15:20:06 来源:极悦 浏览1184次

马上又是新的一年了,又快到了找工作的高峰期,无论是校招还是社会招聘,机会都是十分多的,而面试是非常重要的,俗话说不打没有准备的仗,所以提前更为重要,今天小编就为大家准备了一些关于springboot相关的面试题,供大家参考:

springboot面试问题

SpringBoot自动配置原理是什么?

1、SpringBoot启动的时候加载主配置类,开启了自动配置功能@EnableAutoConfiguration。

2、查看@EnableAutoConfiguration,其作用是利用AutoConfigurationImportSelector给容器中导入一些组件。

3、查看AutoConfigurationImportSelector,其中public String[] selectImports(AnnotationMetadata annotationMetadata)方法内 最终调用getCandidateConfigurations()方法

4、查看 getCandidateConfigurations(AnnotationMetadata metadata, AnnotationAttributes attributes),获取候选的配置,这个是扫描所有jar包类路径下"META-INF/spring.factories"

5、然后把扫描到的这些文件包装成Properties对象。

6、从properties中获取到EnableAutoConfiguration.class类名对应的值,然后把他们添加在容器中。

SpringBoot中如何解决跨域问题 ?

1、基于WebMvcConfigurerAdapter配置加入Cors的跨域

跨域可以在前端通过 JSONP 来解决,但是 JSONP 只可以发送 GET 请求,无法发送其他类型的请求,在 RESTful 风格的应用中,就显得非常鸡肋,因此我们推荐在后端通过(CORS,Cross-origin resource sharing)

来解决跨域问题。这种解决方案并非 Spring Boot 特有的,在传统的 SSM 框架中,就可以通过 CORS 来解决跨域问题,只不过之前我们是在 XML 文件中配置 CORS ,现在可以通过实现WebMvcConfigurer接口然后重写

addCorsMappings方法解决跨域问题

2、创建一个filter解决跨域

项目中前后端分离部署,所以需要解决跨域的问题。 我们使用cookie存放用户登录的信息,在spring拦截器进行权限控制,当权限不符合时,直接返回给用户固定的json结果。 当用户登录以后,正常使用;

当用户退出登录状态时或者token过期时,由于拦截器和跨域的顺序有问题,出现了跨域的现象。 我们知道一个http请求,先走filter,到达servlet后才进行拦截器的处理,如果我们把cors放在filter里,就可以优先于权限拦截器执行。

3、controller配置CORS

controller方法的CORS配置,您可以向@RequestMapping注解处理程序方法添加一个@CrossOrigin注解,以便启用CORS(默认情况下,@CrossOrigin允许在@RequestMapping注解中指定的所有源和HTTP方法)

@CrossOrigin 表示所有的URL均可访问此资源

@CrossOrigin(origins = “http://127.0.0.1:8080”) 表示只允许这一个url可以跨域访问这个controller

@CrossOrigin这个注解用起来很方便,这个可以用在方法上,也可以用在类上。如果你不设置他的value属性,或者是origins属性,就默认是可以允许所有的URL/域访问。

-value属性可以设置多个URL。

-origins属性也可以设置多个URL。

-maxAge属性指定了准备响应前的缓存持续的最大时间。就是探测请求的有效期。

-allowCredentials属性表示用户是否可以发送、处理 cookie。默认为false

-allowedHeaders 属性表示允许的请求头部有哪些。

-methods 属性表示允许请求的方法,默认get,post,head。

Spring Boot 的配置文件有哪几种格式?它们有什么区别?

.properties 和 .yml,它们的区别主要是书写格式不同。

1).properties

app.user.name = javastack

2).yml

app:
  user:
    name: javastack

另外,.yml 格式不支持 @PropertySource 注解导入配置。

什么是 CSRF 攻击?

CSRF 代表跨站请求伪造。这是一种攻击,迫使最终用户在当前通过身份验证的Web 应用程序上执行不需要的操作。CSRF 攻击专门针对状态改变请求,而不是数据窃取,因为攻击者无法查看对伪造请求的响应。

简单来说就是:攻击者盗取合法用户登录信息,通过盗取账户进行登录,然后以合法用户的身份发送恶意请求,但是请求对于服务器来说是合法的。

以上就是“2023新年常用的springboot面试问题”,你能回答上来吗?如果想要了解更多的相关内容,可以关注极悦Java官网。

提交申请后,顾问老师会电话与您沟通安排学习

免费课程推荐 >>
技术文档推荐 >>