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

昆明网站开发哪家好南宁百度推广代理商

昆明网站开发哪家好,南宁百度推广代理商,我为什么电商要学网站建设,手机网站架构在 Redis 中实现分布式锁 1. 主入口与 SpringApplication.run()2. 准备阶段3. 创建应用上下文(ApplicationContext)4. Bean 定义加载与上下文刷新5. Embedded Web Server 的启动(针对 Web 应用)6. ApplicationRunner 和 CommandLi…

在 Redis 中实现分布式锁

  • 1. 主入口与 SpringApplication.run()
  • 2. 准备阶段
  • 3. 创建应用上下文(ApplicationContext)
  • 4. Bean 定义加载与上下文刷新
  • 5. Embedded Web Server 的启动(针对 Web 应用)
  • 6. ApplicationRunner 和 CommandLineRunner 执行
  • 7. 应用启动完成
  • 总结

1. 主入口与 SpringApplication.run()

  • 入口方法
    一般在应用的主类中有 public static void main(String[] args) 方法,该方法调用了 SpringApplication.run(Application.class, args)

  • SpringApplication 对象的创建
    通过 run() 方法,Spring Boot 创建了一个 SpringApplication 实例,这个实例负责整个启动流程的协调工作。

2. 准备阶段

  • Environment 准备
    在正式创建 Spring 应用上下文之前,Spring Boot 会先准备好环境(Environment),包括加载配置文件(如 application.properties 或 application.yml)、系统环境变量、命令行参数等信息,并解析成 Environment 对象。

  • Banner 展示
    在环境准备过程中,Spring Boot 会加载并打印启动 Banner。Banner 可以是默认的,也可以自定义。

  • 初始器(Initializers)和监听器(Listeners)注册
    根据配置,Spring Boot 会注册各类初始器和事件监听器,这些组件会在后续的启动过程中接收各类启动事件(如 ApplicationStartingEvent、ApplicationPreparedEvent、ApplicationReadyEvent 等)。

3. 创建应用上下文(ApplicationContext)

  • 选择容器类型
    Spring Boot 根据项目依赖和配置选择合适的 ApplicationContext 实现。例如,对于 Web 应用,会使用 AnnotationConfigServletWebServerApplicationContext,而对于非 Web 应用则使用 AnnotationConfigApplicationContext

  • 实例化上下文
    调用 createApplicationContext() 方法创建对应的上下文实例。

4. Bean 定义加载与上下文刷新

  • 加载 Bean 定义
    Spring Boot 通过扫描(Component Scan)、配置类(@Configuration)等方式加载所有需要注册的 Bean 定义。

  • 上下文刷新(refresh())
    在调用 refresh() 方法时,Spring 会完成:

    • BeanFactory 的初始化
      注册所有的 Bean 定义、处理依赖注入、应用 AOP 等;
    • BeanPostProcessor 的应用
      在 Bean 实例化前后进行各种处理,如注解解析、事务增强等;
    • 事件发布
      在关键时刻触发相应的启动事件通知注册的监听器。

5. Embedded Web Server 的启动(针对 Web 应用)

  • 启动嵌入式服务器
    对于 Spring Boot Web 应用,会自动配置并启动嵌入式的 Web 服务器(如 Tomcat、Jetty 或 Undertow)。在上下文刷新过程中,会创建服务器工厂并启动服务器。

  • DispatcherServlet 初始化
    随后会初始化并注册 DispatcherServlet,负责接收并分发 HTTP 请求。

6. ApplicationRunner 和 CommandLineRunner 执行

  • 运行自定义逻辑
    当所有 Bean 都已初始化完毕,并且上下文已经刷新后,Spring Boot 会查找并执行所有实现了 ApplicationRunnerCommandLineRunner 接口的 Bean,这些组件可以在应用启动完成后执行特定的业务逻辑。

7. 应用启动完成

  • 发布 ApplicationReadyEvent
    当所有启动步骤都完成后,Spring Boot 会发布一个 ApplicationReadyEvent 事件,表明应用已经完全启动并且可以开始接收请求。

  • 等待请求
    对于 Web 应用来说,嵌入式服务器此时已经在监听端口等待 HTTP 请求;对于其他类型应用,则进入运行状态等待任务执行或事件触发。

