// Trigger initialization of all non-lazy singleton beans...
for (String beanName : beanNames) {
RootBeanDefinition bd = getMergedLocalBeanDefinition(beanName);
if (!bd.isAbstract() && bd.isSingleton() && !bd.isLazyInit()) {
if (isFactoryBean(beanName)) {
Object bean = getBean(FACTORY_BEAN_PREFIX + beanName);
if (bean instanceof FactoryBean) {
final FactoryBean<?> factory = (FactoryBean<?>) bean;
boolean isEagerInit;
if (System.getSecurityManager() != null && factory instanceof SmartFactoryBean) {
isEagerInit = AccessController.doPrivileged((PrivilegedAction<Boolean>)
((SmartFactoryBean<?>) factory)::isEagerInit,
getAccessControlContext());
}
else {
isEagerInit = (factory instanceof SmartFactoryBean &&
((SmartFactoryBean<?>) factory).isEagerInit());
}
if (isEagerInit) {
getBean(beanName);
}
}
}
else {
getBean(beanName);
}
}
}
if (System.getSecurityManager() != null && factory instanceof SmartFactoryBean) {}
是判断java应用是否有jvm的权限和强转而成的beanFactory是否属于SmartFactoryBean类型的,而无论是否属于SmartFactoryBean类型、是否有jvm权限,都会执行方法isEagerInit。而isEagerInit在默认(spring写死)的情况下会返回false,那么isEagerInit就永远都只会是false。
这个变量无论是否通过判断都只会是false,而我的问题是,isEagerInit变量是干嘛的?