1.springIOC(超级工厂)
IOC:控制反转
反转的是获取对象的方式
曾经:自己new
现在:getBean("student") 直接从IOC容器(applicationContext.xml)中拿
以前是自己产生 现在是获取 直接拿 所以叫控制反转
为了更加清晰的理解IOC 在一次spring大会上 更名为DI (依赖注入) 两者是一回事
IOC:将创建对象,属性值的方式进行了反转
依赖注入:将属性值注入给了属性 再将属性注入给了bean 再将bean注入给了ioc容器
总结:无论要什么对象都可以直接在springIOC中间获取 而不需要自己操作(new \setxxx)
-
-
新建一个course.interface接口
-
在接口中编写子类要实现的方法
-
2.在包course中新建两个子类用来实现接口的方法
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.新建一个测试类
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
则出现