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.8k
1 个回答

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

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题