依赖注入

是一种设计模式和编程技术,其原理是将对象的依赖关系由外部容器(IOC)来管理和注入。它的目的是解耦组件之间的依赖关系,提高代码的灵活性、可维护性和可测试性。

依赖注入原理

是通过在对象的构造函数、属性或方法中注入所依赖的对象,而不是在对象内部创建或获取依赖对象。这样,对象的依赖关系由外部容器来管理,对象只需要关注自身的核心功能,而不需要关心如何获取依赖对象。

依赖注入的主要目的

Spring IOC

是实现控制反转(Inversion of Control,IoC),即将对象的创建、组装和依赖关系的管理交给外部容器来负责(将New对象的控制权从应用程序的代码本身转移到外部的XML文件)。通过使用依赖注入,可以实现以下好处:

(1)解耦对象之间的依赖关系:对象不再负责创建或获取依赖对象,而是通过注入的方式来获取所需的依赖对象,从而降低了对象之间的耦合性。 (2)提高代码的可测试性:依赖注入使得在测试过程中可以轻松替换依赖对象,从而实现针对单个组件的独立测试,减少了对外部资源的依赖,使得测试更加简单和可靠。 (3)提高代码的灵活性和可维护性:通过外部容器来管理依赖关系,可以更灵活地配置和组装对象,便于修改、扩展和维护代码。

总结来说,依赖注入的原理是通过将对象的依赖关系由外部容器来管理和注入,从而解耦组件之间的依赖关系,提高代码的灵活性、可维护性和可测试性。使用依赖注入可以使代码更清晰、可读性更高,并且更易于单元测试和扩展。

依赖注入的方法

(1)通过构造器注入,这也是Spring官方推荐的方式

private DemoService demoService;
@Autowire
public DemoController (DemoService demoService){
	this.demoService = demoservice;
}

1.在注入对象很多的情况下,构造器参数列表会很长吗,所以不够灵活

2.对象初始化完成后,就可以获得可使用的对象

3.可以检测到循环依赖

(2)通过Setter方法注入,这种方式在日常开发中不太常见

private DemoService demoService;
@Autowire
public setDemoService (ExampleService demoService){
	this.demoService = demoservice;
}

1.可以确保注入前不依赖Spring容器

2.每个set方法单独注入一个对象,便于灵活控制,并且可以实现选择性注入

3.可以检测循环依赖