总结

整个启动过程可以概括为:

  1. 入口调用与环境准备:main 方法 -> SpringApplication.run() -> 加载配置与初始化环境
  2. 上下文创建与 Bean 加载:实例化 ApplicationContext -> 加载并注册 Bean 定义 -> 刷新上下文
  3. 嵌入式服务器启动(Web 应用):启动并配置内置 Web 服务器
  4. 启动后逻辑执行:执行 ApplicationRunner/CommandLineRunner -> 应用完全启动并准备就绪

Spring Boot 的启动流程可以概括为以下几个主要步骤:

  1. 启动入口: 程序从 main 方法开始执行,通常调用 SpringApplication.run(Application.class, args),这一步骤负责启动整个 SpringBoot 应用。

  2. 环境准备与Banner打印: 在运行 SpringApplication.run() 时,会初始化 SpringApplication 对象。这个过程中会准备好 Environment(包括读取配置文件、命令行参数等),同时还会打印出启动 Banner。

  3. ApplicationContext 的创建: 根据应用类型(比如 Web 应用或非 Web 应用),Spring Boot 会自动选择合适的 ApplicationContext 实现(例如 AnnotationConfigServletWebServerApplicationContext
    AnnotationConfigApplicationContext),并进行实例化。

  4. BeanDefinition 的加载与注册: Spring Boot 会扫描和加载所有的配置类以及自动装配的组件。这里包括对用户自定义配置类和自动配置类的处理,进而注册所有的 Bean 定义到容器中。

  5. ApplicationContext 的刷新: 调用 refresh() 方法,完成对容器的初始化,这一过程中会实例化所有单例 Bean,并触发 Bean 的生命周期回调,如@PostConstructInitializingBeanafterPropertiesSet() 等。

  6. 监听器与Runner的执行: Spring Boot 启动过程中会触发各种事件(如 ApplicationStartedEventApplicationReadyEvent),同时执行实现了CommandLineRunnerApplicationRunner 接口的组件,用于在应用启动完成后执行特定逻辑。

  7. 启动完成: 至此,Spring Boot 应用完成启动,等待接收请求或执行相应的业务逻辑。

http://www.dtcms.com/wzjs/148570.html

相关文章:

  • 昆明微网站建设全国教育培训机构平台
  • 重新建设网站的申请报告美国最新新闻头条
  • 企业网站管理系统带授权软文优化
  • 做网站需要会什么 知乎官网设计公司
  • 扬中网站建设价格全国教育培训机构平台
  • 蒙阴网站优化seo具体是什么
  • 网站推广外包公司哪家好微信广告怎么投放
  • 武汉网站建站公司崇左网站建设
  • 关于美食的网站设计网络营销师
  • 怎么做像表白墙的网站贴吧友情链接在哪
  • 外贸平台有哪些电商seo优化方向
  • 网络广告策略有哪些百度搜索关键词排名优化
  • 美橙智能网站网站制作策划书
  • 有没有做软件的外包网站营销推广是什么意思
  • 做网站哪家靠谱百度一下百度
  • 网站界面设计的要求网站建设合同
  • 政务中心网站自身建设百度seo优化服务项目
  • 网站建设原则新网站百度多久收录
  • 动态网站开发的技术有湖北网络推广有限公司
  • 邵阳做网站国际重大新闻事件2023
  • 从seo角度谈网站建设克州seo整站排名
  • 百度上搜不到做的网站微信客户管理
  • 制作网页一般用什么来设计分割页面免费seo网站推广
  • 做网站需要ps吗公司如何在百度宣传
  • 做网站用什么电脑希爱力双效片
  • 专业b2c电商网站开发品牌推广和营销推广
  • wordpress程序慢pc网站优化排名软件
  • 怎么做网站维护网店网络营销与推广策划书
  • 国家卫生健康委员会办公地点seo创业
  • 网站建设行业发展史旅游产品推广有哪些渠道