IOC是不是一个大大的谎言?

matrixcd90123456 发布于 2012/12/12 14:29
阅读 6K+
收藏 10

以前一直用的Spring在XML进行IOC配置。是那种一层套一层的多层架构的IOC配置: MyAction  IService ServiceImpl IDao DaoImpl,代码量大配置量也很大。最近用@JFinal 快两个月,虽然刚开始没有使用IOC感觉不习惯,但后来慢慢知道没有 IOC反倒省事了,难道IOC是个大大的谎言? @红薯 @宏哥 @中山野鬼  @JFinal @alvinte @绝望的八皮 @cwl @妖魔舞 @一千年前的人

加载中
4
宏哥
宏哥

你说对了

把配置从xml里面移到代码里面, 再移到....... 都是谎言, 配置本身就是麻烦始作俑者.

最好的方法就是不要配置, 你需要的是naming convention 以及 算法.

@jFinal 的approach 是正确的, 虽然我不懂 @jFinal 

Keep it simple , 这半句话很多人知道, 后面半句知道就不多了:

But not simpler.

你不能改变制造麻烦的方法, 来简化应用, 甚至任何方法都不能简化应用, 

你只能避免制造麻烦.

李血甜
李血甜
就是“约定优于配置”思想吗?现在的项目,后期维护占了很大的方面,配置可以让后来的快速理解和掌握项目结构,虽然前边付出了努力,可是对以后就是值得的。感觉就相当于注释~!annotation介于XML配置和约定之间。
yuzhouliu
yuzhouliu
为什么不试试 django
matrixcd90123456
matrixcd90123456
嗯,慢慢觉得IOC没啥用了,以前大把时间浪费在XML配置上了 :(
6
JFinal
JFinal

    至少能确定 IOC 对极速开发影响很大,在 JFinal 极速开发之中是一定要消除的。个人理解IOC至少两大作用:

1:为了方便AOP。通过将类的创建从它所依赖的类中分离出来,并将此创建工作交由Spring、Guice之类的IOC容器来做,以便有机会在创建并组装依赖关系时注入代理来实现AOP。通常情况下是为了注入声明式事务以及权限管理之类的代理。

2:为了方便切换抽象类或接口的实现类。这个理由基本上来说是个伪命题,因为这种情况并不多,目前java世界的情况是,无论你的Service、Dao需不需要在将来切换实现类,都给来上一个IService、IDao接口。这是对抽象的严重误用,抽象只能是在需要的时候去用,而不是时时刻刻都去用。

    综上所述,IOC在过去、现在或许在将来被广泛误用,JFinal想借此机会展现一个没有IOC的开发风格,不仅能大大提高开发效率,而且还能更加轻松地使用 AOP支持原本需要 IOC支持的声明式事务。

1
Grrrr
Grrrr

我一直用一个叫guice的 超轻量级的IOC。 速度很快,但是配置很头晕。

不过昨天看了 @Jfinal 的源码,感觉IOC做的,我们完全可以用良好的架构来搞定,不再需要麻烦的配置。

1
绝望的八皮
绝望的八皮
在java语言本身的限制之下,ioc也有他一定的作用,比如定制不同的scope,让测试变得更容易等等...但不适合快速开发,或者说不适合国内大多数项目的本身的需要,所有ioc基本就是给自己找了麻烦。。
1
mallon
mallon
@JFinal 要是能整合异步IO的服务器就更好了,我现在见了“部署”两个字,感觉就跟吃了苍蝇一样…
戴威
戴威
回复 @JFinal : 我只是不知道我写的东西是不是也都支持
JFinal
JFinal
回复 @喵了个咪 : 完全无问题,jfinal 是标准的 servlet 项目,tomcat、jetty、glassfish、websphere、weblogi、resin全支持 :)
戴威
戴威
回复 @JFinal : 开发的时候用jetty,部署的时候用tomcat,会不会出现问题?
JFinal
JFinal
开发阶段整合个jetty 就挺好了,本打算将tomcat也整合一下的,但是tomcat启动有点慢,影响了开发体验的连续性 :)
1
mallon
mallon
@JFinal 我的意思是不要想着兼容那套垃圾的JSP/Servlet规范了,自己从服务器底层弄一套吧
1
mallon
mallon
@JFinal 哈哈这就是你发展不好的原因,高不成低不就,低端码农肯定不会用,而高端程序员有更便捷的技术,肯定也不会用
1
b
blackMcDul
个人感觉连接口都没必要,保留基本的MVC三层即可,dao层写链接数据库的sql,service封装业务类,action负责跳转和返回。用反射机制完全可以写一个通用的CRUD类,这样对于不需要更多业务的大型项目的前期是非常省事的。
batcom
batcom
回复 @matrixcd : 564646
sxgkwei
sxgkwei
早就不写接口层了,你才发现啊?
matrixcd90123456
matrixcd90123456
有道理,简单点好 ^_^
1
mallon
mallon

引用来自“JFinal”的答案

引用来自“Mallon”的答案

@JFinal 哈哈这就是你发展不好的原因,高不成低不就,低端码农肯定不会用,而高端程序员有更便捷的技术,肯定也不会用
JFinal 现在发展挺好的,才开源几个月呢,用户量已经很大了,有不少公司已经全面采用了JFinal,并抛弃了原有技术
多接触接触Java之外的便捷技术吧,对自己的思想进步很有好处
Credo-Zhao
Credo-Zhao
回复 @JFinal : 支持!
1
mallon
mallon

引用来自“郭煜”的答案

引用来自“Mallon”的答案

@JFinal 我的意思是不要想着兼容那套垃圾的JSP/Servlet规范了,自己从服务器底层弄一套吧
servlet没什么不好的吧?很清晰简洁呀。
我以前也觉得简洁,但是用了更简洁的后,回过头就不想再用JSP/Servlet了
返回顶部
顶部