Java程序中,Spring bean和普通java类的初始化顺序问题

譬如说我程序中有一个Spring bean如下,它会被一个自定义的Util普通类(里面都是静态方法)所用,

@Component
public class SpringContextUtil implements ApplicationContextAware {

    private static ApplicationContext context = null;

    @Override
    public void setApplicationContext(ApplicationContext applicationContext)
        throws BeansException {
    this.context = applicationContext;
    }

    public static <T> T getBean(String beanName) {
        return (T) context.getBean(beanName);
    }

    public static String getActiveProfile() {
        return context.getEnvironment().getActiveProfiles()[0];
    }
}

那假如这个Spring Bean在Util类初始化后再初始化肯定不行,那么像这种问题,spring是如何解决的?譬如Util类对Spring Bean的SpringContextUtil.getActiveProfile()的调用会触发该bean的初始化?或者因为该bean未初始化,只是SpringContextUtil类加载了,然后因为applicationContext未注入,导致Null pointer Exception?

阅读 3.9k
1 个回答

applicationcontext会init的时候就完成所有bean的初始化 不用担心depend问题

推荐问题