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

时间:2010-11-01 06:10:52

标签: java spring

我无法在服务层获取spring bean(ServiceContext.getBean(“beanName”))。我可以在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 个答案:

答案 0 :(得分:0)

尝试在没有静态访问的情况下进行。像这样的Smt(仅用于测试)

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();
    }
}

答案 1 :(得分:0)

您的Servicecontext是否由Spring管理。看起来不是。如果它不是由Spring管理的,它不能在您的Servicecontext对象中注入ApplicationContext。

如果你能说出你想要实现的目标,那么建议就更容易了。特别是ServiceContext的作用是什么?豆子不能自动连线吗?

答案 2 :(得分:0)

ear和web-inf lib中存在一些libs问题。它现在正在运作。