zoukankan      html  css  js  c++  java
  • Web项目中获取SpringBean——在非Spring组件中获取SpringBean

    最近在做项目的时候我发现一个问题:Spring的IOC容器不能在Web中被引用(或者说不能被任意地引用)。我们在配置文件中让Spring自 动装配,但并没有留住ApplicationContext的实例。我们如果希望在我们的项目中任何位置都能拿到同一个 ApplicationContext来获取IOC容器中的资源,就要让Spring将上下文环境填充到我们能获取的地方,比如下面的做法(来自网络资 源):

      自定义一个工具类,实现自ApplicationContextAware接口,接口的方法是setApplicationContext,我 们实现它,并让其为我们服务,因为Spring在load自己的时候会将上下文环境填充进来。我们所要做的就是将得到的 ApplicationContext保存下来用。

    package reyo.sdk.utils.spring;
    
    import org.springframework.beans.BeansException;
    import org.springframework.context.ApplicationContext;
    import org.springframework.context.ApplicationContextAware;
    
    /**
     * Spring IOC上下文工具类
     *
     * @author reyo
     *
     */
    public class SpringUtil implements ApplicationContextAware {
    
        /**
         * 当前IOC
         */
        private static ApplicationContext applicationContext;
    
        /**
         * 设置当前上下文环境,此方法由spring自动装配
         */
        @Override
        public void setApplicationContext(ApplicationContext arg0)
                throws BeansException {
            applicationContext = arg0;
        }
    
        /**
         * 从当前IOC获取bean
         *
         * @param id
         *            bean的id
         * @return
         */
        public static Object getObject(String id) {
            Object object = null;
            object = applicationContext.getBean(id);
            return object;
        }
    
    }

      上文的类就是我们要用的,而其中的setApplicationContext是接口中需要实现的,Spring会自动进行填充。我们在Spring的配置文件中注册一下:

    1 <bean id="springUtil" class="reyo.sdk.utils.spring.SpringUtil" />

      这样就可以了,Spring把我们需要的东西给我们了。

      我们就可以在需要的地方这样做:

    1 YouClass obj = (YouClass)SpringUtil.getObject("beanid");

      当然,前提是你需要让Spring自动装配哦。

  • 相关阅读:
    [BZOJ2071] [POI2004]JAS
    [BZOJ1852] [MexicoOI06]最长不下降序列(dp+贪心转移)
    用Java实现基于SOAP的XML文档网络传输及远程过程调用(RPC)(转)
    Amazon云计算的一些实用应用(转)
    使用netbeans6.7.1开发webservice 服务端 和 客户端(转)
    深入探索SOAP1.1使用SAAJ1.2.1(转)
    推荐:PoolParty!一个管理EC2集群的Ruby Gem开源工具(转)
    max 加载 菜单项
    2011 新相
    重要的视图类型解释。
  • 原文地址:https://www.cnblogs.com/interdrp/p/3524640.html
Copyright © 2011-2022 走看看