譬如说我程序中有一个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?
applicationcontext会init的时候就完成所有bean的初始化 不用担心depend问题