代码之家  ›  专栏  ›  技术社区  ›  Rakesh Goyal

如何从服务层访问spring托管bean

  •  1
  • Rakesh Goyal  · 技术社区  · 14 年前

    我无法在服务层(ServiceContext.getBean(“beanName”)中获取SpringBean)。不过,我可以在servlet中获取bean。下节课我做错什么了?

    package com.ekaplus.presentation.common;
    
    import org.springframework.beans.BeansException;
    import org.springframework.context.ApplicationContext;
    import org.springframework.context.ApplicationContextAware;
    
    public class ServiceContext implements ApplicationContextAware{
    
        private static ApplicationContext applicationContext;       
    
        @SuppressWarnings("static-access")
        public  void setApplicationContext(ApplicationContext ctx)throws BeansException {
            this.applicationContext=ctx;        
        }
        public static ApplicationContext getApplicationContext() {
            return applicationContext;
        }
        public static Object getBean(String beanName)
        {
            return applicationContext.getBean(beanName);
        }
    
    }
    
    3 回复  |  直到 14 年前
        1
  •  0
  •   Stan Kurilin    14 年前

    尝试在没有静态访问的情况下执行此操作。这样的贴片机(仅用于测试)

    class ServiceContext {
        public static Object getBean(final String beanName){
            return new ApplicationContextAware(){
                Object res;
                @Override
                public void setApplicationContext(ApplicationContext applicationContext)
                        throws BeansException {
                    res = applicationContext.getBean(beanName);
                }
    
                Object getBean(){
                    return res;
                }
    
            }.getBean();
        }
    }
    
        2
  •  0
  •   lalit    14 年前

    是由Spring管理的Servicecontext。看起来不是。如果不是由Spring管理,则无法将ApplicationContext注入到servicecoxt对象中。

        3
  •  0
  •   Rakesh Goyal    14 年前

    ear和web inf库中存在一些libs问题。它现在正在工作。