准备spring容器的操作private void prepareContext(DefaultBootstrapContext bootstrapContext, ConfigurableApplicationContext context, ConfigurableEnvironment environment, SpringApplicationRunListeners listeners, ApplicationArguments applicationArguments, Banner printedBanner) {// 设置环境变量到spring容器context.setEnvironment(environment);// 设置在SpringApplication上的BeanNameGenerator、resourceLoader设置到spring容器中postProcessApplicationContext(context);// 使用ApplicationContextInitializer初始化spring容器applyInitializers(context);// 容器初始化完成,发布ApplicationContextInitializedEvent事件listeners.contextPrepared(context);// 关闭引导的容器bootstrapContext.close(context);if (this.logStartupInfo) {logStartupInfo(context.getParent() == null);logStartupProfileInfo(context);}// 注册一些单例Bean// Add boot specific singleton beansConfigurableListableBeanFactory beanFactory = context.getBeanFactory();beanFactory.registerSingleton("springApplicationArguments", applicationArguments);if (printedBanner != null) {beanFactory.registerSingleton("springBootBanner", printedBanner);}// spring容器设置AllowCircularReferences和allowBeanDefinitionOverridingif (beanFactory instanceof AbstractAutowireCapableBeanFactory) {((AbstractAutowireCapableBeanFactory) beanFactory).setAllowCircularReferences(this.allowCircularReferences);if (beanFactory instanceof DefaultListableBeanFactory) {((DefaultListableBeanFactory) beanFactory).setAllowBeanDefinitionOverriding(this.allowBeanDefinitionOverriding);}}if (this.lazyInitialization) {context.addBeanFactoryPostProcessor(new LazyInitializationBeanFactoryPostProcessor());}// Load the sources// 拿到启动配置(run方法传递进来的)Set<Object> sources = getAllSources();Assert.notEmpty(sources, "Sources must not be empty");// 将启动配置类解析为BeanDefinition注册到spring容器load(context, sources.toArray(new Object[0]));// 发布ApplicationPreparedEvent事件,表示已经启动好spring容器listeners.contextLoaded(context);}
结束语
- 你的点赞是我提高文章质量最大的动力?。。?/li>
- 获取更多本文的前置知识文章,以及新的有价值的文章,让我们一起成为架构师!
- 目前已经完成了并发编程、MySQL、spring源码、Mybatis的源码 。可以在公众号下方菜单点击查看之前的文章!
- 这个公众号的所有技术点 , 会分析的很深入!
- 这个公众号,无广告?。。?
文章插图
推荐阅读
- 深入理解AQS--jdk层面管程实现【管程详解的补充】
- 【Java8新特性】- Lambda表达式
- 支付宝蚂蚁庄园11月3日答案是什么
- 摩尔庄园11.2神奇密码是多少
- vivoiqooz5x手机参数_vivoiqooz5x参数消息
- 带样式 JSP实现登录删除添加星座等
- 原神七圣召唤什么时候上线
- 微信的说说怎么发文字(发美景说说配文字)
- Springboot 之 Mybatis-plus 多数据源
- 结合springboot实现,这里对接的是easy版本,工具用的是IDEA,WebStrom 支付宝沙箱服务