`

根据BEAN名称获取Spring实例

 
阅读更多
package com.loon.ewf.web;

import org.springframework.beans.BeansException;
import org.springframework.beans.factory.NoSuchBeanDefinitionException;
import org.springframework.context.ApplicationContext;
import org.springframework.context.ApplicationContextAware;

/**
 * Spring ApplicationContext 获取spring容器中的实例bean
 * @author ruilin.xie
 *
 */
public class WebContextFactoryUtil implements ApplicationContextAware
{
	/**
	 * Spring 应用上下文环境
	 */
	private static ApplicationContext applicationContext;

	/**
	 * 实现ApplicationContextAware接口的回调方法,设置上下文环境
	 * 
	 * @param applicationContext
	 * @throws BeansException
	 */
	@SuppressWarnings("static-access")
	public void setApplicationContext(ApplicationContext applicationContext)
			throws BeansException
	{
		this.applicationContext = applicationContext;
	}

	/**
	 * @return ApplicationContext
	 */
	public static ApplicationContext getApplicationContext()
	{
		return applicationContext;
	}

	/**
	 * 获取对象
	 * 
	 * @param name
	 * @return Object bean的实例
	 * @throws BeansException
	 */
	public static Object getBean(String beanName) throws BeansException
	{
		if (!WebContextFactoryUtil.containsBean(beanName))
		{
			return null;
		} else
		{
			return applicationContext.getBean(beanName);
		}
	}

	/**
	 * 获取类型为requiredType的对象
	 * 如果bean不能被类型转换,相应的异常将会被抛出(BeanNotOfRequiredTypeException)
	 * 
	 * @param name
	 *            bean注册名
	 * @param requiredType
	 *            返回对象类型
	 * @return Object 返回requiredType类型对象
	 * @throws BeansException
	 */
	@SuppressWarnings({ "unchecked", "rawtypes" })
	public static Object getBean(String name, Class requiredType)
			throws BeansException
	{
		return applicationContext.getBean(name, requiredType);
	}

	/**
	 * 如果BeanFactory包含一个与所给名称匹配的bean定义,则返回true
	 * 
	 * @param name
	 * @return boolean
	 */
	public static boolean containsBean(String name)
	{
		return applicationContext.containsBean(name);
	}

	/**
	 * 判断以给定名字注册的bean定义是一个singleton还是一个prototype。
	 * 如果与给定名字相应的bean定义没有被找到,将会抛出一个异常(NoSuchBeanDefinitionException)
	 * 
	 * @param name
	 * @return boolean
	 * @throws NoSuchBeanDefinitionException
	 */
	public static boolean isSingleton(String name)
			throws NoSuchBeanDefinitionException
	{
		return applicationContext.isSingleton(name);
	}

	/**
	 * @param name
	 * @return Class 注册对象的类型
	 * @throws NoSuchBeanDefinitionException
	 */
	@SuppressWarnings("rawtypes")
	public static Class getType(String name)
			throws NoSuchBeanDefinitionException
	{
		return applicationContext.getType(name);
	}

	/**
	 * 如果给定的bean名字在bean定义中有别名,则返回这些别名
	 * 
	 * @param name
	 * @return
	 * @throws NoSuchBeanDefinitionException
	 */
	public static String[] getAliases(String name)
			throws NoSuchBeanDefinitionException
	{
		return applicationContext.getAliases(name);
	}

}



最后在 appilication.xml 文件中加上以下配置即可

<!-- 配置Spring ApplicationContext ,可获取spring容器中的实例ben -->
<bean class="com.loon.ewf.web.WebContextFactoryUtil"></bean>
分享到:
评论

相关推荐

    Spring实例化Bean顺序

    2. **依赖注入**:Spring容器会根据Bean之间的依赖关系来决定实例化顺序。如果一个Bean依赖于另一个Bean,那么被依赖的Bean会先被实例化。Spring使用“依赖倒置”的原则,使得控制权从对象内部转移到了外部的容器。 ...

    Spring Bean创建初始化流程.docx

    在预实例化过程中,`getBean(beanName)`被调用,这是`AbstractBeanFactory`类中的一个方法,用于从Bean工厂中获取指定名称的Bean实例。 6. **实际获取Bean**: 进入`doGetBean()`方法,这是Bean实例化的关键步骤...

    Spring Bean简单应用实例

    在这个"Spring Bean简单应用实例"中,我们将深入理解这两个概念以及如何在实际应用中使用它们。 首先,控制反转(IoC)是一种设计模式,它将对象的创建和管理职责从应用代码中分离出来,转交给容器来处理。这样,...

    Spring项目bean实例化代码

    在Spring配置文件中,可以通过`&lt;bean&gt;`标签的`constructor-arg`子标签来指定构造函数参数,Spring会根据这些参数调用相应的构造函数来创建Bean实例。例如: ```xml &lt;bean id="exampleBean" class=...

    Spring Bean重复执行两次(实例被构造两次)问题分析

    在Spring容器初始化时,它会根据配置加载Bean的定义,并根据需要创建Bean实例。Bean的生命周期大致分为以下几个阶段:构造、初始化、正常使用、销毁。如果一个Bean被创建了两次,那么可能是在构造或初始化阶段出现了...

    Spring 实例化Bean的三种方式

    Spring框架通过提供多种实例化Bean的方式,使得开发者能够根据具体的应用需求选择最适合的方法。无论是简单的构造器注入,还是更为复杂的静态或实例工厂方法注入,Spring都能够灵活地支持。理解并掌握这些实例化方式...

    spring bean XML配置入门

    一旦XML配置加载到Spring容器中,容器将根据配置创建Bean实例,并按照定义进行初始化、依赖注入,最后完成Bean的生命周期管理。 10. **实践操作**: 在实际开发中,我们可以使用Eclipse的Spring插件来简化Bean...

    Spring bean 管理

    - 使用静态工厂方法实例化:这种方式通过调用一个静态方法来获取Bean实例,适用于简单工厂模式。 - 使用实例工厂方法实例化:类似于静态工厂方法,但工厂方法是非静态的,需要先创建工厂类的实例后再调用。 - ...

    Spring Bean的初始化和销毁实例详解

    Spring Bean的初始化和销毁实例详解 Spring Bean的初始化和销毁是Spring框架中一个非常重要的概念,它们都是Bean生命周期中不可或缺的一部分。在Spring框架中,我们可以使用多种方式来控制Bean的初始化和销毁,以下...

    spring bean的生命周期

    如果在XML配置中指定了`class`属性,Spring将根据该属性创建Bean。 - **属性注入**:Spring会将依赖注入到Bean中,包括值注入(value,ref)和集合注入(list,map,props,set)。 - **初始化回调**:Spring支持...

    线程中获取spring 注解bean

    当需要在线程中获取Spring注解的bean时,有几种常见的方法: 1. **ThreadLocal**:Spring提供了一种名为`ThreadLocalTargetSource`的特殊`TargetSource`实现,可以将bean实例绑定到当前线程。这样,每个线程都有其...

    Spring的三种实例化Bean的方式

    在Spring框架中,实例化Bean是管理对象生命周期的关键部分。Spring提供了多种方式来创建和管理Bean,这使得我们可以根据项目需求灵活选择最佳实践。本文将详细介绍Spring中的三种主要的Bean实例化方式:XML配置、...

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

    在Spring框架中,bean的实例化是其核心功能之一,它允许我们管理应用程序中的对象生命周期。本篇将详细探讨两种工厂方法——实例工厂方法和静态工厂方法,用于创建Spring Bean。 首先,我们要理解Spring Bean的概念...

    spring运行过程中动态注册bean

    然后,通过调用`getBeanFactory()`方法,我们可以得到`DefaultListableBeanFactory`类型的`BeanFactory`实例,这个实例是Spring容器内部管理Bean的真正场所。 ```java ConfigurableApplicationContext ...

    Java中Spring获取bean方法小结

    这里我们将详细探讨如何在Java中通过Spring获取配置的bean。 1. **BeanFactory与ApplicationContext** - **BeanFactory** 是Spring中最基础的IoC容器,负责管理和实例化Bean。它允许开发者定义Bean的生命周期和...

    Spring Bean实例化实现过程解析

    在 Spring 框架中,Bean 的实例化是通过容器来管理的,容器会根据配置文件中的信息来实例化 Bean。下面我们将详细介绍 Spring Bean 实例化的实现过程。 1. 构造器实例化 在 Spring 框架中,默认情况下,容器会通过...

    spring管理bean应用实例代码

    以上就是Spring管理Bean的一些主要知识点,实际应用中,开发者可以根据需求选择合适的配置方式,利用Spring的强大功能构建松耦合、易于测试的应用程序。这个压缩包中的实例代码应该涵盖了这些概念的实际运用,通过...

    spring IOC反射装载bean

    首先,Spring容器通过读取XML配置文件来获取Bean的定义。这些配置文件通常以`beans.xml`的形式存在,其中包含了Bean的名称、类名、依赖关系和其他属性。例如,一个简单的Bean定义可能如下所示: ```xml &lt;bean id=...

    mybatis整合spring 实例

    这个实例中的"mybatis整合spring实例(完整版)"文件可能包含了上述所有步骤的源代码,包括Spring的配置文件、MyBatis的配置文件、Mapper接口、XML文件以及相关的Java类。通过仔细阅读和理解这些代码,开发者可以...

    spring bean 属性总结

    - **id属性**:是Bean在BeanFactory中的唯一标识符,用于通过BeanFactory获取Bean实例。例如,`&lt;bean id="myBean" class="com.example.MyClass"&gt;`。 - **name属性**:类似于`id`属性,但可以定义多个别名。例如,`...

Global site tag (gtag.js) - Google Analytics