浏览 35393 次
锁定老帖子 主题:IOC, huh?
该帖已经被评为精华帖
作者 正文
   发表时间:2004-08-17  
感觉Ajoo把Spring&Pico当毒瘤一般^^。
不要吓坏同学们。呵呵。至少可以让我们COP一下下。找到一点感觉。

---
to:JJX
小蒋你也来啦。。。
0 请登录后投票
   发表时间:2004-08-17  
呵呵.怪不得我啊.

看看一些孜孜不倦地到处调用PicoContainer.newXXXInstance()的同学们吧.

他们觉得所谓ioc就是调用这些ioc容器的api.

连久经考验的readonly同志都不由自主地在依赖着容器来封装组件的实现细节变化了.

你们还说我耸人听闻?

也许不是pico们的错, 也许pico们在推广ioc这一个自然得不能再自然的面向接口的基本惯用法上有一定功劳.但是它们实际上起的误导作用也不小. 我越来越相信有必要正本清源一下了.
0 请登录后投票
   发表时间:2004-08-18  
ajoo 写道
呵呵.怪不得我啊.

看看一些孜孜不倦地到处调用PicoContainer.newXXXInstance()的同学们吧.

他们觉得所谓ioc就是调用这些ioc容器的api.

连久经考验的readonly同志都不由自主地在依赖着容器来封装组件的实现细节变化了.

你们还说我耸人听闻?

也许不是pico们的错, 也许pico们在推广ioc这一个自然得不能再自然的面向接口的基本惯用法上有一定功劳.但是它们实际上起的误导作用也不小. 我越来越相信有必要正本清源一下了.


不觉得你的表达有问题。使用ioc就应忘记ioc的存在,不应在代码中使用ioc container。但现实中却总发现有把pico/spring当作new/factory的替代的。连pico网站上的实例中都有这样的代码,真把我搞糊涂了。

求教ajoo,我理解下来,觉得不管pico还是spring,都是把依赖对象注入到成员变量上的,那这样的话如何处理多线程的同步问题呢?譬如同一个bean同时被两个线程调用,而我考虑想实现这个bean能每次被调用时依赖不同的bean。这种情况是不是实际中不存在的?还是因为ioc是种组织静态对象的方式,本就不应该通过ioc方式考虑这种动态情况?
0 请登录后投票
   发表时间:2004-08-18  
呵呵。谢谢支持。

关于多线程,如果你用构造函数注射,并且你的成员变量是final的话,应该没有问题的(至少ioc本身不会造成问题)。至于用setter的话,自己手工处理组装的话就自己synchronized咯。用容器的话,我不是很清楚spring如何处理的,相信应该也有办法同步的。反正我也不大关心,因为用setter在我这就不是一个option。
0 请登录后投票
   发表时间:2004-10-30  
引用
用容器的话,我不是很清楚spring如何处理的,相信应该也有办法同步的。
哪位老大了解这个问题能否给讲解一下,不懂
0 请登录后投票
   发表时间:2004-11-23  
关键是注入的时机太不灵活了。
都是在构造时注入的(限于Spring,pico我不熟)。

不管Type2还是Type3,都是在getBean()中完成的。(也许你自己不调用getBean(),可是总有地方调用——比如说WebWork)
因此,这个对象一旦构造完成了,就无法再自动注入了。(反正我是不知道怎么做)
如果自己手动set的话,那你用来注入的对象哪儿来的?AAA.getBBB()?

还有一个问题:有可能类的某一个方法需要一个对象A,其他的方法都不需要。因此,我没有必要把它做成一个类的成员。我希望是
funcA (A a);{
    a.???();;
}

最好是
funcA();{
    A a;
    a.???();;
}   

这如何注入?
AOP可以截住函数调用,但是如何注入?
0 请登录后投票
   发表时间:2004-11-23  
mis98zb 写道

最好是
funcA();{
    A a;
    a.???();;
}   



我就不知道这个好在哪里。你怎么给funcA()做单元测试?你怎么在JUnit TestCase里面把a对象注射进去?
0 请登录后投票
论坛首页 Java企业应用版

跳转论坛:
Global site tag (gtag.js) - Google Analytics