簡體   English   中英

如何找出在Spring中如何連接特定的bean

[英]How to find out how a specific bean is wired in Spring

我有一個Spring應用程序(A),它使用一個瞬態依賴項(B),它本身也基於Spring。

綜上所述,戰爭A和jar B都是春季項目。 B是A的從屬。

B中類的屬性之一按以下方式修飾

@Resource(name="thisIsTheTargetRef")
private String hardToFindMe;

我瀏覽了A和B的應用程序上下文文件,但沒有找到ID為'thisIsTheTargetRef'的bean聲明。 但是以某種方式,日志顯示了.hardToFindMe。 attr與'thisIsTheTargetRef'bean連接。 我搜索了A&B項目(包括所有其他依賴項),以查看是否從其他地方獲取了它。 沒有骰子。 我什至檢查了組件掃描軟件包,但沒有運氣。 我還對A和B(包括依賴項項目)中的“ thisIsTheTargetRef”進行了硬文本搜索。 我仍然找不到。

這是一個日志片段,顯示Bean仍在連接。

[#|2014-01-27T18:23:16.654+0000|INFO|glassfish3.1.2|javax.enterprise.system.std.com.sun.enterprise.server.logging|_ThreadID=10;_ThreadName=Thread-3;|77875 [main] DEBUG org.springframework.beans.factory.support.DefaultListableBeanFactory {} null - Returning cached instance of singleton bean 'thisIsTheTargetRef'
|#]


[#|2014-01-27T18:23:46.640+0000|INFO|glassfish3.1.2|javax.enterprise.system.std.com.sun.enterprise.server.logging|_ThreadID=10;_ThreadName=Thread-3;|18:23:46,639 INFO  [XmlWebApplicationContext:1332] Bean 'thisIsTheTargetRef' of type [class org.springframework.jndi.JndiObjectFactoryBean] is not eligible for getting processed by all BeanPostProcessors (for example: not eligible for auto-proxying)
|#]

看來我在這里遺漏了一些東西。 可能是我錯過了一個依賴,而我的眼睛卻在愚弄我。 但是我還應該看看其他明顯的地方嗎?

如果不是,則基於日志,XmlWebApplicationContext:1332被稱為Bean的位置。 我該如何調試以找出從哪里撿來的呢? 謝謝。

通過在已知注入位置的字段上定義監視/斷點,您可能會很幸運。 在調試過程中,您應該在自動裝配過程中停下來,然后看到連接的是哪個類。 這應該有助於識別它,然后檢查此類的發生。

我不確定您是否可以直接從該bean的加載位置中找到。 一個提示應該是注釋處理器或xmlprocessor。

暫無
暫無

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

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