spring学习第一天IOC和DI基本认识

   spring是一个轻量级的开源的框架。 

   其核心两部分是:1、ioc(控制反转) 2 、aop 面向切面编程

  IOC控制反转

     

1、浅谈控制反转(Inversion of Control,IOC)

我们首先先来了解一下控制二字,也就是在控制“正”转的情况下,在任何一个有请求作用的系统当中,至少需要有两个类互相配合工作,在一个入口类下使用new关键字创建另一个类的对象实例。


这就好比在面向对象编程的思想下,“我“充当一个入口类,在这个入口类中,我每次吃饭的时候都要买一双一次性筷子(每一次使用都要new一次),在这样的关系下,是”我“(即调用者)每次都要”主动“去买一次性筷子(另一个类)。我对筷子说你老老实实的过来我的手上,是我控制了筷子,那好,在这种控制正转的关系下,放在现实生活当中,肯定是不现实的,而且人是懒惰的,他总会去创造出更加方便自己生活的想法。


更确切的做法是,买一双普通的筷子(非一次性),把他放在一个容器当中(在Spring中叫做IOC容器),你需要使用的时候就对容器说:IOC我想要用筷子(向容器发出请求),接着筷子就会”注入“到的手上,而在这个过程当中,你不再是控制方,反而演变成一名请求者(虽然本身还是调用者),依赖于容器给予你资源,控制权坐落到了容器身上,于是这就是人们俗称的控制反转。


初涉依赖注入(Dependency Injection)  

同样接着上面的例子,在控制反转的统一下,筷子是怎么来到我的手上(即我们是如何获得请求的类),这就是一个依赖注入的过程。

再谈IOC与DI

设计原则中好莱坞原则描述到,“别找我们,我们找你”,百度百科上对这点描述是“不要给我们打电话,我们会给你打电话(don‘t call us, we‘ll call you)”这是著名的好莱坞原则。


在好莱坞,把简历递交给演艺公司后就只有回家等待。由演艺公司对整个娱乐项的完全控制,演员只能被动式的接受公司的差使,在需要的环节中,完成自己的演出。


这一点完美的提现了在IOC身上,IOC所注重的是设计思想上,从一个常规的创建对象的做法,即new一个对象,转变成向IOC容器递交”简历“,被动的等待IOC容器返回资源给你。控制反转即指的是”演艺公司控制演员“,而说到依赖,则是“演员需要公司混饭”,我们所需求的对象,需要依赖容器来获得,这个过程即是依赖注入。本质上IOC和DI是同一思想下不同维度的表现。


2、IOC的底层原理

 1)xml配置文件

2)dom4j解析配置文件

3)工厂设计模型

4)反射

例如:第一步创建类

public class UserService{}


第二步 配置xml配置文件,配置要创建的对象类

<bean id="userService" class="com.springTest.service.UserService"></bean>

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

public class UserFactory{

    public static UserService getService(){

        1使用dom4j解析xml文件根据ID值userService,得到ID值对应的class书写值

      String classValue="class属性值"

  //使用反射创建类对象

      Class clazz= Class.forName(classValue);

UserService userService = clazz.newInstance();

return userService;


 }

}


   



猜你喜欢

转载自blog.csdn.net/qq_36697880/article/details/80820609