[英]Spring security and @Configuration order
我正在使用@Configuration
順序處理一些春季問題(通常涉及春季安全性,但還涉及此問題的標記中提到的其他技術),其中某些事物的初始化“太早”或“太晚”。
舉例說明: 自定義Tomcat時:配置默認Servlet處理時需要ServletContext。
答案通常是為某些bean創建單獨的@Configuration
文件,然后開始工作。 我所得到的錯誤(堆棧跟蹤)的性質通常並不響,這可能是我的錯:)
有人可以指出我在哪里可以找到有關為什么創建單獨的@Configuration
類有幫助以及如何確定@Configuration
類的順序的信息嗎?
在堆棧跟蹤中要注意什么以識別此類問題的任何提示也將不勝感激。
它之所以有時有用的原因是因為它為Spring的bean創建順序提供了其他選擇。 一種(過度)簡化的查看方式是說,如果將所有內容都放在一個文件中,則順序由文件的內容確定。 而如果您將其分解,那么Spring可以探索其他選擇,並且事情可能會以另一種更合適的順序出現。 請注意,您可以對@Configuration
使用內部類和受包保護的類(只要它們是靜態的),因此您無需創建新文件。
@Configuration
類也可以是自相矛盾的(例如,您要@Autowired
在同一單元中創建的某些內容-有時可以工作,有時不可以)。 同樣,在大多數情況下,Spring所創建的組件(不是由您自己的代碼明確創建的)通常需要盡早實例化。 Spring Boot必須在完全初始化ServletContext
之前創建Servlets
和Filters
,從而加劇了這種情況。
就堆棧跟蹤而言,@ @Autowired
依賴項原來為空,這是一種氣味。 同樣在日志中,您可能會看到INFO級別的日志,指出某些bean“不適合進行后期處理”。 不能保證這是致命的(因此是INFO級別),但是如果您看到很多,則可能會遇到麻煩。
對於這種推理,我不知道任何規范的參考。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.