在之前的java语言中,若想创建一个对象,可以使用下列的代码
Person stu=new Student();
//person 作为接口
这种方式出现了实现类的名称,提高了耦合度。在Spring中,不需要出现类名,而是使用映射的方式创建对象,降低了耦合度
在Spring中,可以用这两种方式创建对象
@Test
public void test01()
{
ApplicationContext context=new ClassPathXmlApplicationContext("service/applicationContext.xml");
StuImp student=(StuImp)context.getBean("ExitStuImp");
student.doSome();
}
@Test
public void test02()
{
BeanFactory factory=new XmlBeanFactory(new ClassPathResource("service/applicationContext.xml"));
StuImp student=(StuImp)factory.getBean("ExitStuImp");
student.doSome();
}
ApplicationContext和BeanFactory作为容器,为程序员创建xml文件中的bean类
相同点:两个容器都能使用getBean方法创建映射文件中的对象,BeanFactory是ApplicationContext的父类
不同点:
ApplicationContext:
在ApplicationContext初始化时,会把xml文件所有的对象一次性全部装配好,以后需要时随时取出使用即可,效率极高,但是浪费内存
BeanFactory:
对容器中对象的装配与加载采用延迟加载策略,即在第一次调用 getBean()时,才真正装配该对象。