[Spring XML] (二)Spring的控制反转(IoC)与依赖注入(Dependency Injection)

Spring的控制反转

使用工厂模式降低程序的耦合性博客中,我们已经实现了使用工厂模式来降低程序类之间的耦合性。
原来: 我们在获取对象时,都是采用 new 的方式。 是主动的。
在这里插入图片描述
现在: 我们获取对象时,跟工厂要,有工厂为我们查找或者创建对象。 是被动的。
在这里插入图片描述
这种被动接收的方式获取对象的思想就是控制反转,它是 spring 框架的核心之一。
在这里插入图片描述

使用Spring框架创建对象

那么我们如何使用spring来完成和使用工厂模式降低程序的耦合性一样的功能呢?即让spring框架为我们创建AccountDaoImpl类对象和AccountServiceImpl类对象。

1:编写一个xml配置文件:bean.xml
在该文件中配置了两个bean对象的信息,
id:表示获取对象的key,
class:指定需要创建的对象的限定类名。
在这里插入图片描述
2:读取配置文件,创建对象并将对象存入核心容器中,使用key值获取对象。
在Client的main方法中,我们实例化一个ApplicationContext子类对象ClassPathXmlApplicationContext对象。该对象在读取配置文件后就会创建相应的对象。
在这里插入图片描述
因此我们在表现层获取了一个业务层的对象。

那么在业务层中我们如何获取一个持久层的对象了?我想你会说我们可以将上述代码的1,2两处在写一遍就可以了。
在这里插入图片描述
这样当然可以了,但是我们再次读取了配置文件,并再次将所有需要的对象创建了一遍!!!

Spring的依赖注入

对于上述的问题,我们就需要利用spring的依赖注入机制了。
使用以前的bean.xml中的配制方法,spring在帮我们创建对象时,会调用类中的默认构造函数来创建对象。这时创建的对象中的成员都没有被赋值,而我们需要在创建AccountServiceImpl类对象时,将他的成员accountDao也进行赋值。
这就是根据类之间的依赖关系(AccountServiceImpl类 包含一个 AccountDaoImpl对象),给对象的成员变量注入需要的值(即:给成员变量赋值)。 简单的说,就是坐等框架把持久层对象传入业务层,而不用我们自己去获取。

依赖注入: Dependency Injection。 它是 spring 框架核心 ioc 的具体实现。
我们将配置文件改为以下即可:
在这里插入图片描述
而业务层中,我们就可以不用再给accountDao成员赋值了,而是可以直接使用了。
在这里插入图片描述
执行Client的main方法的结果:
在这里插入图片描述

注意:有关Spring的依赖注入,我会在另一个博客中详细的讲解它的具体用法。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值