setApplicationContext(ApplicationContext applicationContext) 从未调用过

2024-01-07

我试图获取 Spring 应用程序上下文,然后调用其方法 getBean("beanName") 来获取特定的 bean,但出现空指针异常,表明上下文为空。当我在 setApplicationContext() 方法中放置一个断点时,我发现这个方法永远不会被调用,这很奇怪,因为这个方法应该在 spring 完成 beans 实例化之后调用。我在这里寻找了一些类似的问题,但没有一个对我有用。

这是我的代码:

public class SpringApplicationContext implements ApplicationContextAware {

    private static ApplicationContext CONTEXT;

    @Override
    public void setApplicationContext(ApplicationContext applicationContext) throws BeansException {
        CONTEXT = applicationContext;
    }

    public static Object getBean(String beanName){
        return CONTEXT.getBean(beanName);
    }
}

Set the ApplicationContext该对象运行于其中。

通常,此调用将用于初始化对象。

The ApplicationContext该对象要使用的对象。

Add @Component.

@Component
public class SpringApplicationContext implements ApplicationContextAware {

    private static ApplicationContext CONTEXT;

    @Override
    public void setApplicationContext(ApplicationContext applicationContext) throws BeansException {
        CONTEXT = applicationContext;
    }

    public static ApplicationContext getApplicationContext(){
        return CONTEXT;
    }
}

Use ApplicationContext.

TheBeanInstance bean = SpringApplicationContext.getApplicationContext().getBean(requiredType);

应用上下文感知 https://docs.spring.io/spring-framework/docs/current/javadoc-api/org/springframework/context/ApplicationContextAware.html

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

setApplicationContext(ApplicationContext applicationContext) 从未调用过 的相关文章

随机推荐