借用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表示式一定是匿名內部類形式。...