python ioc框架_轻松理解 Spring 中的 IOC

Spring 简介

Spring 是一个开源的轻量级的企业级框架,其核心是反转控制 (IoC) 和面向切面 (AOP) 的容器框架。我们可以把 Spring 看成是对象的容器,容器中可以包含很多对象,所以 Spring 有很多强大的功能。

一句话,Spring 是项目中对象的管家,负责管理项目中用到的所有对象。所以在项目三层架构中,Spring 不属于某一特定层。

Spring 的 Hello World

想要构建一个 Spring 的入门程序,我们需要导入 4 个核心包和 2 个辅助包,创建一个实体类,最主要的是编写核心配置文件,applicationContext.xml 放在 src 下。最后写一个测试类即可。此时在测试类中我们不需要在使用 new 关键字去创建对象了。这也正是 Spring 的作用所在,会自动给我创建对象。

上图展示的就是最基本的演示,也是很容易就理解了,配置文件中配置了 user 对象,我们通过加载配置文件来获取对象从而避免了使用 new 来创建。

什么是 IOC

到这里我们就可以解释一下 Spring 中的核心概念之一的 IOC,即 inverse of control ,翻译过来就是反转控制。想想我们以前想要一个对象就会主动的 new 。现在 Spring 会帮我们创建对象,不需要手工 new(但是要记得配置呀)反转说的就是创建对象的方式反转了,以前是我们自己创建对象,现在由 Spring 为我们创建。

控制又是指什么呢?一个对象要有属性值吧,还有可能存在其它的对象,控制说的就是这些属性和引用不需要自己写了,由 Spring 来为我们自动创建(其实还是我们自己配置的~)。

总结下来就是 Spring 可以自动的为我们创建对象,并注入依赖。而反转控制说的就是以前我们自己创建对象和依赖,现在由程序为我们创建。

Spring 创建对象的方式

那 Spring 又是如何为我们创建的呢?我们知道对象的创建必须要经过构造器,从上面的例子中看到,我们只配置了一个标签,其实这就是将空参构造器使用配置文件给表示出来罢了。Spring 中创建对象也就是这么简单,当然配置可以更复杂些,后面再说,但目前我们可以知道,Spring 创建对象的就是通过配置 bean 标签,调用构造器来实现的。如何调用构造器的,那肯定是反射搞的鬼。

藏在 IOC 背后的 DI

DI,Dependency Injection,即依赖注入。IOC 还体现在自动注入依赖,依赖注入这词听起来不太明白,简单的理解为绑定数据,这是一种具体的技术,IOC 是思想,DI 是技术实现。对象之中需要其它的对象,类如 Service 层中需要 DAO 层对象,我们不需要在 Service 中手动 new 了,只需要配置一下即可。

常用的注入方式有两种,set 方法注入和构造方法注入。而每一种注入方式中又有注入基本数据类型和引用数据类型之分。下面就看看如何配置。

set 方法注入

通过 property 标签来配置属性,基本数据类型使用 value 属性即可,若是引用类型则使用 ref 。注意,User 对象中要有 Car 引用并且提供其 set 方法。

构造方法注入

这个配置看一眼就基本理解了,非常简单,说个小细节,对象的创建需要执行构造器,我们在初始化对象的时候会使用反射通过全类名得到对象,而这时就需要一个空参的构造器,我们不提供构造器的情况下,程序会自动为我们提供一个空参构造器,但是一旦重写构造器,我们就需要提供空参构造器,不然就报错。

虽然还有其它属性注入的方式,比方说 p 名称空间注入,spel 注入,但是这些都不重要!最常用的就一个那就是 set 方法注入。抓住重点,简单省时。

总结一下,今天主要说了什么是 Spring,如何搭建入门项目,解释了 IOC 思想,以及站在 IOC 背后的技术 DI,我们使用 set 方式注入基本数据类型和引用数据类型,当然,这些东西都构建在反射之上。

还有,框架之类的东西中配置文件是少不了的,Spring 又是尤其的多,今天涉及到的只是一点点,回头再专门整理一下。

PS. 欢迎关注我的个人公众号:【yujikui1115】 我们一起奋斗。

公众号内回复关键字可获取学习资料。

回复【Java】获取“自学Java视频教程”

回复【理财】获取“理财电子书大礼包”

回复【电子书】获取“Java、Python、GO 编程书籍”

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值