更新時間:2022-12-08 15:20:06 來源:動力節點 瀏覽1573次
馬上又是新的一年了,又快到了找工作的高峰期,無論是校招還是社會招聘,機會都是十分多的,而面試是非常重要的,俗話說不打沒有準備的仗,所以提前更為重要,今天小編就為大家準備了一些關于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面試題相關內容,可以關注動力節點Java官網。
0基礎 0學費 15天面授
有基礎 直達就業
業余時間 高薪轉行
工作1~3年,加薪神器
工作3~5年,晉升架構
提交申請后,顧問老師會電話與您溝通安排學習