IoC 容器的两种实现

创建 ApplicationContext 对象时使用了 ClassPathXmlApplicationContext 类,这个类用于加载 Spring 配置文件、创建和初始化所有对象(Bean)。
ApplicationContext.getBean() 方法用来获取 Bean,该方法返回值类型为 Object,通过强制类型转换为 HelloWorld 的实例对象,调用其中的 getMessage() 方法。

1、BeanFactory

BeanFactory采用懒加载机制,容器在加载配置文件时不会立即创建Java对象,只有在程序中使用这个对象的时候才会创建。

  • 注意:BeanFactory 是 Spring 内部使用接口,通常情况下不提供给开发人员使用。
public static void main(String[] args) {
    BeanFactory context = new ClassPathXmlApplicationContext("Beans.xml");
    HelloWorld obj = context.getBean("helloWorld", HelloWorld.class);
    obj.getMessage();
}

2、ApplicationContext

ApplicationContext是beanFactory的子接口,是对其的扩展,

public static void main(String[] args) {
        ApplicationContext context=new ClassPathXmlApplicationContext("Beans.xml");
        HelloSpring obj=context.getBean("helloworld",HelloSpring.class);
        obj.getMessage();

    }

ApplicationContext下面有两个类,具体使用方法见下表。

实现类描述示例代码
ClassPathXmlApplicationContext加载类路径 ClassPath 下指定的 XML 配置文件,并完成 ApplicationContext 的实例化工作ApplicationContext applicationContext = new ClassPathXmlApplicationContext(String configLocation);
FileSystemXmlApplicationContext加载指定的文件系统路径中指定的 XML 配置文件,并完成 ApplicationContext 的实例化工作ApplicationContext applicationContext = new FileSystemXmlApplicationContext(String configLocation);
  • 参数 configLocation 用于指定 Spring 配置文件的名称和位置,如 Beans.xml
public static void main(String[] args) {
    //使用 FileSystemXmlApplicationContext 加载指定路径下的配置文件 Bean.xml
    BeanFactory context = new FileSystemXmlApplicationContext("D:\\eclipe workspace\\spring workspace\\HelloSpring\\src\\Beans.xml");
    HelloWorld obj = context.getBean("helloWorld", HelloWorld.class);
    obj.getMessage();
}

版权声明:本文为qq_43192247原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明。