`
woshixushigang
  • 浏览: 576303 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类

两种方式实例化容器并获取bean

 
阅读更多
package com.bitbao.cm.cron;

import org.springframework.context.ApplicationContext;
import org.springframework.context.support.FileSystemXmlApplicationContext;


public class AppContextStandAlone {
	
	private static ApplicationContext ac;
	
	public static<T> T getBean(String beanName, Class<T> cls) {
		if(ac == null){
			initAc();
		}
		return ac.getBean(beanName, cls);
	}
	
	public static void initAc(){
		/* 使用绝对路径
		String filePath = CMConfig.getProperty("AppStandAloneConfigPath");
		System.out.println(filePath);
		ac = new FileSystemXmlApplicationContext("file:" + filePath);
		*/
		// 使用classpath
		//URL url = AppContextStandAlone.class.getResource("classpath:" + "/configure/app/root.xml");/bitbao_web/WebContent/WEB-INF/configure/app/root.xml
		ac = new FileSystemXmlApplicationContext("classpath:" + "/configure/app/root.xml");
	}
}

 

package com.bitbao.cm.common.context;

import javax.servlet.ServletRequest;

import org.springframework.web.context.WebApplicationContext;
import org.springframework.web.servlet.support.RequestContextUtils;

public class AppContext {

	private static final ThreadLocal<WebApplicationContext> wac = new ThreadLocal<WebApplicationContext>();

	public static void setWAC(WebApplicationContext wac) {
		if (AppContext.wac.get() == null) {
			AppContext.wac.set(wac);
		}
	}
	
	public static void setWAC(ServletRequest request){
		if (AppContext.wac.get() == null) {
			AppContext.wac.set(RequestContextUtils.getWebApplicationContext(request));
		}
	}
	
	public static WebApplicationContext getWac(){
		return AppContext.wac.get();
	}

	public static<T> T getBean(String beanName, Class<T> cls) {
		return AppContext.wac.get().getBean(beanName, cls);
	}
}
 

 

分享到:
评论

相关推荐

    实例化Spring bean的两种工厂方法

    本篇将详细探讨两种工厂方法——实例工厂方法和静态工厂方法,用于创建Spring Bean。 首先,我们要理解Spring Bean的概念。Spring Bean是Spring IoC容器管理的对象,这些对象的生命周期、依赖关系以及初始化行为由...

    SpingIOC注入实例化bean

    Spring容器提供多种实例化bean的方式: - **默认实例化**:如果bean没有指定构造函数,Spring会使用默认无参构造函数创建bean。 - **构造函数注入**:可以通过指定构造函数参数,Spring会调用匹配的构造函数创建...

    Java中Spring获取bean方法小结

    获取Bean的两种常见方式是: - 使用`FileSystemXmlApplicationContext`,从文件系统加载配置文件。 - 使用`ClassPathXmlApplicationContext`,从类路径加载配置文件。例如: ```java ApplicationContext context...

    第四章 在Ioc容器中装配Bean

    容器通过读取配置信息,能够知道哪些Bean需要被创建,以及它们之间的依赖关系,并在运行时实例化这些Bean并填充它们的属性。 Spring提供了两种主要的方式来配置Bean: 1. 基于XML的配置:这是一种传统的方式,...

    Spring之核心容器bean

    Spring的核心容器bean是其强大功能的关键所在,它通过依赖注入、作用域管理、生命周期控制等方式,极大地简化了对象的创建和管理。了解并熟练掌握这些概念,将有助于你在实际开发中更高效地利用Spring框架,提高代码...

    获取Spring容器

    Spring提供了两种主要类型的容器: 1. **BeanFactory**:这是最基本的容器,提供配置Bean以及创建Bean的功能。 2. **ApplicationContext**:它继承了BeanFactory的功能,提供了更高级的服务,如资源访问、消息资源...

    SSH笔记-静态/实例工厂方法配置bean

    这些方法为Spring容器提供了更灵活的Bean实例化策略,让我们深入了解一下这两种方法。 首先,静态工厂方法配置Bean是通过调用类中静态工厂方法来创建对象的方式。这种方式下,Spring并不直接实例化目标类,而是调用...

    Bean开发实例之三实体Bean开发实例

    2. **实体Bean的分类**:实体Bean可以根据持久化管理的不同方式分为两类——容器管理持久性(Container-Managed Persistence, CMP)和组件管理持久性(Bean-Managed Persistence, BMP)。 - **CMP**:在这种模式下...

    spring 静态实例化

    2. **单例模式的实现**:静态实例化是实现单例模式的一种方式,它保证了在整个应用生命周期内,某个类只有一个实例存在。 3. **依赖关系的注入**:静态实例化可以用于解决Bean之间的依赖关系问题。当一个Bean依赖于...

    深度解析spring容器管理bean

    首先,Spring容器主要有两种类型:DefaultListableBeanFactory和ApplicationContext。DefaultListableBeanFactory是基础,提供了基本的bean管理和配置功能,而ApplicationContext则在其基础上增加了更多的企业级服务...

    singleton Bean 创建 prototype Bean

    2. 容器会立即创建这些Singleton Bean实例,并将其保存在一个内部缓存中,这个过程称为早期初始化。 3. 当其他Bean需要依赖这个Singleton Bean时,容器直接从缓存中取出已创建的实例,无需再次创建。 Prototype ...

    ejb实例包括session bean和实体bean

    EJB系统主要包括两种主要类型的Bean:Session Bean和Entity Bean。 **Session Bean** Session Bean是EJB中的临时业务对象,代表客户端的一次会话或操作。它们通常用于封装业务逻辑,执行计算任务,或者协调与数据库...

    Spring实例化bean的方式代码详解

    本篇文章将详细探讨Spring实例化bean的三种主要方式,并提供相关的代码示例。这些方式包括使用类构造器、静态工厂方法以及实例化工厂方法。 1. **使用类构造器实现实例化** 这是最基础的实例化方式,通过指定`...

    Spring bean 管理

    - 三种实例化Bean的方式: - 使用类构造器实例化:这是最简单的实例化方式,Spring将调用无参构造器创建Bean的实例。 - 使用静态工厂方法实例化:这种方式通过调用一个静态方法来获取Bean实例,适用于简单工厂模式...

    获取spring容器的方法

    这两种方法都允许你通过`ServletContext`来访问Spring的`ApplicationContext`。 #### 利用`ApplicationObjectSupport`和`WebApplicationObjectSupport` Spring还提供了`ApplicationObjectSupport`和`...

    Web项目中获取SpringBean与在非Spring组件中获取SpringBean.pdf

    总的来说,获取非Spring管理组件中的SpringBean主要有两种方式:一是通过实现`ApplicationContextAware`接口并存储ApplicationContext,二是使用注解和静态内部类来注入BeanFactory。这两种方法都是Spring框架提供的...

    Spring高级应用,Bean讲解

    Bean 的实例化有三种方式,分别为构造器实例化、静态工厂方法实例化和实例工厂方法实例化(其中最常用的是构造器实例化)。 构造器实例化 构造器实例化是指 Spring 容器通过 Bean 对应的类中默认的构造函数来实例...

    JavaEE spring实例工厂的实例方式

    在Spring框架中,实例工厂是一种创建对象的方式,它允许我们自定义对象的创建逻辑,而非依赖于Spring容器默认的构造函数实例化。这种方式对于那些需要特殊初始化步骤或者有复杂生命周期的对象特别有用。 Spring支持...

    spring学习----工厂Bean

    当Spring容器遇到一个被标记为FactoryBean的Bean定义时,它不会直接实例化这个Bean,而是调用`getObject()`方法来获取实际需要的对象。 在实际应用中,工厂Bean有多种用途。例如: 1. **复杂初始化逻辑**:如果一...

    Spring管理的Bean的生命周期

    Bean的创建有两种方式:默认构造器创建和工厂方法创建。默认构造器创建是通过无参数构造函数实例化Bean,而工厂方法则是通过指定的方法(静态或非静态)来创建。 Bean的初始化阶段是生命周期中的关键步骤。Spring...

Global site tag (gtag.js) - Google Analytics