需要掌握 拿到容器中的 实例这个可以debug IOC容器
@SpringBootApplication(exclude = {DataSourceAutoConfiguration.class})
public class RuoYiApplication {public static void main(String[] args) throws NoSuchFieldException, IllegalAccessException {// System.setProperty("spring.devtools.restart.enabled", "false");ConfigurableApplicationContext context = SpringApplication.run(RuoYiApplication.class, args);//这个可以debug IOC容器System.out.println(context);//拿到容器中的 实例Field singletonObjects = DefaultSingletonBeanRegistry.class.getDeclaredField("singletonObjects");singletonObjects.setAccessible(true);ConfigurableListableBeanFactory beanFactory = context.getBeanFactory();Map<String, Object> map = (Map<String, Object>) singletonObjects.get(beanFactory);map.entrySet().stream().forEach(s -> {System.out.println(s.getKey() + " ===> " + s.getValue());});}
}
总结:
beanFactory 不仅仅是一个工厂
它的实现类、接口有提供很多的功能。
主要是:控制反转、依赖注入、bean的生命周期等功能