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

本文主要介绍了Spring中的IOC(控制反转)概念,解析了IOC是如何反转对象控制,并通过传统的程序结构对比说明。同时,详细阐述了依赖注入(DI)的含义,利用反射实现动态对象创建。接着,文章重点讲解了IOC容器中的三种依赖注入方式:set方法注入、注解注入和构造器注入,分别给出了示例和配置文件说明。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

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>
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值