整理了几种常见的spring容器初始化方式,如下:
1、web工程启动的时候初始化:
使用监听类,web.xml中配置如下:
<!-- 指定spring配置文件位置 --> <context-param> <param-name>contextConfigLocation</param-name> <param-value>classpath:spring.xml</param-value> </context-param> <!-- 监听类 --> <listener> <listener-class>org.springframework.web.context.ContextLoaderListener</listener-class> </listener>
监听类中需要用到log4j包,故在加载spring之前需要先加载log4j,配置如下:
<context-param> <param-name>log4jConfigLocation</param-name> <param-value>/WEB-INF/lib/log4j.properties</param-value> </context-param> <!-- ContextLoaderListener类初始化spring时需要用到log4j,故log4j需要在初始化spring之前进行初始化 --> <listener> <listener-class>org.springframework.web.util.Log4jConfigListener</listener-class> </listener>
完整配置如下:
<context-param> <param-name>log4jConfigLocation</param-name> <param-value>/WEB-INF/lib/log4j.properties</param-value> </context-param> <!-- 指定spring配置文件位置 --> <context-param> <param-name>contextConfigLocation</param-name> <param-value>classpath:spring.xml</param-value> </context-param> <!-- listener --> <!-- ContextLoaderListener类初始化spring时需要用到log4j,故log4j需要在初始化spring之前进行初始化 --> <listener> <listener-class>org.springframework.web.util.Log4jConfigListener</listener-class> </listener> <!-- 监听类 --> <listener> <listener-class>org.springframework.web.context.ContextLoaderListener</listener-class> </listener>
启动初始化之后,在Java代码中获取WebApplicationContext对象,代码如下:
public void init(ServletConfig config) throws ServletException { //启动的时候已经装载了spring,这里直接获取wac对象 WebApplicationContext wac = WebApplicationContextUtils.getRequiredWebApplicationContext(config.getServletContext()); DateContext dc = (DateContext)wac.getBean("dateContext"); JSONObject json = new JSONObject(); System.out.println("测试spring:" + dc.get("monthLastDay", json)); }
2、需要用到的时候才初始化:
import org.springframework.beans.factory.BeanFactory; import org.springframework.context.ApplicationContext; import org.springframework.context.support.ClassPathXmlApplicationContext; import org.springframework.context.support.FileSystemXmlApplicationContext; import com.panda.TestSpring; public class Test { public static void main(String[] args) { // BeanFactory bf = new ClassPathXmlApplicationContext("applicationContext.xml"); // TestSpring ts = (TestSpring) bf.getBean("testSpring"); // ts.print(); // Resource resource = new ClassPathResource("applicationContext.xml"); // BeanFactory factory = new XmlBeanFactory(resource); //一、 用classpath路径 // ApplicationContext factory = new ClassPathXmlApplicationContext("classpath:applicationContext.xml"); // ApplicationContext factory = new ClassPathXmlApplicationContext("applicationContext.xml"); //同时加载多个配置文件 // String[] configFile = {"applicationContext.xml","applicationContext.xml1"}; // ApplicationContext factory = new ClassPathXmlApplicationContext(configFile); // ClassPathXmlApplicationContext使用了file前缀是可以使用绝对路径的 // ApplicationContext factory = new ClassPathXmlApplicationContext("file:E:/learning_demo/TestSpring/src/applicationContext.xml"); //二、 用文件系统的路径,默认指项目的根路径 // ApplicationContext factory = new FileSystemXmlApplicationContext("src/applicationContext.xml"); // 使用了classpath:前缀,这样,FileSystemXmlApplicationContext也能够读取classpath下的相对路径 // ApplicationContext factory = new FileSystemXmlApplicationContext("classpath:applicationContext.xml"); // ApplicationContext factory = new FileSystemXmlApplicationContext("file:E:/learning_demo/TestSpring/src/applicationContext.xml"); // 不加file前缀 ApplicationContext factory = new FileSystemXmlApplicationContext("E:/learning_demo/TestSpring/src/applicationContext.xml"); TestSpring ts = (TestSpring)factory.getBean("testSpring"); ts.print(); } }
相关推荐
本文将深入探讨几种常见的获取Spring容器的方法,包括使用`ApplicationContext`、通过`ServletContext`、利用`ApplicationObjectSupport`、`WebApplicationObjectSupport`以及实现`ApplicationContextAware`接口等。...
可以通过多种方式来初始化`ApplicationContext`,其中最常见的有以下几种: 1. **XML配置文件**:使用XML配置文件来定义Spring容器中Bean的配置信息。 2. **注解驱动**:使用注解如`@ComponentScan`、`@...
4. **管理生命周期**: Spring容器能够管理Bean的生命周期,包括初始化、销毁等。在简单的实现中,可以添加方法来模拟这些生命周期回调。 5. **依赖注入**: 最后,通过反射调用setter方法或构造函数,将依赖注入到...
有以下几种方式实现依赖注入: 4.1. 构造函数注入通过提供带有依赖作为参数的构造函数,Spring 容器可以创建 Bean 并传递所需的依赖。例如: ```xml ``` 4.2. setter 注入通过定义带有 `set` 前缀的方法...
在Spring框架中,自动扫描(Auto-Component Discovery)是一种便捷的方式,它允许开发者无需显式配置每个bean,就能将类路径下(classpath)的特定包及其子包中的组件(即带有特定注解的类)纳入Spring容器进行管理...
在Spring容器中,Bean的生命周期由容器管理,包括初始化、使用和销毁。容器根据配置信息决定何时创建Bean,如何注入依赖,以及何时关闭Bean。开发者可以通过实现特定的接口或使用注解来定制Bean的生命周期行为,如...
在容器管理阶段,Spring容器负责Bean的实例化、属性注入、初始化、使用和销毁。而在用户自定义阶段,开发者可以通过定义回调方法或使用特定注解来介入Bean的生命周期过程。 1. **实例化**:Spring容器通过`Class`...
在Spring框架中,延迟实例化(Lazy Initialization)是一种优化技术,用于控制bean何时被实例化。默认情况下,当ApplicationContext启动时,所有配置为单例模式(Singleton)的bean都会被立即实例化。但是,如果一个...
而注解自动装配(Autowired)是Spring IoC容器的一种高级特性,它允许我们通过注解来声明对象之间的依赖,无需手动编写XML配置。现在,我们将深入探讨如何模拟Spring的IoC容器实现注解自动装配。 首先,我们需要...
Spring 框架系列(7)- Spring IOC 实现原理详解之 IOC 初始化流程 本文将详细解释 Spring 框架中的 IOC...IOC 容器的初始化流程是 Spring 框架中的关键部分,用于将资源配置文件中的信息加载到 IOC 容器中。
5. **类型转换与自动装配**:Spring容器能自动将Bean的属性设置为正确类型的值,这需要一个类型转换系统。同时,容器还可以通过类型匹配进行自动装配,减少手动配置的繁琐。 6. **Bean的查找与获取**:容器应提供...
在独立应用程序中,通过手工初始化 Spring 容器,可以使用以下方式获取 ApplicationContext 对象: `ApplicationContext ac = new FileSystemXmlApplicationContext("applicationContext.xml");` `ac.getBean("bean...
2. **Bean定义信息**(BeanDefinition):BeanDefinition对象包含了Bean的所有配置信息,如Bean的类名、作用域、初始化方法等。它是Spring容器创建Bean实例的基础。 3. **Bean工厂**(BeanFactory):BeanFactory是...
以下将详细阐述Spring对DAO支持的几种配置方式: 1. **JDBC DAO支持:** Spring通过`JdbcTemplate`和`SimpleJdbcInsert`等类提供了对JDBC的抽象,减少了直接使用JDBC代码的繁琐性。`JdbcTemplate`提供了一组模板...
为了更好地理解和学习这个初始化工程,你可以做以下几步: 1. 解压“SpringDemo”文件,查看其中的配置文件和Java源码。 2. 分析`applicationContext.xml`(或其他配置文件)中的bean定义和依赖关系。 3. 阅读并理解...
自动注入有以下几种方式: - byName:根据属性名和Spring容器中bean的ID相同的规则进行注入。 - byType:根据属性的类型和Spring容器中某个bean的类型相同的规则进行注入。 - constructor:根据构造器参数类型和...
Bean是由Spring容器创建、初始化、装配以及管理的对象,开发者可以通过多种方式在代码中获取这些Bean。以下将详细介绍Spring在代码中获取bean的几种主要方法: 1. **`ApplicationContext` 接口** `...
而在Spring IOC中,这种控制权被反转,对象的创建、初始化、依赖关系的装配等都交给了Spring容器来管理。这一设计模式使得应用程序的组件解耦,提高了代码的可测试性和可维护性。 首先,让我们了解一下Spring IOC的...