Spring:ApplicationContextAware

LingLee_荊棘鳥發表於2017-08-03

ApplicationContextAware,通過它spring容器會自動把上下文環境物件呼叫ApplicationContextAware介面中的setApplicationContext方法。

我們在ApplicationContextAware的實現類中,就可以通過這個上下文環境物件得到Spring容器中的Bean。

使用方法如下:

1.實現ApplicationContextAware介面:

[java] view plain copy
 print?
  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.         context = applicationContext;  
  14.     }  
  15.       
  16.     public static Object getBean(String name){  
  17.         return context.getBean(name);  
  18.     }  
  19.       
  20. }  


2.在Spring的配置檔案中配置這個類,Spring容器會在載入完Spring容器後把上下文物件呼叫這個物件中的setApplicationContext方法:

[html] view plain copy
 print?
  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:

[html] view plain copy
 print?
  1. <!-- 初始化Spring容器,讓Spring容器隨Web應用的啟動而自動啟動 -->  
  2.     <listener>  
  3.         <listener-class>org.springframework.web.context.ContextLoaderListener</listener-class>  
  4.     </listener>  


4.在專案中即可通過這個SpringContextHelper呼叫getBean()方法得到Spring容器中的物件了。

相關文章