为什么要使用spring?

为什么要用ioc 比如a里面new了b
a调用b的bb方法,编译时就决定了,现在b的bb方法有点变化,a调用是编译时决定的,已经变化了,导致报错,耦合度大,现在用ioc创建,bb方法变化,a要在运行时才创建b,那么可以保证bb是变化后的bb方法,不会报错。

依赖注入我们都会选择注入接口 不会注入实现类 因为注入实现类就写死了 耦合度变大了
,new也是接口等于实现类 因为有多态保证了程序的灵活 和解耦

new是要导包的,就算是多态写法,也要导入接口实现类两个包,导包意味写死了。
依赖注入 只需要导包接口,现在只导了一个包,耦合度就变低了,
那么依赖注入接口要找哪个实现类?这就看你的配置 比如依赖注入的名字 和quf注解,这些不管,导包减少了,就相当于耦合度降低了,

比如,我new了一个对象 多态写法, 现在要改成另外一个实现类,我就要在程序里面改,这很麻烦如果项目大的话,耦合度很大。
如果用spring 我只需要修改xml中指向的实现类就行了,不要改代码 耦合度变低了。

如果是spring注解 注入 那还是要改代码,但是改代码也比new好改,只需要加个quf注解指向另外一个实现类就行了,所以xml比注解耦合度还低,但是现在基本不用xml 配置太繁琐了。

如果是new 我要找到项目中所有new的地方 全部换成另外一个实现类(不一定是只有一个地方new了,可能很多地方都new了,要全部换成另外一个实现类),项目大的话这很麻烦还容易出bug,xml的话是统一放在一个文件的,只需要改xml文件,不需要改代码,方便查找,耦合度更低,注解的话耦合度比xml搞点,修改麻烦点但是还是比new耦合度低的多

,xml改有多方便,依赖注入不要管,改bean的xml (就是相当于compement注解的xml)改成另外一个实现类就行了 bean id不变 class标签变化 这样依赖注入还是引入这个id 但是这个id指向的类变了,这样只需要改一个标签实现类就换了,耦合度很低,注解的话 吧一个实现类的注解去掉 另外一个实现类加上注解也就达到了换实现类 也很方便, new的话 找到所有new的地方 全部改成另外一个实现类 这很容易改错 耦合度很大

还要ioc是反射 运行时才创建出来 就算有问题 也是运行这个功能的时候才报错,这样 比如 如果有错 我点了一个查询 才报错抛出异常,这样我就知道我这个查询写错了,排错也很方便,改好,再次运行,点添加又报错,我又发现了一个错误,这样容易定位到错误的代码是哪里。

如果是new new不是反射 是编译时决定的,如果new的这个类的代码写错了,如果有错 编译不通过 报错,如果我错了很多功能 全部给我报错 我知道是哪里错了?又没点功能 一次报错这么多我怎么排错,所以耦合度大增。

所以要用spring的ioc di来管理对象的创建,创建对象不给我们自己管理,交给第三方管理,这样有好处可以解耦 spring 是通过反射(运行时创建。) 工厂模式解耦,xml管理对象来为我们创建对象的 大大的降低了程序间的耦合度。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值