在Java项目中,会通过ClassPathXmlApplicationContext类来实例化ApplicationContext容器。而在Web项目中,ApplicationContext容器的实例化工作会交由Web服务器来完成。 Web服务器实例化ApplicationContext容器时,通常会使用ContextLoaderListener来实现,此种方式只需要在web.xml中添加如下代码: <context-param> <param-name>contextConfigLocation</param-name> <param-value> classpath:spring/applicationContext.xml </param-value> </context-param> <listener> <listener-class> org.springframework.web.context.ContextLoaderListener </listener-class> </listener> ApplicationContext * * * * * * * * Sp
Spring的核心容器是Spring框架的基础,它负责管理和装配应用程序中的对象,即Bean。BeanFactory和ApplicationContext是Spring提供的两个主要核心容器。
BeanFactory是Spring最基础的容器,它实现了控制反转(IoC)的概念,使得对象的创建和依赖关系的管理不再由代码直接控制,而是由BeanFactory来处理。在示例中,我们看到通过`XmlBeanFactory`创建了一个BeanFactory实例,传入一个XML配置文件的位置,如`"F:/applicationContext.xml"`。然而,直接使用`FileSystemResource`加载配置文件的方式在实际开发中并不常见。
ApplicationContext是BeanFactory的增强版,除了包含BeanFactory的所有功能外,还增加了对国际化、资源访问和事件传播的支持。创建ApplicationContext实例有两种常见的方法:
1. 使用`ClassPathXmlApplicationContext`,它会从类路径中查找配置文件,如`"classpath:spring/applicationContext.xml"`。
2. 使用`FileSystemXmlApplicationContext`,它允许从文件系统的绝对路径加载配置文件。
在Java项目中,通常通过`ClassPathXmlApplicationContext`来实例化ApplicationContext容器。而在Web项目中,由于需要在Web服务器启动时初始化容器,因此会利用`ContextLoaderListener`监听器。在`web.xml`配置文件中,设置`<context-param>`和`<listener>`元素,指定配置文件的位置,这样当Web服务器启动时,`ContextLoaderListener`会自动创建ApplicationContext。
ApplicationContext的实例化完成后,我们可以通过调用`getBean`方法来获取容器中的Bean实例。例如,`Object getBean(String name)`可以根据Bean的名称获取对应的Bean实例。此外,还可以使用`getBean(Class<T> requiredType)`方法,通过Bean的类型来获取实例,这在处理泛型或需要强类型的情况下非常有用。
在企业级应用开发中,Spring的核心容器提供了灵活且强大的依赖注入机制,使得应用程序的组件能够松耦合,提高了代码的可测试性和可维护性。通过XML配置文件或Java配置类,我们可以声明Bean的定义、属性、依赖关系等,实现组件的配置。而ApplicationContext则进一步增强了这个过程,提供了更多企业级应用所需的功能,如国际化支持(通过MessageSource接口)、AOP(面向切面编程)、资源访问和事件传播等。
Spring的核心容器是Java应用开发中的关键部分,它简化了复杂应用程序的结构,使得开发者可以专注于业务逻辑,而非基础设施的实现。理解并熟练掌握BeanFactory和ApplicationContext的使用,对于构建高质量、易于维护的Java企业级应用至关重要。