有時候,我找到了一些類名包括「意識到」如了ApplicationContextAware」和‘MessageSourceAware’(春季)。這是否‘知道’有什麼特殊的含義還是有名的規則?什麼是「意識」?什麼時候應該包括我的班級名稱?
回答
那些不是類,是接口。這個名字只是Spring的一個約定,意思是如果一個特殊的框架對象被框架管理,它將被注入到這個類中。
從的文檔直接:
接口由希望被通知ApplicationContext中,它在運行的任何物體來實現
在這種情況下,bean這一點。實現此接口將獲得對管理應用程序的ApplicationContext的引用。
追加的形容詞,如‘感知’到最後往往是用於Java接口的命名方案,然後可以通過類來實現,產生的是代碼更流暢閱讀對人類,像
class Broker implements ApplicationContextAware { /* ... */ }
它是很容易看到這個類是一個代理的東西,它知道如何處理應用程序上下文。除此之外,「Aware」後綴從Java(編譯器)角度來看沒有特別的意義略去。
您引用的接口似乎是Spring特定的約定,允許對象與創建它們的依賴注入容器進行交互。通過實現接口,一個類表明它希望從容器中獲得某些信息,同時提供一種方法來傳遞這些信息。
我覺得它只是試圖找到一個提供這種功能的接口的通用名稱,而不一定是一個具有特定技術含義的強有力的約定。
謝謝你的回答。我清楚了。如果你有更多的時間,我可以對我在@ mdrg的回答中寫的另一個問題有任何評論。 – zono 2011-05-31 14:51:56
的感知接口的概念:
如果我想春天類的對象像XmlBeanFactory
,ApplicationContext
參考......在2個或多個類,則有3種可能的方式在那裏。
- 創建2
BeanFactories
在兩個類。 - 創建一個類和共享所有需要的類。
在第一種情況下,我們不必要地創建2個BeanFactories。 在第二種情況下,課程緊密相連。
- 如果我們的類實現
BeanFactoryAware
接口,並覆蓋稱爲合同方法public BeanFactory setBeanFactory(BeanFactory factory)
然後IOC container
看到特殊的接口並調用通過設置BeanFactory
參照該setBeanFactory
方法。
3.在上述情況下,兩個問題不存在。
- 1. 什麼時候包括什麼?
- 2. 什麼時候應該設置班級路徑?
- 3. 我們什麼時候應該上課,什麼時候不應該上課
- 4. 什麼是MvcHtmlString,我應該什麼時候使用它?
- 5. 什麼時候應該`#include <ios>`,`#包括<iomanip>`等?
- 6. Postgres索引名稱的級別應該是什麼級別?
- 7. 我什麼時候應該使用javax.swing.SwingUtilities.invokeLater()?
- 8. 我什麼時候應該使用UITableViewCellSeparatorStyleSingleLineEtched?
- 9. 我應該什麼時候生產?
- 10. 我應該什麼時候回來?
- 11. GitHub:我應該什麼時候做叉?
- 12. 我的Android軟件包名稱應該是什麼?
- 13. 什麼時候應該使用async/await,什麼時候不用?
- 14. 什麼時候應該使用AWS,什麼時候不使用
- 15. Robotium中@Smoke的意義是什麼?什麼時候應該使用它?
- 16. 什麼是包裝/標識/名稱和它對應的是什麼?
- 17. 我們什麼時候應該在wit.ai創建新的意圖
- 18. 什麼時候應該擴展NSDocument,什麼時候應該擴展NSWindowController?
- 19. 什麼時候應該使用sed,什麼時候應該使用awk
- 20. 什麼時候應該使用memcpy,什麼時候應該使用memmove?
- 21. 什麼時候應該使用Import-Package,什麼時候應該使用Require-Bundle?
- 22. 什麼時候應該使用let {},什麼時候只是簡單的!= null
- 23. 什麼時候應該在PHP中使用名稱空間?
- 24. 什麼是班級私人名字?
- 25. 什麼是phtml,什麼時候應該使用.phtml擴展名而不是.php?
- 26. 爲什麼/我應該在什麼時候使用dojo模塊?
- 27. 我應該什麼時候打電話給超級?
- 28. 什麼是HTML BB按鈕?什麼時候應該使用它?
- 29. EGL_KHR_IMAGE < - 它是什麼,什麼時候應該使用它
- 30. 什麼是模擬,什麼時候應該使用它?
非常感謝!我越來越明白了。例如,如果您找到一個名爲「EmploymentEntityAwareService」的界面,您會認爲任何對象實施的服務都有「Employment」實體作爲字段,對嗎? – zono 2011-05-31 14:36:00
@yusaku可能,這不是一個真正的硬性規則。意識主要是一個Spring的約定,我不會推薦在你自己的類名中使用它,除非你有一個很好的理由。 Spring基本上是用「Aware」來表達的意思是「這個類現在意識到它正在被Spring管理」。通常,您希望避免直接使用這些接口來防止代碼依賴Spring Framework。它們被提供來處理類的直接與Spring容器交互的孤立情況。 – Jberg 2011-05-31 14:44:28
@Jberg謝謝!好的,如果我需要,我會小心使用它。 – zono 2011-05-31 15:09:15