zoukankan      html  css  js  c++  java
  • 获取Spring管理的Bean

    1.再Spring配置文件中配置工具类

    1     <!-- 用于持有ApplicationContext,可以使用SpringContextHolder.getBean('xxxx')的静态方法得到spring bean对象 -->  
    2     <bean class="com.xxxxx.SpringContextHolder" lazy-init="false" />  

    2.编写java工具类

    import org.springframework.context.ApplicationContext;  
    import org.springframework.context.ApplicationContextAware;  
    /** 
     * 以静态变量保存Spring ApplicationContext, 可在任何代码任何地方任何时候中取出ApplicaitonContext. 
     *  
     */  
    public class SpringContextHolder implements ApplicationContextAware {  
    private static ApplicationContext applicationContext;  
      
    /** 
    * 实现ApplicationContextAware接口的context注入函数, 将其存入静态变量. 
    */  
    public void setApplicationContext(ApplicationContext applicationContext) {  
    SpringContextHolder.applicationContext = applicationContext; // NOSONAR  
    }  
      
    /** 
    * 取得存储在静态变量中的ApplicationContext. 
    */  
    public static ApplicationContext getApplicationContext() {  
    checkApplicationContext();  
    return applicationContext;  
    }  
      
    /** 
    * 从静态变量ApplicationContext中取得Bean, 自动转型为所赋值对象的类型. 
    */  
    @SuppressWarnings("unchecked")  
    public static <T> T getBean(String name) {  
    checkApplicationContext();  
    return (T) applicationContext.getBean(name);  
    }  
      
    /** 
    * 从静态变量ApplicationContext中取得Bean, 自动转型为所赋值对象的类型. 
    */  
    @SuppressWarnings("unchecked")  
    public static <T> T getBean(Class<T> clazz) {  
    checkApplicationContext();  
    return (T) applicationContext.getBeansOfType(clazz);  
    }  
      
    /** 
    * 清除applicationContext静态变量. 
    */  
    public static void cleanApplicationContext() {  
    applicationContext = null;  
    }  
      
    private static void checkApplicationContext() {  
    if (applicationContext == null) {  
    throw new IllegalStateException("applicaitonContext未注入,请在applicationContext.xml中定义SpringContextHolder");  
    }  
    }  
    }
  • 相关阅读:
    JavaScript实现网页换肤
    JavaScript实现鼠标效果
    JavaScript实现复选框的全选、不选、反选
    处理器解决物联网和人工智能的融合
    用小神经网络和光谱仪优化关键词识别
    电阻存储器为edge-AI提供了仿生架构
    为什么edge AI是一个无需大脑的人
    满足实时人工智能的计算需求
    传感器可以让智能手机测量生命体征
    接触追踪解决方案建立在UWB而不是蓝牙上
  • 原文地址:https://www.cnblogs.com/shuo1208/p/5872136.html
Copyright © 2011-2022 走看看