一、定义web.xml,由web容器自动加载配置文件初始化ApplicationContext实例,用WebApplicationContextUtils.getWebApplicationContext()得到ApplicationContext的引用。
方法1(web.xml)
<web-app>
<context-param>
<param-name>contextConfigLocation</param-name>
<param-value>/WEB-INF/applicationContext.xml</param-value>
</context-param>
<listener>
<listener-class>org.springframework.web.context.ContextLoaderListener</listener-class>
</listener>
</web-app>
方法2 (web.xml)
<web-app>
<context-param>
<param-name>contextConfigLocation</param-name>
<param-value>/WEB-INF/applicationContext.xml</param-value>
</context-param>
<servlet>
<servlet-name>SpringContextServlet</servlet-name>
<servlet-class>org.springframework.web.context.ContextLoaderServlet</servlet-class>
<load-on-startup>1</load-on-startup>
</servlet>
</web-app>
方法3 在(struts-config.xml)中加载
<plug-in className="org.springframework.web.struts.ContextLoaderPlugIn">
<set-property property="contextConfigLocation"
value="/WEB-INF/applicationContext.xml,
/WEB-INF/action-servlet.xml"/>
</plug-in>
注:对于方法1,2如果xml配置文件比较多,可进行拆分,然后在applicationContext.xml配置文件加载被拆分的配置文件,通过<import resource=""/>加载被拆分的配置文件,如下:
<?xml version="1.0" encoding="UTF-8"?>
<beans
xmlns="http://www.springframework.org/schema/beans"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-2.0.xsd">
<!-- 加载被拆分的Spring配置文件 -->
<import resource="applicationContext-dao.xml"/>
<import resource="applicationContext-service.xml"/>
</beans>
通过web.xml配置,web容器会自动加载context-param中的配置文件初始化ApplicationContext实例,然后就可以在web应用中通过WebApplicationContextUtils.getWebApplicationContext方法获取ApplicationContext的引用
如:
ApplicationContext ctx=WebApplicationContextUtils.getWebApplicationContext(request.getSession().getServletContext());
LoginAction action=(LoginAction)ctx.getBean("action");
编写SpringUtil.java,在构造方法中如下:
二、利用ClassPathXmlApplicationContext加载配置文件实例化applicationContext
如下:
ApplicationContext ac = new ClassPathXmlApplicationContext("/WEB- INF/applicationContext.xml");
或者
String[] locations = {"bean1.xml", "bean2.xml", "bean3.xml"};
ApplicationContext ac = new ClassPathXmlApplicationContext(locations);
A a = (A)ac.getBean("a");
三、利用FileSystemXmlApplicationContext加载配置文件实例化applicationContext
ApplicationContext ctx = new FileSystemXmlApplicationContext("/WEB-INF/applicationContext.xml");
或者
String[] locations = {"bean1.xml", "bean2.xml", "bean3.xml"};
ApplicationContext ctx = new FileSystemXmlApplicationContext(locations );
A a =(A)ctx.getBean("a");
分享到:
相关推荐
Spring 获取 WebApplicationContext、ApplicationContext 几种方法详解 在 Spring 框架中,获取 WebApplicationContext 和 ApplicationContext 对象是非常重要的,因为它们提供了访问 Spring 容器中的 Bean 对象的...
本文将深入探讨几种常见的获取Spring容器的方法,包括使用`ApplicationContext`、通过`ServletContext`、利用`ApplicationObjectSupport`、`WebApplicationObjectSupport`以及实现`ApplicationContextAware`接口等。...
在Java开发中,Spring容器(也称为ApplicationContext或BeanFactory)扮演着重要角色,它通过控制反转(Inversion of Control, IOC)和依赖注入(Dependency Injection, DI)的概念,帮助开发者构建松散耦合的系统。...
可以通过多种方式来初始化`ApplicationContext`,其中最常见的有以下几种: 1. **XML配置文件**:使用XML配置文件来定义Spring容器中Bean的配置信息。 2. **注解驱动**:使用注解如`@ComponentScan`、`@...
在Spring框架中,延迟实例化(Lazy Initialization)是一种优化技术,用于控制bean何时被实例化。默认情况下,当ApplicationContext启动时,所有配置为单例模式(Singleton)的bean都会被立即实例化。但是,如果一个...
4.2. setter 注入通过定义带有 `set` 前缀的方法,Spring 容器可以在 Bean 实例化后设置依赖。例如: ```xml ``` 5. 配置元数据的来源Spring 容器可以从多种来源读取配置元数据,包括 XML 文件、Java 配置类...
Spring容器主要有两种接口形式:BeanFactory和ApplicationContext,后者是前者的子接口。这两种接口都是用来表示Spring容器,它们的主要职责是创建Bean实例并管理这些实例。 BeanFactory作为Spring的基础容器接口,...
而注解自动装配(Autowired)是Spring IoC容器的一种高级特性,它允许我们通过注解来声明对象之间的依赖,无需手动编写XML配置。现在,我们将深入探讨如何模拟Spring的IoC容器实现注解自动装配。 首先,我们需要...
1. **初始化**:当Spring容器加载Bean定义时,它会创建Bean的实例。这通常通过无参构造函数完成。如果Bean定义中包含了工厂方法,那么会使用该方法来创建Bean。 2. **属性注入**:接着,Spring会根据Bean定义中的...
3. **Bean工厂**(BeanFactory):BeanFactory是Spring容器最基础的实现,它负责Bean的实例化、依赖注入以及生命周期管理等核心功能。 4. **工厂Bean**(FactoryBean):FactoryBean是一种特殊的Bean,它可以通过...
工厂方式实例化是通过调用自定义的工厂方法对Bean进行实例化,包括静态工厂方法实例化和实例工厂方法实例化两种形式。 Bean的延迟加载 在Spring框架中,Bean的延迟加载是指在业务层等各种功能bean中使用延迟加载的...
Bean 的实例化有三种方式,分别为构造器实例化、静态工厂方法实例化和实例工厂方法实例化(其中最常用的是构造器实例化)。 构造器实例化 构造器实例化是指 Spring 容器通过 Bean 对应的类中默认的构造函数来实例...
5. **Spring配置Bean实例化的几种方式**: - **无参构造器实例化**:通过指定`class`属性创建Bean。 - **静态工厂方法**:通过`factory-method`属性指定工厂类的静态方法创建Bean。 - **实例工厂方法**:先创建...
其核心思想是反转控制(IoC),即控制权由应用代码转移到了Spring容器。 10、什么是依赖注入? 依赖注入(DI)是一种设计模式,它允许一个对象通过构造器、工厂方法的参数或属性来定义它们对其他对象的依赖关系,...
获取Bean主要有以下几种方式: 1. **通过名称获取Bean** 使用`ApplicationContext`的`getBean(String name)`方法可以直接根据Bean的定义名称获取到对应的实例。例如: ```java ApplicationContext context = new...
开发者不再需要手动创建对象,而是声明对象及其依赖,然后由Spring容器负责实例化、初始化和管理这些对象。这样,对象之间的耦合度大大降低,因为它们不再直接引用彼此,而是通过容器获取依赖。 接下来,我们来看看...
Spring IOC(Inversion of Control,控制反转)是Spring框架的核心特性,它将对象的创建和管理权交给了Spring容器,从而解耦了应用代码与对象生命周期管理的关系。Annotation注入是Spring IOC的一种实现方式,它利用...
6. **Bean的声明和实例化**:在`applicationContext.xml`中,通过`<bean>`标签声明Bean,如`<bean id="helloWorld" class="com.example.HelloWorld">`,其中`id`是Bean的唯一标识,`class`指定了Bean的全限定类名。...