當我需要做乙個aop日誌時,出現的這個問題。首先,專案是spring cloud 的分布式架構,當我通過aop切api介面獲取到相關資訊後,就需要呼叫db服務的儲存日誌的介面,結果然後就報錯了,說這個fegin介面not found。給我氣得,這東西咋可能沒有注入。
找了很多網路上關於aop 無法注入的問題。大概有兩種方式
(1)通過乙個配置注入這個切面bean。親測無效,別會報另外乙個異常systemlogaop.aspectof() nosuchexception
@configuration@componentscan("com.*.*.oc")
public
class
aspectconfig
}
(2)同上通過配置注入需要使用的bean。但是需要使用的明明是乙個fegin介面。我不可能new出來啊。不像executorservice,可以new 出來然後注入。所以這個方案也不行。
最終解決方案:
看了很多部落格,發現說的是aop不在這個spring容器之中,所以這個fegin介面對aop是不可見的。(因為db還沒啟動,並且我的aop寫在common中,db啟動需要先啟動aop,然後aop又需要db中的bean。然後就套死了) 所以最後必須把這個鏈砍斷。那麼就用上了
@autowired(required = false)required 當在容器中找不到bean時,就跳過。所以db就能啟動了 ,當aop觸發時也能找到對應的bean了
Autowired乙個介面有多個實現類
autowired是spring的註解,預設使用的是bytype的方式向bean裡面注入相應的bean。例如 autowired private userservice userservice 這段 會在初始化的時候,在spring容器中尋找乙個型別為userservice的bean實體注入,關聯到...
乙個關於EPOLLET和EPOLLLT的問題
覺得此文還不錯,收藏以備日後學習。請教大家乙個關於epollet和epolllt的問題 今天在檢視epollet和epolllt的細節的時候,發現一篇文章。但不知文中說的是否有道理,望各位大大給個明確的答覆。遊戲伺服器,我們用的是et方式。平時大家使用 epoll 時都知道其事件觸發模式有預設的 l...
關於乙個加法優化的乙個地方
include include include base.h int main int argc,char argv,char envp 下面是彙編 01291000 55 push ebp 01291001 8bec mov ebp,esp 01291003 56 push esi 0129100...