容器
- 创建容器:(第二种为直接路径,第三种为可以同时加载多个配置文件)
ApplicationContext
除此之外,创建容器的方法还可以由别的类来实现,首先看下面的容器类层次图(ApplicationContext中所使用的getBean()方法就是实现上层类来获得的)
其中BeanFactory(所有容器类的顶层)也可履行创建任务
BeanFactory beanFactory=new XmlBeanFactory(new ClassPathResource("Day07.xml"));
Factory05 fac=(Factory05) beanFactory.getBean("fac");
fac.ti();
但是其也有一些缺点:如加载容器内的Bean的时候属于延迟加载,不会立即加载,如,其中一个bean所指的类的构造方法中随意写入一句话:构造器加载
public class Factory05 {
private face dao;
public Factory05(face dao1){
this.dao=dao1;
System.out.println("构造器加载");
}
public void ti(){
dao.show();
}
}
结果:(无任何内容)
Process finished with exit code 0
但是与之相比的ApplicationContext就是即时加载bean:
构造器加载
Process finished with exit code 0
- 获取Bean可有多种方法:(第二种把强转变相省略了,第三种是根据类型来查找)
public class DayTest {
public static void main(String[] args) {
ApplicationContext context = new ClassPathXmlApplicationContext("Day07.xml");
Factory05 f01= (Factory05)context.getBean("fac");
Factory05 f02= context.getBean("fac",Factory05.class);
Factory05 f03= context.getBean(Factory05.class);
f01.ti();
f02.ti();
f03.ti();
}
}