spring的核心工作:1.创建对象 2.维护对象之间的依赖关系
举例:创建一个电脑E470对象,这个对象依赖两个类,显示器和CPU
创建接口:
package com.zs.entity;/** * 创建Cpu接口 */public interface Cpu { /** * cpu有运算的方法 */ void calc();}
package com.zs.entity;/** * 创建显示器接口 */public interface Display { /** * 显示器有显示的方法 */ void show();}
实现接口方法,显示器有两个实现类,一个lg显示器,一个三星显示器,Cpu有一个实现类,英特尔CPU。
package com.zs.entity.impl;import com.zs.entity.Display;/** * lg显示器实现显示器接口 */public class LgDisplay implements Display { @Override public void show() { System.out.println("lg显示器正在显示画面"); }}
package com.zs.entity.impl;import com.zs.entity.Display;/** * 创建三星显示器类实现显示器接口 */public class SumDisplay implements Display { @Override public void show() { System.out.println("三星显示器正在显示画面"); }}
package com.zs.entity.impl;import com.zs.entity.Cpu;public class InterCpu implements Cpu { @Override public void calc() { System.out.println("英特尔显示器正在运算"); }}
然后创建电脑E470对象:
package com.zs.entity.impl;import com.zs.entity.Cpu;import com.zs.entity.Display;/** * 创建e470电脑,电脑有显示器和Cpu */public class E470 { private Display display; private Cpu cpu; /*电脑有自己的工作的方法*/ public void work(){ display.show(); cpu.calc(); } /*生成get和set方法*/ public Display getDisplay() { return display; } public void setDisplay(Display display) { this.display = display; } public Cpu getCpu() { return cpu; } public void setCpu(Cpu cpu) { this.cpu = cpu; }}
在spring工厂中添加对象:
BeanFactory是ApplicationContext的父接口,BeanFactory接口定义了一些spring工厂最底层的使用的方法,一
般在spring的源码中我们使用BeanFactory,但是该类不建议程序员直接使用,建议程序员使用
ApplicationContext接口,该接口对BeanFactory功能进行了一些扩展:
1,提供spring的国际化支持
2,提供了事物的处理方式
3,可以加载多个主配置文件
以后一般开发中使用ApplicationContext接口,但是接口不能直接使用,我们可以同
ClassPathXmlApplicationContext类来实例化这个接口。我们也可以使用FileSystemXmlApplicationContext来实
例化该接口。
测试从spring工厂中获取对象:
import com.zs.entity.impl.E470;import org.junit.Test;import org.springframework.context.support.ClassPathXmlApplicationContext;public class SpringTest { @Test public void test1() { ClassPathXmlApplicationContext context = new ClassPathXmlApplicationContext("applicationContext.xml"); E470 e470 = (E470) context.getBean("e470"); e470.work(); }}
结果如下: