总结:IOC容器的理解和三中依赖注入的方式

1、IOC的理解

IOC(控制反转)是spring的一个重要思想。首先我们需要从字面意思上去理解IOC
既然是控制反转,那么我们就要知道是谁控制谁、什么是反转、哪些方面要进行反转
1、谁控制谁?控制什么?
在传统的javaSE中,我们需要创建对象的方式基本上是使用new的方式,是程序代码主动的去创建依赖对象,而IOC是一个专门用来创建和管理这些对象的一个容器,意思就是,当我们有了这个IOC容器后,IOC容器来控制对象的。那么控制了什么呢?控制了外部资源获取(不只是对象包括文件等)。
2、反转是什么?哪些方面反转?
我们传统的程序由我们自己在对象中主动控制去直接获取依赖对象,就是正转;而反转则是由容器来帮忙创建以及注入依赖对象。
传统的应用程序结构图:
在这里插入图片描述
使用IOC容器后:
在这里插入图片描述
我们的客户端不再主动的去创建对象。

另外,我们还要理解一下DI(依赖注入)
**在系统运行中,IOC中的某个对象,动态的提供它所需要的其他对象。**举个例子,我们创建一个Person这个类,它需要另外一个类Car,按照传统的方式,我们需要在Person对象中手动编写代码去创建一个Car对象,但是我们有了Spring之后,我们只需要告诉Spring我们的Person需要一个Car对象,那么在系统运行过程中,spring会在需要的时候自动创建一个Car实例。那么DI到底是怎么实现呢?JAVA1.3之后的一个新特性,反射,它允许程序在运行过程中动态的生成对象,执行对象的方法,改变对象的属性,Spring就是通过反射来实现依赖注入的。

2、IOC容器中的三中依赖注入的方式。

2、1 set方法注入

把需要注入的类写成属性,给他设置一个set方法

public class B {
    
    
	private A a;
	public void setA(A a){
    
    
		this.a == a;
	}
}

接着在我们的配置文件中类A注入到类B里面

<bean id="aa" class="com.study.jyl.A"></bean>
<bean id="bb" class="com.study.jyl.B">
	<property name="a" ref="aa"></property>
</bean>

2、2 注解注入

这几个注解不做过多解释,详细信息可以参考spring官方文档。

  • @Autowired:
  • @Required
  • @Service
  • @Controller
  • @ Repository
  • @Component
  • @Resource
  • @Qualifier
  • @Required

3、构造器注入

同set方法注入一样,首先把需要注入的类写成属性,然后使用构造器方法。

public class B {
    
    
	private A a;
	public B(A a){
    
    
		this.a == a;
	}
}

配置文件

<bean id="aa" class="com.study.jyl.A"></bean>
<bean id="bb" class="com.study.jyl.B">
	<constructor-arg name="a" ref="aa"></constructor-arg>
</bean>

猜你喜欢

转载自blog.csdn.net/l2470334493/article/details/109017124