美文网首页
不完全spring学习-1

不完全spring学习-1

作者: 闲杂人等 | 来源:发表于2020-03-18 19:25 被阅读0次

    不完全的意味着:

    1. 内容不完全正确,因为初接触时无法保证理解准确,随之学习的深入,自然更正某些概念
    2. 不一定会学完,一旦学到我自认为可以,就停止了,不会追求完整

    Let's Go!

    1. 什么是spring ?
      spring是IoC框架
    2. 什么是IoC?
      Inversion of Control:控制的反转,字面理解反转了控制
    3. 控制是什么意思?
      控制的对象是面向对象中object,控制是谓语,object是宾语
    4. 谁在控制
      谁用对象谁控制,如 Java中有一个ArrayList类,如果你想用它你需要:
    List<String> aList = new ArrayList<>()
    aList.add("hhhhh");
    

    new 就是一种控制,你在控制它的创建,所以控制的主语是“你”,是需要用到ArrayList的人

    1. 控制的反转是怎么反转的?
      不反转:程序员 控制 对象,反转可不是:对象 控制 程序员;而是:
      一段程序(一个盒子) 控制 对象 ;从这个意义看反转控制这个词不好,应该叫控制移交
    2. 那“反转”后代码会有什么变化?
      代码可以写成:
    List<String> aList ;
    aList.add("hhhhh")
    
    1. 不报空指针异常吗?
      如果想不报,要有个黑盒子替你干了 new ArrayList<>()这个活
    2. 没错,spring可以干这个事,但需要你的配合?
    3. 配合什么?
      嗯,有点复杂,我么还有些问题需要解决,这个问题一会谈,换一个话题吧
    4. 好吧,那为什么要反转呢?
      这个还要问吗?看来基础不强,你试着理解以下的话吧,其实不难:
      //没反转控制
      List<String> aList = new ArrayList<>();
    //反转后
       List<String> aList 
    
    反转后是不需要为aList初始化一个具体类型,如果上述的逻辑是一段业务代码,而aList有多个实现,那这段代码不会因为具体的类型(ArrayList)需要修改
    
    1. 面向接口或抽象编程,懂了。
      其实可以进一步想象成,你根据实际的问题,建模了一个数学公式,比如:Z = f(x,y) ,如果f的逻辑不变,你只需要喂给这个公式符合要求的x,y的具体值,那么就能得到Z。把那些对x,y具体求值的工作可以交给一个“计算器”干。这里,作为程序员的你告诉计算机一个运算逻辑,运算逻辑由操作符和操作数组合而成,你给一个单子,把操作数和具体的值对应起来,如果计算机有一段程序(暂时叫盒子)是从你的单子中取出具体的值,喂给你的程序,它就能工作了,如果运算逻辑不变,操作数的类型变了或者取值范围变了,你只需要修改那张单子就可以了。所以像new 这种把操作数具体赋值的工作可以交给这个盒子干就行了。你就不必关心了。你的责任由原来的定义运算逻辑,为操作数赋值这两个责任,变为定义运算逻辑,告诉计算机怎么为操作数赋值了。你的责任就成了要开发更具通用性的运算逻辑。
    2. 这和Spring有什么关系?
      Spring就是这个盒子啊!“专业人士”给了一个很nb的名字:容器。之后,应该用“容器”这个词了
    3. 那我需要如何和Spring“合作”?
      有一个最基本的方法,给它一张单子,描述你要用到的对象,以及这个对象到哪能找到,便于它为你创建它;你还要告诉它,这个对象有哪些属性,这些属性如何取值,便与他设置或初始化对象。你可以想象:
      Student aStudent = new Student();这段代码,你写成了:Student aStudent;,然后期望容器替你完成new的动作,你显然需要告诉它去哪找一个符合Student类型的类,实例化成对象:所以你需要告诉spring:<bean name="studeng" class="xxx.xxx.Studeng">......
      14.IoC大概懂了,找些例子学学怎么写给spring的这张单子,暂停,去找点例子,写点代码了。

    相关文章

      网友评论

          本文标题:不完全spring学习-1

          本文链接:https://www.haomeiwen.com/subject/mimcyhtx.html