关于#spring#的问题:2、能否举出具体实例说明 spring IOC 和 DI 的解耦(语言-java)

1、spring的注入对象比声明变量好在哪里?
2、能否举出具体实例说明 spring IOC 和 DI 的解耦

(1)好处在于,你可以通过配置文件替换一个程序的某个部分的实现,而不用去修改源代码,因为依赖和装配是放在你的代码之外的。
(2)定义一系列的接口和bean,在配置文件里指定某个接口用什么实现类,Spring自动将它注入到对应的对象的接口里。

就从企业开发需求上来讲,估计你就能明白了。
企业开发在二次开发或者业务的扩展,更多第三方接口的加入。
如果你能有一个容器,那么你在容器写了一些公共的服务类,你可以在所有地方共享同一个实例。而且如果不是自动依赖注入,也就是说不是懒加载,在项目启动,容器实例化就会自动实例一些公共的服务bean,你就可以直接通过SpringWebContext上下文来直接从容器获取对象,这会很使用。
比如你的企业项目有自己的反射机制,实现自己的一套缓存机制,什么对象呀,都可以,要兼容spring容器的实例,一起公用,这里就发挥作用了。

其实这里的解耦就是把接口和实现给隔离开了
比如业务类需要注入一个接口的实现类,就只用写
@Autowired
接口类
这样spring就会帮你注入具体的实现类,而不用这样做 接口类=new 接口实现类(), 这样做的耦合性就很高
后期如果想替换实现类的话,改造成本大,但是使用spring的话,就只需要用@primary注解或者把原先的实现类注释,使用新的实现类即可

可以参考一下我的这篇博客
http://t.csdn.cn/leoUh