有一天,业务改了,你写了一个新的类ServiceC,类ServiceB就废弃不用了。那之前调用ServiceB的几十个类,你就得把几十个类中“ServiceBb= new ServiceB()”的代码改成“ServiceCc=newServiceC()”了。那如果有一天,ServiceC也废弃了,现在几十个类又需要去调用ServiceD的方法了,你怎么办?还有,万一你没有替换完整怎么办,比如你漏掉了一处,那项目跑的时候又去调用对象ServiceC 的方法,但此时ServiceC的逻辑已经废弃了,是不是还有可能造成线上问题,产生脏数据啥的? 2、IOC解决了什么问题
这样一来,假如几十个类都引用了接口ServiceB,我也只需要让ServiceC 实现接口ServiceB 而已,根本不用改几十个类中的相关引用代码块了。 也就是说,IOC,也称依赖注入,就是Spring容器用反射技术,根据注解或配置文件去创建Bean, 然后根据Bean之间的依赖和引入关系,去实例化对应的对象,实现了类和类之间彻底的解耦。你创建个接口,然后有个实现类A,别的类引用了A里的逻辑,后边A废弃了,你就可以创建个类B,让它实现接口,只需要做这么一步而已,不像之前那样,你还得把每个类中“A a = new A()”的代码都改成“B b = new B()”了。 3. 如果没有AOP,我们的项目维护有什么问题 说完IOC,再来说说AOP。 很久以前,我大学的时候,老师教的JSP+Servlet项目,每次要做增删改查的时候,一个方法里都得在开头写“开启事务”等等固定代码,结尾的地方都得写“提交事务”等固定代码。