.1)SpringIOC的发展史
1.刚开始的的new对象 太零散了 后期维护比较脑火
public void doJava(){ Course course=new CourseJava(); course.javaCourse(); } public void doHtml(){ Course course=new CourseHtml(); course.htmlCourse(); }
2.太零散了 改进 通过简单工厂创建对象
public static Course getCourse(String name){ if ("html".equals(name)){ return new CourseHtml(); }else{ return new CourseJava(); } }
2.1 通过简单工厂,可以将创建课程集中操作,方便后期维护
3.但是简单工厂还是有弊端 之后衍生出了springIOC
3.1 springIOC是一个超级工厂
3.1.1 可以容纳任何对象
.2)控制反转
1.反转的是:获取对象的方式
context.getBean("student");
1.1 直接从springIOC容器中拿(ApplicationContext.xml)
2.为了更加清晰的理解ioc,ioc在一次大会上更名为DI(依赖注入)
.3)DI(依赖注入) 和控制反转是一样的 只是改了名
1.将属性值 注入给了属性 ,将属性 注入给了bean ,将bean注入给了ioc容器
2.总结:ioc/di ,无论要什么对象,都可以直接去springioc容器中获取,而不需要自己操作(new /setXXX)
3.因此之后的ioc分为2步:1 先给springioc中存放对象并赋值(相当于共产主义) 2 去容器中取
4.改造自己编写的简单工厂
public void courseShow(String name){ ApplicationContext context=new ClassPathXmlApplicationContext("applicationContext.xml"); Course course =(Course) context.getBean(name); course.show(); }
4.1 name就是容器中的id 通过id获取容器中的对象