`
阅读更多

整理了几种常见的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容器的方法

    本文将深入探讨几种常见的获取Spring容器的方法,包括使用`ApplicationContext`、通过`ServletContext`、利用`ApplicationObjectSupport`、`WebApplicationObjectSupport`以及实现`ApplicationContextAware`接口等。...

    获取Spring容器

    可以通过多种方式来初始化`ApplicationContext`,其中最常见的有以下几种: 1. **XML配置文件**:使用XML配置文件来定义Spring容器中Bean的配置信息。 2. **注解驱动**:使用注解如`@ComponentScan`、`@...

    Spring容器的通俗理解及简单写法

    4. **管理生命周期**: Spring容器能够管理Bean的生命周期,包括初始化、销毁等。在简单的实现中,可以添加方法来模拟这些生命周期回调。 5. **依赖注入**: 最后,通过反射调用setter方法或构造函数,将依赖注入到...

    spring容器学习笔记

    有以下几种方式实现依赖注入: 4.1. 构造函数注入通过提供带有依赖作为参数的构造函数,Spring 容器可以创建 Bean 并传递所需的依赖。例如: ```xml ``` 4.2. setter 注入通过定义带有 `set` 前缀的方法...

    Spring通过在classpath自动扫描方式把组件纳入spring容器中管理

    在Spring框架中,自动扫描(Auto-Component Discovery)是一种便捷的方式,它允许开发者无需显式配置每个bean,就能将类路径下(classpath)的特定包及其子包中的组件(即带有特定注解的类)纳入Spring容器进行管理...

    spring 容器.docx

    在Spring容器中,Bean的生命周期由容器管理,包括初始化、使用和销毁。容器根据配置信息决定何时创建Bean,如何注入依赖,以及何时关闭Bean。开发者可以通过实现特定的接口或使用注解来定制Bean的生命周期行为,如...

    Spring框架中Bean的生命周期 Spring中Bean有几种作用域

    在容器管理阶段,Spring容器负责Bean的实例化、属性注入、初始化、使用和销毁。而在用户自定义阶段,开发者可以通过定义回调方法或使用特定注解来介入Bean的生命周期过程。 1. **实例化**:Spring容器通过`Class`...

    Spring 延迟实例化

    在Spring框架中,延迟实例化(Lazy Initialization)是一种优化技术,用于控制bean何时被实例化。默认情况下,当ApplicationContext启动时,所有配置为单例模式(Singleton)的bean都会被立即实例化。但是,如果一个...

    模拟Spring的IoC容器实现注解自动装配

    而注解自动装配(Autowired)是Spring IoC容器的一种高级特性,它允许我们通过注解来声明对象之间的依赖,无需手动编写XML配置。现在,我们将深入探讨如何模拟Spring的IoC容器实现注解自动装配。 首先,我们需要...

    Spring框架系列(7) - Spring IOC实现原理详解之IOC初始化流程.doc

    Spring 框架系列(7)- Spring IOC 实现原理详解之 IOC 初始化流程 本文将详细解释 Spring 框架中的 IOC...IOC 容器的初始化流程是 Spring 框架中的关键部分,用于将资源配置文件中的信息加载到 IOC 容器中。

    手写一个SpringIoc容器

    5. **类型转换与自动装配**:Spring容器能自动将Bean的属性设置为正确类型的值,这需要一个类型转换系统。同时,容器还可以通过类型匹配进行自动装配,减少手动配置的繁琐。 6. **Bean的查找与获取**:容器应提供...

    Spring获取webapplicationcontext,applicationcontext几种方法详解

    在独立应用程序中,通过手工初始化 Spring 容器,可以使用以下方式获取 ApplicationContext 对象: `ApplicationContext ac = new FileSystemXmlApplicationContext("applicationContext.xml");` `ac.getBean("bean...

    Spring IOC容器实现分析

    2. **Bean定义信息**(BeanDefinition):BeanDefinition对象包含了Bean的所有配置信息,如Bean的类名、作用域、初始化方法等。它是Spring容器创建Bean实例的基础。 3. **Bean工厂**(BeanFactory):BeanFactory是...

    spring几种Dao支持配置

    以下将详细阐述Spring对DAO支持的几种配置方式: 1. **JDBC DAO支持:** Spring通过`JdbcTemplate`和`SimpleJdbcInsert`等类提供了对JDBC的抽象,减少了直接使用JDBC代码的繁琐性。`JdbcTemplate`提供了一组模板...

    干净的spring初始化工程,包含ioc,di,datasource,但是不包含aop

    为了更好地理解和学习这个初始化工程,你可以做以下几步: 1. 解压“SpringDemo”文件,查看其中的配置文件和Java源码。 2. 分析`applicationContext.xml`(或其他配置文件)中的bean定义和依赖关系。 3. 阅读并理解...

    Spring.pdf

    自动注入有以下几种方式: - byName:根据属性名和Spring容器中bean的ID相同的规则进行注入。 - byType:根据属性的类型和Spring容器中某个bean的类型相同的规则进行注入。 - constructor:根据构造器参数类型和...

    Spring在代码中获取bean的几种方式.rar

    Bean是由Spring容器创建、初始化、装配以及管理的对象,开发者可以通过多种方式在代码中获取这些Bean。以下将详细介绍Spring在代码中获取bean的几种主要方法: 1. **`ApplicationContext` 接口** `...

    SpringIoc示例代码

    而在Spring IOC中,这种控制权被反转,对象的创建、初始化、依赖关系的装配等都交给了Spring容器来管理。这一设计模式使得应用程序的组件解耦,提高了代码的可测试性和可维护性。 首先,让我们了解一下Spring IOC的...

Global site tag (gtag.js) - Google Analytics