Spring(1)之 ioc底层原理

----微信公众号更详细噢:
在这里插入图片描述

这篇是spring的第一篇文章,我们先来了解一下spring。

(来源百度百科:)

Spring是一个开源框架,它由Rod Johnson创建。它是为了解决企业应用开发的复杂性而创建的。Spring使用基本的JavaBean来完成以前只可能由EJB完成的事情。然而,Spring的用途不仅限于服务器端的开发。从简单性、可测试性和松耦合的角度而言,任何Java应用都可以从Spring中受益。

Spring是一个轻量级的控制反转(IoC)和面向切面(AOP)的容器框架。

可以看到,spring是一个轻量级的开源框架。

主要核心是:

  • 控制反转(Ioc)
  • 面向切面(AOP)

本文主要将控制反转底层原理。

要讲底层原理,就得知道ioc到底是什么!我们继续看百度百科:

控制反转——Spring通过一种称作控制反转(IoC)的技术促进了松耦合。当应用了IoC,一个对象依赖的其它对象会通过被动的方式传递进来,而不是这个对象自己创建或者查找依赖对象。你可以认为IoC与JNDI相反——不是对象从容器中查找依赖,而是容器在对象初始化时不等对象请求就主动将依赖传递给它。

是不是有点迷惑,感觉没看懂,别急,看我慢慢打出来。

比如有一个类,类中有一个非静态方法,我们调用这个类里面的方法,是通过创建这个类的对象,使用对象调用方法,创建对象过程是new一个对象。控制反转则是把对象不通过new的方式实现,而是交给spring配置创建类对象。

Spring 的ioc 操作:

  • 把对象的创建交给spring来进行管理。
  • co的操作可以是配置文件方式,也可是注解的方式(后面讲)。

ioc底层原理

底层原理技术:

  • xml配置文件,
  • dom4j解决xml,
  • 工厂设计模式,
  • 反射。

原理:

在这里插入图片描述

比如我们有一个用户类,我们要servlet中调用类里面的方法,我们可以通过创建这个对象,然后调用方法:

在这里插入图片描述

可以发现有一个缺陷就是耦合度太高了!!!!

因为如果我们的User类变了,创建的类和调用方法也发生改变。

于是有了一个通过工厂模式来解耦合操作:

在这里插入图片描述

其实,可以发现这样也不是最优的解决方法!!因为在工厂中通过方法返回来创建类的,显然servet与工厂又产生 耦合!!!!

那么要什么才是最优解决方法呢??看下面??

在这里插入图片描述

我们通过在servlet中new创建得到!!
在这里插入图片描述

现在-------------

我们可以这么做:

创建xml配置文件,配置创建对象类

创建工厂类,使用dom4j解析配置文件+反射

public static UserService getService(){
//1.使用dom4j 解析xml文件
//根据id值userService,得到id对应class 属性值
String classValue = “class属性值”;
//2.使用反射创建类对象
Class c = Class.forName(classValue);
//创建类对象
UserService service = c.newInstance();
return service;
}

上面就是主要的原理了

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值