当前位置: 首页 > news >正文

厦门网站建设公司名单百度指数官网查询入口

厦门网站建设公司名单,百度指数官网查询入口,bing站长平台,好项目网加载启动类:加了SpringBootApplication的启动类的main 方法中,通过运行SpringApplication.run()方法启动 【SpringBootApplication是由EnableAutoConfiguration(导入自动配置AutoConfigurationSelector类从而加载加了Configuration的配置&am…

加载启动类:加了@SpringBootApplication的启动类的main 方法中,通过运行SpringApplication.run()方法启动

【@SpringBootApplication是由@EnableAutoConfiguration(导入自动配置AutoConfigurationSelector类从而加载加了@Configuration的配置)、@SpringBootConfiguration(等同@Configuration)和@ComponentScan(自动扫描并加载符合条件的Bean)组成的 】

服务构建:构建SpringApplication

        1.将资源加载器、主方法类记录在内存;

        2.确定Web服务类型(Servlet-tomcat);

        3.加载初始化类:读取META-INF文件中注册初始化、上下文初始化、监听器的配置;

        4.通过运行栈(stackTrace)判断main方法所在的类(启动类本身);

进入run方法

环境准备:

        1.new BootstrapContext(启动上下文)

        2.调用启动注册初始化器中的初始化initialize方法(默认没有)

        3.将java.awt.headless设置为true(表示缺少显示器键盘等输入设备也正常启动)

        4.启动运行监听器(SpringApplicationRunListeners),然后发布启动事件(获取并加载spring-boot工程spring.factories配置文件中的EventPublishRunListener,引入监听器配置)

        5.构建可配置环境Enviroment(默认Servlet类型):加载系统环境变量、jvm系统属性到propertySources的内存集合中,便于之后取用;通过配置环境configureEnvironment方法将启动时传入的环境参数args进行设置,同时在propertySources集合首个位置添加一个空配置configurationProperties(后续使用)

        6.发送环境加载完成事件,刚加载的八个监听器会监听到,其中部分会进行相应处理,如环境配置后处理监听器会去加载spring.factories配置文件中的环境配置后处理器EnviromenPostProccessor(这里监听器用到了观察者模式,串行执行)

        7..将spring.beninfo.ignore=true(Bean元数据信息不加载,属性、方法、构造函数)用来改善应用性能,打印Banner图(启动横幅)

容器创建:(ApplicationContext)

        1.通过createApplicationContext来创建容器(上下文),首先根据服务类型(默认Servlet)创建容器ConfigurabaleApplicationContext,这个过程中会创建存放和生产bean实例的Bean工厂,创建用来解析@Component、@ComponentScan等注解的配置类后处理器ConfigurationClassPostProccessor,创建用来解析@Autowired、@Value等注解的自动注解Bean后处理器AutowiredAnnotationBeanPostProcessor

        2.通过prepareContext方法对容器属性初始化,先用postProcessApplicationContext方法设置Bean名称生成器、资源加载器、类型转换器等,执行上下文初始化(实现容器ID、警告日志处理、日志监听等)ApplicationContextInitializer,为容器注册启动参数、Bean引用策略、Banner、懒加载策略等

        3.通过Bean定义加载器将启动类等资源定义集合加载到BeanDefinitionMap(Bean定义池),便于后续根据Bean定义创建Bean对象

        4.发布资源加载完成事件

填充容器:自动装配Bean

        1.通过prepareRefresh方法,在已有的系统环境基础上准备servlet相关的环境Enviroment,通过初始化属性资源initServletPropertySources方法给servlet初始化参数servletContextInitParams和servletConfigInitParams赋值,然后通过validateRequiredProperties方法检验是否有必填的环境变量(可以在自定义初始化属性资源InitPropertySources方法中通过setRequiredProperties将某些环境变量设置为必填),最后完成监听器和事件初始化,环境准备完成

        2.调用obtainFreshBeanFactory方法(如果选择ClassPathXmlApplicationContext作为容器,会重构BeanFactory和重新加载Bean定义,而选择的servletWebServerApplicationContext作为容器不会进行任何处理)

        3.调用prepareBeanFactory方法加载类加载器BeanClassLoader、表达式解析器BeanExpressionResolver和配置文件处理器PropertyEditorRegistar等系统级处理器和两个Bean后置处理器(解析Aware接口的ApplicationContextAwareProcessor、处理自定义监听器注册和销毁的ApplicationListenerDetector),还会注册一些特殊Bean(BeanFactory容器本身、ApplicationContext、系统环境Enviroment、系统属性等)放入特殊对象池和单例池中

        4.调用PostProcessBeanFactory方法对BeanFactory进行额外设置或修改(定义request、session等servlet相关作用域scopes,注册与servlet相关的ServletRequest、ServletResponse、HttpSession等特殊类)

        5.执行InvokeBeanFactoryPostProcessors方法,执行BeanFactory后置处理器beanFactoryPostProcessor(其中包括配置处理器ConfigurationClassPostProcessor,该处理器加载所有@Configuration配置类,同时检索指定的Bean扫描路径componentScans,然后通过Bean扫描器ClassPathBeanDefinitionScanner中doScan方法扫描每个类,将所有扫描出来的Bean定义都放到Bean定义池beanDefinitionMap中,同样还会扫描加了@Bean、@Import等注解的类和方法,将他们对应的Bean定义也都放到Bean定义池,后续就能通过这些Bean定义构造相应的Bean对象了)

        6.通过registerBeanPostProcessors方法检索所有的Bean后置处理器,同时根据指定的order为他们进行排序,然后放入后置处理器池beanPostProcessor中,每个Bean后置处理器都会在Bean初始化之前和之后分别执行对应的逻辑

        7.通过initMessageSource方法和initApplicationEventMulticaster方法从单例池中获取两个Bean放在ApplicationContext中:messageSource(用于国际化,可以通过自定义messageSource这个Bean结合messages.properties配置文件进行多语言切换配置)、applicationEventMulticaster(用于自定义广播事件,可以通过publicshEvent方法进行事件发布)

        8.通过onRefresh构造并启动Web服务器,先查找实现了ServletWebServerFactory这个接口的应用服务器Bean(默认为tomcat),通过getWebServer方法构造一个Tomcat对象,通过start方法进行启动,web服务器开始运行

        9.通过registerListeners方法在Bean中查找所有的监听器Bean,将他们注册到上面的消息广播器applicationEventMulticaster中

        10.通过finishBeanFactoryInitialization来生产我们所有的Bean(构造对象-填充属性-初始化实例-注册销毁,详情见springbean的生命周期),Bean生成后放入单例池singletonObjects中

        11.通过finishRefresh方法构建并注册生命周期管理器lifecycleProcessor,同时会调用所有实现了声明周期接口Lifecycle的Bean中的start方法(当容器关闭时会自动调用对应的stop方法),发布一个容器刷新完成的事件,SpringBoot正式启动完成

http://www.15wanjia.com/news/31675.html

相关文章:

  • wordpress 图片模糊合肥seo网络优化公司
  • 关于做网站的英语对话网络营销策略制定
  • 公司网站建设系统google广告
  • 自学做网站要学什么浙江百度推广开户
  • 企业网站价格搜索引擎网站有哪些
  • 做网站郑州最新军事新闻 今日 最新消息
  • 企业集团网站建设方案论文百度惠生活商家怎么入驻
  • 寿光哪里做网站搜狗网页版入口
  • 网站服务器怎么优化沈阳网站seo排名公司
  • 那个网站教你做美食怎样在百度上建立网站
  • 制作华为手机网站建设规划书免费下载官方百度
  • wordpress固定链接文章别名关闭站长工具seo综合查询
  • php企业网站源码推荐网络整合营销理论案例
  • 手机网站北京今日要闻10条
  • 聊城高端网站制作百度sem推广具体做什么
  • 安庆网站建设价格百度关键词seo外包
  • html主页设计谷歌seo网站排名优化
  • 大型网站开发费用什么网站都能打开的浏览器
  • 妇科医院网站建设怎么做网络营销和电子商务区别
  • 怎么查询网站的设计公司名称谷歌seo实战教程
  • 形象墙在线设计网站自助建站系统下载
  • 做网站的得多少钱惠州网站推广排名
  • 网站建设 的类型有哪些站长工具国色天香
  • 经营B2C网站win7优化极致性能
  • dw网页设计与制作厦门百度seo点击软件
  • 前端静态网站模板拉新推广渠道
  • 创建公司网站需要注意什么想要导航推广网页怎么做
  • 淄博网站建设有实力今天重大国际新闻
  • 做网站学多长时间可以学会北京优化网站方法
  • 高校网站建设重要作用搜索引擎优化与关键词的关系