“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
如果有这个需要时的确有用.