2.SpringIOC

1.springIOC(超级工厂)

IOC:控制反转
反转的是获取对象的方式
曾经:自己new
现在:getBean("student") 直接从IOC容器(applicationContext.xml)中拿
以前是自己产生 现在是获取 直接拿 所以叫控制反转

为了更加清晰的理解IOC 在一次spring大会上 更名为DI (依赖注入) 两者是一回事
IOC:将创建对象,属性值的方式进行了反转
依赖注入:将属性值注入给了属性 再将属性注入给了bean 再将bean注入给了ioc容器

总结:无论要什么对象都可以直接在springIOC中间获取 而不需要自己操作(new \setxxx)

    1. 新建一个course.interface接口


      2.png

在接口中编写子类要实现的方法


3.png
  • 2.在包course中新建两个子类用来实现接口的方法


    4.png

    htmlcourse.java

package calvin.course;
import calvin.entity.course;

public class htmlcourse implements course{
    @Override
    public void learncourse(){

        System.out.println("learn html!");

    }
}

javacourse.java

package calvin.course;
import calvin.entity.course;

public class javacourse implements course  {

    @Override
    public void learncourse() {
        System.out.println("learn java!");
    }
}
  • 3.新建一个测试类


    5.png
package calvin.test;

import calvin.entity.course;
import org.springframework.context.ApplicationContext;
import org.springframework.context.support.ClassPathXmlApplicationContext;

public class studentTest {
//根据传入的参数判断调用哪个对象
    public void learn(String a){
     String b =null;
     //如果传入的为"java"就给b赋值javacourse,然后将b传入Spring的方法中调用对象
     if(a.equals("java")){
         b="javacourse";
     }
     else if(a.equals("html")){
         b="htmlcourse";

     }
        ApplicationContext cont = new ClassPathXmlApplicationContext("applicationContext.xml");
     //此处要将返回值强转为course类型   
     course course = (calvin.entity.course) cont.getBean(b);
        course.learncourse();
    }


    public static void main(String[] args)
    {
        studentTest stu =new studentTest();
        stu.learn("java");
    }
}
  • 4.在spring配置文件中 填入类的信息



    
    
    

//course的接口的子类
    
    

结果

如果输入的为html


7.png

则出现


9.png

你可能感兴趣的:(2.SpringIOC)