普通類中獲取spring容器中的javabean對象


spring提供了一系列的*Aware 接口,用於獲取相應的對象,進行一系列的對象設置操作,此處實現ApplicationContextAware來獲取ApplicationContext。

其他Aware接口有:

  BeanNameAware 獲得到容器中Bean的名稱

  BeanFactoryAware 獲得當前bean Factory,從而調用容器的服務

  ApplicationContextAware 當前的application context從而調用容器的服務

  MessageSourceAware 得到message source從而得到文本信息

  ApplicationEventPublisherAware 應用時間發布器,用於發布事件

  ResourceLoaderAware 獲取資源加載器,可以獲得外部資源文件



package
com.obim.sendclient.util; import org.springframework.beans.BeansException; import org.springframework.context.ApplicationContext; import org.springframework.context.ApplicationContextAware; import org.springframework.stereotype.Component; /** * @author hsh * @create 2018-03-19 上午 11:15 */ @Component public class SpringUtil implements ApplicationContextAware { private static ApplicationContext applicationContext; @Override public void setApplicationContext(ApplicationContext applicationContext) throws BeansException { if(SpringUtil.applicationContext == null) { SpringUtil.applicationContext = applicationContext; } System.out.println("---------------me.shijunjie.util.SpringUtil------------------------------------------------------"); System.out.println("========ApplicationContext配置成功,在普通類可以通過調用SpringUtils.getAppContext()獲取applicationContext對象,applicationContext="+SpringUtil.applicationContext+"========"); } //獲取applicationContext public static ApplicationContext getApplicationContext() { return applicationContext; } //通過name獲取 Bean. public static Object getBean(String name){ return getApplicationContext().getBean(name); } //通過class獲取Bean. public static <T> T getBean(Class<T> clazz){ return getApplicationContext().getBean(clazz); } //通過name,以及Clazz返回指定的Bean public static <T> T getBean(String name,Class<T> clazz){ return getApplicationContext().getBean(name, clazz); } }

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM