`
flychao88
  • 浏览: 752005 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

Spring ApplicationContextAware使用方法

 
阅读更多

       项目用到了ApplicationContextAware,通过它Spring容器会自动把上下文环境对象调用ApplicationContextAware接口中的setApplicationContext方法。

我们在ApplicationContextAware的实现类中,就可以通过这个上下文环境对象得到Spring容器中的Bean。

使用方法如下:

1.实现ApplicationContextAware接口:

  1. package com.bis.majian.practice.module.spring.util;  
  2.   
  3. import org.springframework.beans.BeansException;  
  4. import org.springframework.context.ApplicationContext;  
  5. import org.springframework.context.ApplicationContextAware;  
  6.   
  7. public class SpringContextHelper implements ApplicationContextAware {  
  8.     private static ApplicationContext context = null;  
  9.   
  10.     @Override  
  11.     public void setApplicationContext(ApplicationContext applicationContext)  
  12.             throws BeansException {  
  13.         this.context = applicationContext;  
  14.     }  
  15.       
  16.     public static Object getBean(String name){  
  17.         return context.getBean(name);  
  18.     }  
  19.       
  20. }  


2.在Spring的配置文件中配置这个类,Spring容器会在加载完Spring容器后把上下文对象调用这个对象中的setApplicationContext方法:

  1. <?xml version="1.0" encoding="UTF-8"?>  
  2. <beans xmlns="http://www.springframework.org/schema/beans"  
  3.     xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:tx="http://www.springframework.org/schema/tx"  
  4.     xmlns:context="http://www.springframework.org/schema/context"  
  5.     xsi:schemaLocation="http://www.springframework.org/schema/beans   
  6.     http://www.springframework.org/schema/beans/spring-beans-3.0.xsd   
  7.     http://www.springframework.org/schema/tx   
  8.     http://www.springframework.org/schema/tx/spring-tx-3.0.xsd   
  9.     http://www.springframework.org/schema/context   
  10.     http://www.springframework.org/schema/context/spring-context-3.0.xsd" default-autowire="byName">  
  11.       
  12.     <bean id="springContextHelper" class="com.bis.majian.practice.module.spring.util.SpringContextHelper"></bean>  
  13.       
  14.     <context:component-scan base-package="com.bis.majian.practice.module.*" />  
  15. </beans>  


3.在web项目中的web.xml中配置加载Spring容器的Listener:

  1. <!-- 初始化Spring容器,让Spring容器随Web应用的启动而自动启动 -->  
  2.     <listener>  
  3.         <listener-class>org.springframework.web.context.ContextLoaderListener</listener-class>  
  4.     </listener>  


4.在项目中即可通过这个SpringContextHelper调用getBean()方法得到Spring容器中的对象了。

分享到:
评论

相关推荐

    获取spring容器的方法

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

    SpringPython使用介绍指南.doc

    ### SpringPython使用介绍指南 #### 一、IoC容器 SpringPython借鉴了Spring框架的核心理念——依赖注入(DI)和面向切面编程(AOP),并将其应用到了Python语言中。其中,IoC(Inverse of Control,控制反转)容器...

    spring-aware接口实现与bean作用域(spring多容器层面)

    `ApplicationContextAware`是其中的一个典型接口,当我们想要在非托管类(即非Spring Bean)中获取Spring容器中的其他Bean时,可以使用这个接口。 `ApplicationContextAware`接口提供了`setApplicationContext`方法...

    Spring在应用中获得Bean的方法

    如果你知道Bean的类型,可以使用`getBean(Class&lt;T&gt; requiredType)`方法,Spring会返回与给定类型匹配的第一个Bean。 ```java ApplicationContext context = new ClassPathXmlApplicationContext("beans.xml"); ...

    17. Spring Boot普通类调用bean【从零开始学Spring Boot】

    Spring Boot普通类调用bean【从零开始学Spring Boot】”旨在指导初学者如何在非Spring管理的类中访问和使用Spring容器中的bean。下面将详细讲解这个主题。 首先,了解Spring Boot的基础概念是必要的。Spring Boot...

    Spring使用timer定时器-能精确几点运行定时任务

    3. **实现ApplicationContextAware**:为了在`Timer`中使用Spring管理的Bean,我们需要实现`ApplicationContextAware`接口,以便获取Spring上下文。 ```java @Component public class TimerConfig implements ...

    线程中获取spring 注解bean

    2. **AOP(面向切面编程)**:通过Spring AOP,可以在特定的切点(如方法调用)执行拦截器逻辑,此时可以使用`@Autowired`获取所需的bean。创建一个切面,定义切点并实现所需逻辑,确保在多线程环境中正确处理bean。...

    普通对象使用spring容器中的对象的实现方法

    实现方法的主要思想是使用spring框架提供的ApplicationContextAware接口来获取spring容器中的对象。这个接口提供了获取ApplicationContext对象的方法,从而可以使用ApplicationContext对象来获取spring容器中的对象...

    com-spring-ioc-demo:源码主要是学习Spring IOC的原理,以及对Bean的注册及控制,主要运用以下类对Spring进行扩展学习:BeanPostProcessor,BeanFactoryAware,BeanNameAware,ApplicationContextAware,FactoryBean,BeanDefinitionRegistryPostProcessor,BeanFactoryPostProcessor,BeanPostProcessor,ResourceLoaderA

    com-spring-ioc-demo:源码主要是学习Spring IOC的原理,以及对Bean的注册及控制,主要运用以下类对Spring进行扩展学习:BeanPostProcessor,BeanFactoryAware,BeanNameAware,ApplicationContextAware,FactoryBean...

    Spring Bean生命周期.pdf

    从Spring 3.0开始,推荐使用Java配置类中的@Bean注解来指定初始化方法。 4. 销毁(Destruction) 销毁阶段发生在Spring容器关闭或Bean不再需要时。销毁之前会调用实现了DisposableBean接口的destroy方法或通过XML...

    获取Spring容器

    2. **线程安全性**:如果在多线程环境中使用`ApplicationContextUtil.getBean`方法,需要注意并发问题,因为该方法不是线程安全的。 3. **性能考虑**:频繁地通过编码的方式获取Bean可能会对性能造成一定影响,尤其...

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

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

    Spring Reference Core Technologies

    - **Groovy Bean Definition DSL**:Spring支持使用Groovy语言编写配置脚本来定义bean,这种方式更加灵活且易于维护。 - **1.2.2 实例化容器** 实例化IoC容器是使用Spring框架的第一步。可以通过`...

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

    方法五:实现接口 ApplicationContextAware 实现该接口的 setApplicationContext(ApplicationContext context) 方法,并保存 ApplicationContext 对象。Spring 初始化时,会通过该方法将 ApplicationContext 对象...

    spring3.1中文参考文档

    - 介绍了几种实例化bean的方法,如使用构造方法、静态工厂方法和实例工厂方法。 **4.4 依赖** - **4.4.1 依赖注入** - 包括了基于构造方法和基于setter方法的依赖注入。 - 介绍了依赖注入的过程和示例。 - **...

    Spring Reference - Core Technologies.pdf

    使用容器意味着创建应用对象、配置它们、组装它们,并将它们交给Spring容器,然后由容器管理它们的生命周期。 1.3 Bean概述 Bean是Spring IoC容器中的核心概念,它是一个由Spring IoC容器创建、配置、管理的Java...

    spring项目启动加载类到静态服务类中的三种方式.zip

    但是,由于静态方法无法直接使用注解,我们可以创建一个非静态的辅助类,该类可以被Spring管理,并在其内部使用`@Autowired`注解来注入bean。之后,静态服务类通过这个辅助类访问bean。 ```java @Component ...

    spring core官方文档.pdf

    - **默认初始化和销毁方法**:Spring提供了一些默认的初始化和销毁方法。 - **ApplicationContextAware和BeanNameAware** - `ApplicationContextAware`接口让Bean能够访问到整个ApplicationContext。 - `...

    Spring特性——Aware感知特性

    ApplicationContextAware接口扩展了BeanFactoryAware,提供了`setApplicationContext(ApplicationContext applicationContext)`方法。ApplicationContext比BeanFactory更加强大,提供了更多功能,如消息资源处理、...

Global site tag (gtag.js) - Google Analytics