`
琼海溜
  • 浏览: 18583 次
  • 性别: Icon_minigender_1
  • 来自: 海口
社区版块
存档分类
最新评论

Spring上下文对象

阅读更多

接上一篇,如果没有Servlet代理类,而又想在Servlet(或其他非同一Spring容器管理的对象)中获取目标bean,可以实现接口org.springframework.context.ApplicationContextAware,然后将实现类作为bean,然后可以正常使用,一般是将常用的getBean、getBeansOfType等包装成类方法,一是方便作为工具方法调用,二来可以自己捕获异常,再抛出项目中的指定异常。实际上,ApplicationContextAware的类型层次结构中,有一个实现类org.springframework.context.support.ApplicationObjectSupport,并整合了MessageSourceAccessor很方便。代码如下:


package com.xxx.context;

import java.lang.reflect.Array;
import java.util.ArrayList;
import java.util.List;
import java.util.Map;

import org.apache.commons.collections.MapUtils;
import org.springframework.beans.factory.InitializingBean;
import org.springframework.context.ApplicationContext;
import org.springframework.context.support.ApplicationObjectSupport;
import org.springframework.context.support.MessageSourceAccessor;
import org.springframework.util.Assert;

import xxx.xxx.BusinessException;


/**
 *  Spring上下文<br>
**/
public class SpringContext extends ApplicationObjectSupport implements InitializingBean {

 /** 当前上下文 */
 private static ApplicationContext context = null;
 /** 消息存取器 */
 private static MessageSourceAccessor messageSourceAccessor = null;


 @Override
 public void afterPropertiesSet() throws Exception {
  context = super.getApplicationContext();
  messageSourceAccessor = new MessageSourceAccessor(context);
  Assert.notNull(context, "ApplicationContext不能为空!");
  Assert.notNull(messageSourceAccessor, "messageSourceAccessor不能为空!");
 }


 /**
  * 根据名称获取Bean
  *
  * @param beanName
  * @return
  */
 public static Object getBean(String beanName) throws BusinessException {
  try {
   return context.getBean(beanName);
  }
  catch (Exception e) {
   throw new BusinessException("", e);
  }
 }


 /**
  * 根据类型获取Bean Map
  *
  * @param type
  * @return
  */
 public static <T> Map<String, T> getBeanMapOfType(Class<T> type) throws BusinessException {
  try {
   return context.getBeansOfType(type);
  }
  catch (Exception e) {
   throw new BusinessException("", e);
  }
 }


 /**
  * 根据类型获取Bean List
  *
  * @param type
  * @return
  */
 public static <T> List<T> getBeanListOfType(Class<T> type) throws BusinessException {
  Map<String, T> beanMap = getBeanMapOfType(type);
  List<T> list = new ArrayList<T>();
  if (MapUtils.isNotEmpty(beanMap)) {
   list.addAll(beanMap.values());
  }
  return list;
 }


 /**
  * 根据类型获取Bean Array
  *
  * @param type
  * @return
  */
 public static <T> T[] getBeanArrayOfType(Class<T> type) throws BusinessException {
  List<T> list = getBeanListOfType(type);
  @SuppressWarnings("unchecked")
  T[] array = (T[]) Array.newInstance(type, list.size());
  array = list.toArray(array);
  return array;
 }


 /**
  * 获取国际化消息
  *
  * @param code
  *              消息代码
  * @return
  */
 public static String getMessage(String code) throws BusinessException {
  try {
   return messageSourceAccessor.getMessage(code);
  }
  catch (Exception e) {
   throw new BusinessException("", e);
  }
 }

}

 

1
0
分享到:
评论

相关推荐

    利用Spring Context上下文创建自定义对象

    本篇文章将深入探讨如何利用Spring Context上下文来创建自定义对象,并理解控制反转的原理。 首先,让我们了解什么是Spring Context。Spring Context是Spring框架的应用上下文,它充当了全局容器,存储了应用的所有...

    通过Spring上下文获取bean的实例对象

    通过Spring上下文获取bean的实例对象

    第二十章 Spring 应用上下文生命周期(ApplicationContext Lifecycle)1

    本章将深入探讨Spring应用上下文的生命周期,从启动准备阶段到关闭阶段,包括各个关键步骤和相关组件的作用。 1. **Spring 应用上下文启动准备阶段** 在这个阶段,AbstractApplicationContext的`prepareRefresh()`...

    Spring框架实用知识库分享

    * 介绍如何获取并使用Bean对象,包括获取Spring上下文对象、获取指定Bean对象、使用Bean对象 第2篇 Spring使用注解存储和读取对象 * 介绍Spring中使用注解存储和读取对象的方法 * 演示如何使用@Spring注解来创建...

    Spring基础面试

    以上两种方式都可以从 `ServletContext` 中获取到 Spring 上下文对象。 #### 9. Spring AOP 的底层使用的是什么技术? - **知识点**: Spring AOP 主要使用 JDK 动态代理和 CGLIB 两种技术实现。 - **解释**: JDK ...

    Spring文件的上传和下载

    2. **Spring上下文对象的获得和使用** Spring的ApplicationContext是应用上下文的核心,它包含了所有bean的定义和配置。在Spring MVC中,我们可以通过`@Autowired`注解自动注入`ApplicationContext`,以便获取其他...

    Jeesite框架自定义上下文对象:ctx和${ctxStatic}.docx

    在Java开发中,特别是在基于Spring Boot的项目中,自定义上下文对象可以帮助开发者更方便地访问和管理应用中的各种资源。Jeesite框架是基于Spring MVC的一个企业级快速开发平台,它提供了丰富的功能模块和灵活的扩展...

    Spring框架.ppt

    向Spring 框架提供上下文信息,包括企业服务,如 JNDI、EJB、电子邮件、国际化、校验和调度等。 Spring AOP。通过配置管理特性,可以很容易地使 Spring 框架管理的任何对象支持 AOP。Spring AOP 模块直接将面向方面...

    Spring-Context:Spring上下文上下文

    在Spring-Context中,你可以理解为Spring上下文就是应用程序的运行环境,它负责管理和装配Bean,同时提供了事件发布、国际化等功能。让我们深入探讨一下Spring上下文的相关知识点。 1. **Bean的定义与管理** - **...

    Spring获取ApplicationContext对象工具类的实现方法

    在Spring中,ApplicationContext(应用程序上下文)是容器的核心,负责配置和管理应用中对象的生命周期和依赖关系。在实际开发过程中,经常需要从各个角落获取到这个ApplicationContext对象,以便于能够使用Spring...

    spring4.3.2参考文档(英文)

    Spring 上下文:Spring 上下文是一个配置文件,向 Spring 框架提供上下文信息。Spring 上下文包括企业服务,例如 JNDI、EJB、电子邮件、国际化、校验和调度功能。 Spring AOP:通过配置管理特性,Spring AOP 模块...

    Spring 应用上下文获取 Bean 的常用姿势实例总结

    Spring 应用上下文获取 Bean 是一个常见的操作,在 Spring 框架中获取 Bean 对象是非常重要的。本文将总结 Spring 应用上下文获取 Bean 的常用姿势实例,并对其实现方法和操作注意事项进行详细的分析和讲解。 一、...

    spring+freemark整合工程

    在IT行业中,Spring框架与FreeMarker模板引擎的整合是一个常见的任务,特别是在开发Web应用程序时。Spring MVC作为Spring框架的一部分,负责处理HTTP请求并提供视图层的解决方案,而FreeMarker则是一个强大的、轻量...

    spring-global-context:这个项目展示了如何让 JBoss 模块能够在 Wildfly 下的 web 应用程序之间共享单个 Spring 上下文

    Spring 上下文是 Spring 框架的核心组件,它是一个容器,负责管理应用对象的生命周期和依赖关系。通过 Spring 上下文,我们可以声明 Bean、配置 Bean 的属性、定义 Bean 之间的依赖关系,以及在需要时获取这些 Bean ...

    特殊情况(ActionForm,Servlet, Filter, Listener)下Spring如何注入对象

    2. **Filter**: 同样,可以在Filter的init()方法中获取ApplicationContext,或者通过ServletContextAware接口,将Spring上下文注册到ServletContext,然后在doFilter()方法中使用。 3. **Listener**: 在监听器的...

    spring 资料spring 资料spring 资料spring 资料

    2. **容器**:Spring框架提供了两种类型的容器:Spring Bean容器(也称为ApplicationContext)和Web应用上下文(WebApplicationContext)。容器负责创建、配置和管理对象(称为Bean),并处理对象间的依赖关系。 3....

    上下文应用

    标题中的“上下文应用”可能指的是在软件开发中,尤其是Java或Spring框架中常见的“上下文(Context)”概念。上下文通常是指程序运行时的状态或环境,它可以包含对象、配置信息以及其他必要的数据,使得不同的组件...

    Spring与Web环境集成.pdf

    Spring框架提供了一个监听器ContextLoaderListener,就是对上述功能的封装,该监听器内部加载Spring配置文件,创建应用上下文对象,并存储到ServletContext域中。同时,Spring还提供了一个客户端工具...

    spring4.3.10的所有jar包

    它支持JUnit和TestNG,允许在测试环境中轻松地配置Spring上下文。 `spring-orm-4.3.10.RELEASE.jar`是Spring与各种ORM(Object-Relational Mapping)框架的集成模块,如Hibernate、JPA等。它提供了数据访问抽象层,...

    spring mvc jar包

    1. `org.springframework.context-3.0.2.RELEASE.jar`:这个库提供了上下文支持,包括应用上下文(ApplicationContext)和扩展上下文(ExtendedContext)。ApplicationContext 是 Spring 中的核心接口,它负责管理 ...

Global site tag (gtag.js) - Google Analytics