簡體   English   中英

多個Spring WebApplicationInitializer

[英]Multiple Spring WebApplicationInitializer

在進行春季項目時,我意識到我擁有三個有效實現WebApplicationInitializer的類。

public class SpringSessionInitializer extends AbstractHttpSessionApplicationInitializer

public class SecurityWebApplicationInitializer extends AbstractSecurityWebApplicationInitializer 

public class AnnotationWebAppInitializer implements WebApplicationInitializer 

在查看了這三種用途之后,我發現我沒有辦法將它們結合起來,所以我有幾個問題。

  1. 這些命令執行的順序是否一致?
  2. 如果可以,是否可以訂購它們?
  3. 如果沒有,諸如addInterceptors或ResourceResolvers之類的任何方法的主體,最終都會從其他方法中清除設置。

因此,感謝M.Deinum的評論,它使我找到了答案。 在@Order標簽周圍玩耍之后,您可以通過這種機制來控制它們的加載順序。 但是第二部分是,命令確實很重要。 如果您閱讀了AbstractHttpSessionApplicationInitializer的文檔,它指出必須在其他注冊過濾器的初始化程序之前對其進行排序。 它還默認將其Order設置為100。必須首先使用它的原因是它使用過濾器從緩存數據庫中檢索會話。 例如,如果您將AbstractSecurityWebApplicationInitializer設置為50,則切換服務器時將不再進行身份驗證,因為spring安全過濾器將在從數據庫獲取會話的過濾器之前執行。

另一方面,我刪除了一個讓Spring-Tomcat Web應用程序java.lang.IllegalStateException出現的錯誤,該錯誤是通過使我的主初始化器AnnotationWebAppInitializer優先於其他實現而解決的。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM