更新时间:2022-12-08 15:20:06 来源:极悦 浏览1184次
马上又是新的一年了,又快到了找工作的高峰期,无论是校招还是社会招聘,机会都是十分多的,而面试是非常重要的,俗话说不打没有准备的仗,所以提前更为重要,今天小编就为大家准备了一些关于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官网。
0基础 0学费 15天面授
Java就业班有基础 直达就业
业余时间 高薪转行
Java在职加薪班工作1~3年,加薪神器
工作3~5年,晋升架构
提交申请后,顾问老师会电话与您沟通安排学习