“Spring IOC Container 不要求 Interface Base......? ”
所以說你啊,這么淺的道理都沒明白,推倒什么神壇阿,唉
你可以去看一下SpringSide的代碼,在不需要多態,解耦,策略類的地方,根本不會有interface
首先,Spring IOC Container本身決不要求Interface base
其次,你的九不搭八的描述讓我無語了,在這言之鑿鑿不如先看一點spring的代碼?
有簡單的Map<String beanID, Object beanInstance>不用,用List<beanInstance>然后自己寫算法當然是可以的,麻煩一點而以啦。
就是我說的永遠正確的辯論方式。
Map 和 List本來也是隨便說的,只是看不慣你永遠正確的辯護方式才和你繞下去啊。
我收回關于AOP的話, 因為翻看了一下你的代碼,原來invoke()都不是在講AOP,還真要麻煩你講解一下呢。Spring IOC本身和Interface Base在你的這個例子里,沒有什么必然聯系,Spring 用的只是普通的反射函數。
package org.dong.core;
public class testDong {
public static void main(String[] args) {
//為了完全訪真,我連調用的方法都是一樣的
Resource resource = new ClassPathResource("DongContext.xml");
BeanFactory factory = new XmlBeanFactory(resource);
//IOC的典型調用方法
IUser u = (IUser) factory.getBean("userNew");
//如果采用常規的方法寫程序,在這里光調用就可以 invoke死你
//給您一個常規調用的方法看看,用Interface的思想就可以把method 和 invoke 兩個東西以及“參數設置”完全繞過去,真是優雅的方法!!!!
/*
String str = "Rstay";
String content = "Michael test Jvm " ;
String impClass = "myao.testRef";
Class params[] = new Class[1];
try {
Class c = Class.forName(impClass);
rfservice a = (rfservice)c.newInstance();
params[0]= Class.forName("java.lang.String");
Method m1 = c.getMethod(str, params);
Object argss[] = new Object[1];
argss[0] = content;
System.out.println(m1.invoke(a, argss));
} catch (Throwable e) {
System.err.println(e);
}
*/
u.setUserName("dong test IUser interface");
System.out.println("My Dong:>"+u.getUserName());
}
}
@寒晴天
嗯,有Map<String beanID, Object beanInstance>不用,用List<beanInstance>然后自己寫算法當然是可以的,麻煩一點而以啦。那么自己實現一個Map類當然也是可以的,麻煩一點而以啦,那就永遠正確不用再討論了。
我是看你的文章摘要上寫著:
“看完了本文就"完全理解"為什么Spring要完全基于Interface編程了....用Interface的思想就可以把method 和 invoke 兩個東西以及“參數設置”完全繞過去,真是優雅的方法!!!! ”
@寒晴天
第1,你的blog里解釋IOC和Interface Base的關系太偏狹了。不知所云
第2,還有其他毛病嗎,大體沒有了,因為Spring IOC的基本原理很簡單,本來就沒什么特別,只是你知道了大家都知道的基本原理就要去把Spring推下神壇在邏輯上有點說不過去。隨便看看,單例的bean明顯是放在Map 而不是List里的,放list ,下次怎么按Bean id 取得bean呢....
@寒晴天
"如果你認為你是裁判的話,就不要下場踢球,如果你要踢球,請不要以為自己也是裁判。 "
這句話有點意思,同意。
事情緣起,看熱鬧的時候,看到你的評論里有自己blog的連接,順手點進去,看到置頂的標題很猛的《將Spring推下神壇(仿造一個中國式Spring ,教大家一步一步從代碼的角度理解 Ioc)》,再看進去.....
@寒晴天
唉,吵架還是看別人吵比較爽,自己上好危險,無知無畏、亂潑臟水的招式好難招架,枉我下午還幫你們把老前輩發在首頁的文章移去了(因為言語太過分,的確不符合BlogJava首頁的要求)
不過,我對你算是失望了,自己站在井底猛的不行,好心給你提個醒就跳的老高,老實說,看完你那篇置頂的把Spring推下神壇,作中國式Spring后,你猜我還有心思去看你的其他文章么,別自我感覺良好的想象因為還看了什么其他文章了。
@寒晴天
再BTW. 你的置頂第2篇,實現了基于Java Proxy的AOP(隨便一本Java教科書都有講的那幾頁)就大聲說自己實現了AOP同樣井底得沒救了。 既不會AspectJ,連同樣很簡單的cglib也不會之前,能不能拜托嗓門小一點。
@寒晴天
不知道寒晴天是不是easyJF的,你blog里那篇置頂的<將Spring推下神壇(仿造一個中國式Spring) > 給我印象很惡劣,spring就只有那幾句ioc原理嗎?即使就只有Ioc部分,Spring所做的工作也已經很巨大,實現了x%的功能就可以cover Spring了嗎。還有,什么叫中國式Spring?
拜托大家頂著easyJF的招牌時不要亂起嘩眾的標題了,否則一個初衷很好項目就在這樣的招搖中毀了。
如果換個標題,你那篇文章也不是一無是處,大家探討一下挺好的,雖然你說的東西淺得可憐,但總還有需要的人群。
re: AgileJava開源項目正式開始 江南白衣 2006-06-05 19:44
支持啊,今年的國內開源項目一片欣欣向榮:)
1.0M1的發布有點匆忙, 剛剛已重新發布了一個質量改良版,請大家按原地址重新下載.
好啊,又有人開始學習和中文化總結Drools了,密切關注中。
中文文檔這點我覺得沒什么問題。一般國內項目的定位都應該是先在國內推廣吧,如果都寫成英文,對推廣不利。
re: 別忘了轉義\\ 江南白衣 2006-05-30 18:42
注意以后此類文章勿放到Blogjava首頁,謝謝:)
re: 簡化Spring(4)--View層 江南白衣 2006-05-28 13:22
這個時候可以formName.getElementByID("customer.customerNo")或者prototype.js的{}簡寫法
baseDao用后泛型后, 子類可以不用寫任何函數也有基本的crud功能啊
之前要重載getEntityClass函數,而且find單體的函數如get(id) 也要重載做類型轉換.
re: 人生如風箏 江南白衣 2006-04-27 10:40
非Java原創精品文章 請勿發表在首頁,謝謝。
re: Java傳真解決之道 江南白衣 2006-04-18 07:02
界面挺好看的呀:)
re: EasyDBO_0.4.0版本發布 江南白衣 2006-04-18 06:22
完全地重做輪子? 推廣不易啊.
如果是追求簡單,相信大家可能會更眼熱ror一類,起碼對職場競爭有利.
無望之災阿,以前一直正常的,用column_name排序的,忽然間就把alias用來傳給controller排序了。
搞到現在所有category.name式的列都不能排序了,挺大的一個bug,對實際項目挺影響的,最好趕快改。
BTW.能拿你的MSN or QQ么:) or lucky == pesome?
赫赫,我覺得你這個結論是建立在對舊版hibernate的印象上的。
竊以為以新版hibernate加上偶然用一下jdbcTemplate,足以應付任何需求了,沒 必要引入其他沒什么未來的方案哦。
分目錄,分applicaitonContext文件,再寫個install的ant腳本而已。
俺一直投訴spring的配置文件脆弱,錯一點點就整個應用shutdown掉,切分plugin時如履薄冰,呵呵。
hello, 內嵌對象的排序搞好沒有?
比如book.category.name 列。
因為js訪問 form.category.name出錯(其實form.getElementByID("category.name")就沒事了),我一般設了alias="categoryName"
但最近的版本把alias而不是category.name作為排序的參數傳給controller了。
期望能盡快將此特性改進核心版本里,springside就可以去掉對et的擴展了:)
re: 我說喜新厭舊 江南白衣 2006-04-03 13:50
以后此類短文請勿放入blogjava首頁,謝謝:)
re: 浮躁:對新技術的一點偏見 江南白衣 2006-03-29 19:45
一點勞騷請別放在blogjava首頁,謝謝:)
re: 最近很忙,很郁悶,也很有收獲 江南白衣 2006-03-29 11:54
強啊! 你用的東西也太多,太新了吧?實驗性項目?
re: openfans整體設計介紹 江南白衣 2006-03-28 20:22
haha,fascace的代碼是怎么樣的?
據說maven2比maven1簡化了很多,對于apache家的學院派,設計語法時超復雜完全不顧用者感受的作風我挺害怕的。
maven要成熟還要一段時間,像spring2.0Mx居然從來不傳pom文件,搞得maven2每次都要去各個站點search一下,拖慢很大速度。(明明沒任何東西要下載,還要擱上一分鐘才到下一步,補了這個pom后,沒東西下載時幾秒鐘就過去了)
re: 初見 springside 江南白衣 2006-03-17 02:48
分頁晚一點做,謝謝關注:)
re: xfire 1.0 終于final了 江南白衣 2006-03-02 14:36
axis也出axis2.0了,你還有回頭是岸的機會呀。
re: AJAX——新手快車道(前言) 江南白衣 2006-03-02 14:35
為什么最后幾段不能用了? N溢出了?
樓上問題不如改為,有中文版么 or 哪里有電子版呀....
@huangxz: 大哥,你倒是仔細講講不足在哪里啊,加你MSN都沒有回應.
re: 簡化Spring(1)--配置文件 江南白衣 2006-02-16 11:16
to 山顛:
只要那位兄弟不是拿我文章來換錢,copy paste也沒什么,加速知識傳播而已:)
我以前看了下,他用beanshell來獲得動態特性,還不如用Groovy更強大些。
其他還沒細看。
另外,genandrun沒有提供rss很不方便哦,都不知道啥時候出來支持hibernate的版本:)
to roy:
謝謝你的建議:
>>BaseHibernateDao的功能可以再強化一些
BaseDao會隨著應用不斷深入而加強.
你看現在的代碼都是很簡單的,所以也不預先把一堆用不著的功能寫出來了,現在的hibernate,spring變化太快,很容易白寫.
>>如增加對MAP的查找,應對大批量重復在DAO中取MAP去查詢
如果要求Map里所有條件 都是 ==的判斷意義不大, 必須有第3元 邏輯符才有用
>>增加HQL查找,以便功能急劇變更,特別復雜的情況下使用.
同第一點
>>對Controller中生成POJO能否用COPY,直接SET出錯幾率有些大。且煩瑣
不懂,舉個例子好嗎?
>>刪除能否直接用一個Controller,提高重用?
會不會不好管理?
歡迎你在User-group里面提出review意見
http://groups.google.com/group/springside-user
re: Spring集成Groovy 江南白衣 2006-02-07 19:47
有沒有實用一點的例子?
re: 買了幾本書 江南白衣 2006-02-06 09:49
Effective Oracle By Design 是好書,正在想花公司的錢買它.
re: 春節推薦讀書單 江南白衣 2006-01-24 15:10
PartI和PartII都全部可以emule的,寫明中文版的就要去dearbook了。
大家習慣用emule....
re: log,exception最佳實踐 江南白衣 2006-01-18 23:09
如果有這個需要時的確有用.