2014-12-30 113 views
3

我讀春天的文檔,我能不低於語句從c-namespace section in the reference documentC-命名空間部分

對於罕見的情況下,構造函數參數的名稱不可用(通常,如果字節碼是理解 編譯時沒有調試信息),可以使用回退的說法指標

我的問題是:

  1. 在什麼情況下,構造函數參數不可用。
  2. 這是什麼意思,編譯時沒有調試信息的字節代碼。可以使用eclipse進行檢查嗎?

我正在通過網絡檢查,但可以得到任何參考。我發現Constructor injection using c:namespace但它並沒有解釋任何東西

回答

2

構造函數的參數名稱是唯一可用的。當使用javac時,這是-g:vars選項。在Eclipse中,這是Windows > Preferences > Java > Compiler > Add variable attributes to generated class files

2

如果有問題的類是由javac沒有-g標誌(「調試信息」 - 見javac docs)編譯,然後編譯的類的字節碼不會包含的名字構造函數參數。這意味着Spring無法使用反射來匹配構造函數參數名稱,所以您需要按位置(即通過索引)注入它們。

它是生成編譯字節碼以確保提供調試信息的構建環境。一旦代碼被編譯完成,就沒有辦法檢索這些信息了,重新編譯它就沒有辦法了。

看看類是可變的調試信息編譯還What does the javac debugging information option -g:vars do?