日期:2014-05-20  浏览次数:20707 次

一个关于Spring,依赖注入,控制反转有什么用的问题?
Java code

Interface A=new ClassA();
a.hello();


ClassA,ClassA都实现了接口Interface
如果我不用ClassA了,用ClassB,这样我要改一句,
如果用SPRING来实现,也是改一句配置

那我想问SPRING的依赖注入有什么用?
如何体现出spring,依赖注入的优点
能不能举些例子

------解决方案--------------------
如果是依赖注入。
这里就不用new 这个ClassA对象。而由spring动态注入进去。

Interface A=new ClassA();
a.hello();
改成
Interface A;
a.hello();

当需要ClassA对象时就注入ClassA对象,需要ClassB对象时就注入ClassB(当然ClassB也要实现相同的接口)。
所以这个类就不用反复的修改。这里spring体现的是解耦。
------解决方案--------------------
探讨
Java code


Interface A=new ClassA();
a.hello();


ClassA,ClassA都实现了接口Interface
如果我不用ClassA了,用ClassB,这样我要改一句,
如果用SPRING来实现,也是改一句配置

那我想问SPRING的依赖注入有什么用?
如何体现出spring,依赖注入的优点
能不能举些例子

------解决方案--------------------
探讨
这种情况只有在你不用改动classA,classB,
而且不断在两者之间轮着交换使用时才有优势,
如果要修改classB,还是要编译的,

不用写new ,但还是要在框架里面配置,还是没有优势

------解决方案--------------------
用spring,我的理解,最大的好处就是减少了耦合,不光是修改文件需不需要编译的问题。
关于楼主说的spring终究要去创建对象。但这部分正好交由spring去管理,从而我们解脱了出来,我们写代码不用考虑这种对象的创建与管理,这部分的复杂度交给了spring。这自然就是spring带给我们的好处。
当然什么都有其优点与不足,如果实际项目中用spring没带给多少方便,自然可以不使用。
------解决方案--------------------
建议看下设计模式:面向接口编程。
------解决方案--------------------
探讨
引用:
我知道spring优点是减少耦合,但我不清楚他如何减少了耦合

------解决方案--------------------
探讨
引用:
也就是创建这个ClassA对象由业务类主动的去创建改为了被动的接受spring IOC容器的注入。这就是解耦了
但A类还是需要B类,还是有耦合的,我觉得注入只是改变了耦合方式,