Spring載入順序典例

2021-10-11 22:30:02 字數 1837 閱讀 6260

借用log4j2,向資料庫中新增一條記錄,對於特殊的字段需要借助執行緒的環境變數。其中某個字段需要在資料庫中查詢到具體資訊後插入,在借助spring mvc的dao層時遇到了載入順序問題。

log4j2插入資料庫的方案參考文章:

<

column name=

"user_info" pattern=

"%x" isunicode=

"false"

/>

需要執行日誌插入操作(比如繫結到乙個級別為insert、logger.insert())的執行緒中有環境變數user_info。

解決環境變數的方法:

throws exception需要攔截的url配置:

@configuration

public

class

logconfigurer

implements

webmvcconfigurer

; string[

] excludeurl =

newstring

;/**

* 註冊乙個***

** @return hpcloginterceptor

*/@bean

public loginterceptor setlogbean()

@override

public

void

addinterceptors

(interceptorregistry reg)

}

如下待優化:

問題就出在如何獲取資訊這個步驟,原本的方案是:

通過dao userdao從資料庫查詢資訊,然後填充進去。

出現的問題是:userdao無法通過@autowired方式注入。

原因:呼叫處springboot未完成初始化,導致dao層在呼叫時每次都是null。

因此最後採用的方式如下:

Spring控制Bean載入順序

spring容器載入bean順序是不確定的,spring框架沒有約定特定順序邏輯規範。首先要了解depends on或 dependson作用,是用來表示乙個bean a的例項化依賴另乙個bean b的例項化,但是a並不需要持有乙個b的物件,如果需要的話就不用depends on,直接用依賴注入就可...

spring載入bean例項化順序

有乙個bean為 a,乙個bean為b。想要a在容器例項化的時候的乙個屬性name賦值為b的乙個方法funb的返回值。如果只是在a裡單純的寫著 private b b private string name b.funb 會報錯說nullpointexception,因為這個時候b還沒被set進來,...

Jvm載入和Spring掃瞄的順序

jvm首先載入classes檔案裡面的類,然後載入jar中的,如果遇到同類的名的類,首先載入classes的.class,然後載入jar包裡面的,如果都在jar裡面,就無法保證載入順序。先是jvm載入在到classloader裡面,然後spring才能掃瞄到。lambda表示式一定是匿名內部類形式。...