對于Struts和Spring兩種MVC框架的比較
注意看到Main里面需要用到Demo的實例,因此,需要硬編碼,即靜態綁定(在編譯期間就需要綁定),這絕對會增大后期維護工作量,至少每次擴展或者修改類以后需要重新編譯已存在的iavabean組件。
Spring的依賴注入有機會實現動態綁定,原理很簡單,用到了接口,接口是不能生成實例的,再加上iava的多態,接口可指向它的實現類。
所以試著為bean添加一個接口
}
注意看加重部分,用Spring提供的兩個類,BeanFactory,和xmhxxxxx,直接讀取配置文件。然后用getBean(id);取得bean,這個時候返回的對象是范型,比如Object obj=beanFac-tory.getBean(demo);將改后的寫在下面,但沒測試過。
這樣就解耦了,實現無侵入式。不要忘記要將需要的bean在配置文件里面聲明。
所有Spring這些特征使編寫更干凈、更易管理、并且更易于測試的代碼。也為Spring中的各種子框架提供了基礎。
4 結語
人們日益對開源框架的重視.使得很多項目的成本大大降低,并且投放使用以及維護速度都增加了。現在的開源框架都有很高的質量,提供了很好的文檔,一些書籍讓開發者做參考。即便如此,兩大因素使得J2EE領域充滿了不確定性:開源領域和J2EE“標準”的沖突和AOP的日益重要。
開源和標準之間的沖突表現在兩個方面。一個是表現層,JSF的身后有Sun公司和其他的一些大公司,而在這個領域有Struts等開源產品與之競爭。在中間層,EJB3.0采用J2SE5.0的annotations實現了依賴注入(dependency iniection)的功能,但這個功能只是Spring的一個子集。
在這兩個領域,開源產品都更加革新。JSP借鑒了ASP.NET,而Tapestry則采用了WebObjects的思想。
同樣的,不知道EJB3.0為何要嘗試著標準化依賴注入,即使這樣會使之不可避免地喪失很多功能。EJB 3.0也要進入程序編寫領域,而J2EE規范在這方面還沒有涉足。
于此同時,AOP的重要性在J2EE社區猛增,在使用上,AOP也越來越受到開發者的青睞。像Spring、dynaop等被稱作“帶著雙拐的AOP”實現,提升了AOP的知名度。而純粹的AOP技術比如AspectJ,在將來的幾年也會流行起來。
其次,JBoss通過JCP和EJB3.0保持一致,它極大地推動了AOP技術。但即使如此,JCP還沒有轉向AOP跡象。
下一代的J2EE規范將擁抱更簡單的POJ0編程模型,就像Spring和Hibermate做的一樣。J2EE開發者也注定要從“欺詐客戶”轉到以自己的編程經驗開發。這次改變將受到大多數人的歡迎,不像以前那樣每一個新規范發布后,最終都沒有能很好的實現。
評論