目录

 

第一节:spring ioc 简介

第二节:spring ioc 实例讲解第三节:装配一个 bean

第四节:依赖注入

第五节:注入参数

第六节:Spring 自动装配

开始学习:

(1)IOC(控制反转)出现的原因(举例子进行说明)       

(2)实现简便版本的IOC(控制反转)思想:多态,接口,继承

(3)使用Spring管理IOC容器。

【举例子版源代码】

【简便版本IOC 源代码实现】


第一节:spring ioc 简介

 

IOC(控制反转:Inverse of Control ),又称作 依赖注入,是一种重要的面向对象编程的法则来削减计算机程序的耦合问题,也是轻量级的 Spring 框架的核心。

第二节:spring ioc 实例讲解第三节:装配一个 bean

第四节:依赖注入

 

1,属性注入;

2,构造函数注入;(通过类型;通过索引;联合使用)

3,工厂方法注入;(非静态工厂,静态工厂)

4,泛型依赖注入;(Spring4 整合 Hibernate4 的时候顺带讲)

 

第五节:注入参数

 

1,基本类型值; 2,注入 bean; 3,内部 bean; 4,null 值;

5,级联属性;

6,集合类型属性;

第六节:Spring 自动装配

通过配置 default-autowire 属性,Spring IOC 容器可以自动为程序注入 bean;默认是 no,不启用自动装配; default-autowire 的类型有 byName,byType,constructor;

byName:通过名称进行自动匹配; byType:根据类型进行自动匹配;

constructor:和 byType 类似,只不过它是根据构造方法注入而言的,根据类型,自动注入; 建议:自动装配机制慎用,它屏蔽了装配细节,容易产生潜在的错误;

开始学习:

(1)IOC(控制反转)出现的原因(举例子进行说明)       

代码copy请看我【举例子版源代码】

新建JavaWork,obZhangSan,Test  .java三个文件。

Spring 之IOC 详解

内部内容:

Spring 之IOC 详解

Spring 之IOC 详解

Spring 之IOC 详解

然后执行Test.java

 

Spring 之IOC 详解

 

重点!!!

分析上面的程序(javawork,zhangsan   .java)

我们会发现,测试这个工作,完全和那个人耦合在了一起。

假如,测试员换人了,换成了李四,我们发现,代码统统都要换!!!

Spring 之IOC 详解

Spring 之IOC 详解

 

这就导致了,文件变化太大,破坏了完整性。

这个时候就有了IOC的设计思路。

控制反转——把这个控制权转交出来,某个人执行的测试工作转交给主管。

Spring 之IOC 详解Spring 之IOC 详解

 

(2)实现简便版本的IOC(控制反转)思想:多态,接口,继承

代码copy请看我【简便版本IOC 源代码实现】

首先你得通过一个接口(Interface)!!!

Spring 之IOC 详解

 

1.先定义一个接口方法,然后让测试人员继承它

Spring 之IOC 详解

2.新增了一个李四测试人员:

Spring 之IOC 详解

3.更改张三代码,使其继承测试接口

Spring 之IOC 详解

4.定义set方法(使之定义使用哪一个测试员),然后那个被定义好的测试员再在主管那里去被调用,再去调用自身的test方法,其test的方法是我们从接口继承而来,又重新实现的。

Spring 之IOC 详解

5.主管。

Spring 之IOC 详解

 

(3)使用Spring管理IOC容器。

8min,明天更新。

 

【举例子版源代码】

obZhangSan.java

package service;

public class obZhangSan {

   //张三测试员,具备做测试的动作。

   public void test(){

     System.out.println("张三-测试程序");

   }

}

 

Test.java

package test;

import service.JavaWork;

public class Test {

   //主管执行命令

   public static void main(String[] args) {

     JavaWork javawork=new JavaWork();

     javawork.doTest();

   }

}

 

JavaWork.java

package service;

public class JavaWork {

 

   //java测试工作

   public void doTest(){

     obZhangSan zhangsan=new obZhangSan();

     zhangsan.test();//张三来做测试操作。

   }

}

 

【简便版本IOC 源代码实现】

Spring 之IOC 详解

Tester.java

package service;

public interface Tester {//这就是一个接口方法,然后我们让测试人员继承它!

    public void test();//运用到的多态的思想

}

 

LiSi.java

package service;

public class LiSi implements Tester{

    public void test(){

       System.out.println("李四-测试程序");

    }

}

 

obZhangSan.java

package test;

import service.JavaWork;

import service.LiSi;

import service.obZhangSan;

public class Test {

 

    //主管执行命令

    public static void main(String[] args) {

       JavaWork javawork=new JavaWork();

       //javawork.setTester(new obZhangSan());

       //假如这里需要换一个人了,代码就完全不需要动。

       javawork.setTester(new LiSi());

      

       javawork.doTest();

    }

    //这样子控制权就不是业务代码来管理的,控制权就移交给了住惯了。

}

 

JavaWork.java

package service;

public class JavaWork {

    //定义一个测试员,具体谁来执行,从主管那边设置。

    private Tester tester;//然后还需要一个set方法,快捷。

 

    public void setTester(Tester tester) {

       this.tester = tester;

    }

 

    //java测试工作

    public void doTest(){

    /*  obZhangSan zhangsan=new obZhangSan();

       zhangsan.test();//张三来做测试操作。*/   

       tester.test();//只需要某个人来做测试,而不用具体管做测试的是谁。

       }

}

 

Test.java

package test;

import service.JavaWork;

import service.LiSi;

import service.obZhangSan;

public class Test {

    //主管执行命令

    public static void main(String[] args) {

       JavaWork javawork=new JavaWork();

       //javawork.setTester(new obZhangSan());

       //假如这里需要换一个人了,代码就完全不需要动。

       javawork.setTester(new LiSi());

      

       javawork.doTest();

    }

    //这样子控制权就不是业务代码来管理的,控制权就移交给了住惯了。

}

 

 

 

 

 

相关文章:

  • 2021-07-20
  • 2021-06-30
  • 2022-12-23
  • 2021-11-26
  • 2022-03-05
  • 2022-12-23
猜你喜欢
  • 2022-01-07
  • 2021-07-21
  • 2022-03-07
  • 2021-08-24
  • 2021-12-03
  • 2021-11-27
相关资源
相似解决方案