1、BeanFactory接口
BeanFactory接口为Spring的原始接口,功能较为单一,其特点是,每次在获得对象的时候才会创建对象,而ApplicationContext 是事先创建对象,需要的时候直接从容器中去即可。BeanFactory是一个工厂,用于生成任意bean。
2、ApplicationContext 类
(1)介绍:
每次容器创建的时候就会创建容器中所配置的对象,并且功能有很大的增强。但是,ApplicationContext较为浪费资源,因为它将所有的对象一次全部创建出来,而BeanFactory是在调用和对象的时候才会去创建对象。
(2)ApplicationContext 获取配置文件的方法:
从类路径下获取配置文件:
ApplicationContext applicationContext=new
ClassPathXmlApplicationContext("applicationContext.xml");//创建容器对象
从硬件绝对路径下获取配置文件(指定盘符下的xml):
FileSystemXmlApplicationContext("路径")
3、ApplicationContext 类与BeanFactory接口的对比
(1)ApplicationContext 类:
StudentServiceImpl:
public class StudentServiceImpl { private StudentDao studentDao; public StudentServiceImpl() { System.out.println("service的实现类被创建了!!"); } public StudentDao getStudentDao() { return studentDao; } public void setStudentDao(StudentDao studentDao) { this.studentDao = studentDao; } public void addStudent(){ System.out.println("StudentService的实现类的Add方法!!"); studentDao.addStudent(); } }
测试类:
public static void main(String[] args) { ApplicationContext applicationContext=new ClassPathXmlApplicationContext("applicationContext.xml");//创建容器对象 StudentServiceImpl studentService=(StudentServiceImpl) applicationContext.getBean("studentService"); studentService.addStudent(); }
测试结果:
service的实现类被创建了!!
StudentService的实现类的Add方法!!
StudentDao的实现类的Add方法!!
(2)BeanFactory接口
public static void main(String[] args) { BeanFactory beanFactory=new XmlBeanFactory(new ClassPathResource("applicationContext.xml")); StudentServiceImpl studentService=(StudentServiceImpl) beanFactory.getBean("studentService"); studentService.addStudent(); }
- 在调用getBean的时候才会去创建对象
- Bean 工厂是工厂模式的一个实现,提供了控制反转功能,用来把应用的配置和依赖从应用代码中分离。最常用的BeanFactory 实现是XmlBeanFactory (org.springframework.beans.factory.xml.XmlBeanFactory类)类。它根据 XML 文件中的定义加载beans。该容器从XML 文件读取配置元数据并用它去创建一个完全配置的系统或应用。