一.Spring IOC
Spring IoC(Inversion of Control,控制反转)是指将对象的创建、依赖关系的管理与对象的使用解耦合,由容器来负责对象的创建和管理,而应用程序只需要使用容器提供的对象即可。简单说来,就是控制对象的创建过程从程序员手中转移到了IoC容器中,从而实现了程序的松耦合。
具体来说,如果不使用Spring IoC,我们需要自己创建对象,并且自己维护它们之间的依赖关系,这样会导致类之间的耦合度很高,一旦出现需要修改依赖关系或者替换某个对象的情况,就需要修改很多代码,增加了工作量和风险。而使用Spring IoC,则只需要在配置文件中声明对象和它们之间的依赖关系,Spring容器会自动创建并管理对象,并且在需要时将它们注入到使用它们的对象中。这样,程序员可以专注于业务实现,而不需要关心对象的创建和管理问题,使得应用程序更加灵活、易于维护和扩展。
总之,Spring IoC是一种重要的编程思想和设计模式,它可以帮助我们实现程序的松耦合,提高代码的可读性和可维护性,同时也方便了代码的测试和重构。
二.DI
Spring依赖注入(Dependency Injection,简称DI)是指将一个对象所需的依赖关系从该对象中抽离出来,通过外部容器来进行管理和注入。在Spring中,这个外部容器叫做ApplicationContext,它会负责创建并管理所有的Bean,并且在Bean初始化的时候自动注入它所需要的依赖关系。
具体来说,在Spring中,我们通过配置XML文件或者注解来定义Bean的依赖关系,Spring容器读取配置文件后自动实例化Bean,并且自动将Bean所依赖的其他对象注入到该Bean中。
这样,我们只需要关心Bean的功能实现,而不需要关心Bean的依赖关系如何获取和管理,大大降低了代码的耦合度,提高了代码的可维护性和可扩展性。