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

一个空间可以做两个网站吗百度指数怎么看

一个空间可以做两个网站吗,百度指数怎么看,网上商城网站建设解决方案,微信网站建设合同SpringBoot-SpringBoot源码解读 一、Spring Boot启动过程概述 Spring Boot通过一系列的类和机制,简化了Spring应用的启动流程。当你执行SpringApplication.run()时,Spring Boot会自动完成应用的初始化、环境配置、组件加载、自动配置等任务&#xff0c…

SpringBoot-SpringBoot源码解读

一、Spring Boot启动过程概述

Spring Boot通过一系列的类和机制,简化了Spring应用的启动流程。当你执行SpringApplication.run()时,Spring Boot会自动完成应用的初始化、环境配置、组件加载、自动配置等任务,最终启动嵌入式Web服务器或其他应用容器。

1、Spring Boot的启动流程

Spring Boot的启动过程可以大致分为以下几个步骤:

  1. 创建SpringApplication实例: Spring Boot的启动入口通常是调用SpringApplication.run()方法,这时会创建一个SpringApplication实例。

  2. 设置应用上下文: Spring Boot会根据项目类型选择合适的应用上下文。对于Web应用,Spring Boot会选择AnnotationConfigServletWebApplicationContext,对于非Web应用,Spring Boot则使用AnnotationConfigApplicationContext。

  3. 设置环境: 在启动过程中,Spring Boot会创建并设置一个Environment对象,加载默认的环境配置、命令行参数和application.properties等配置文件。

  4. 加载自动配置: Spring Boot会根据项目中的依赖和spring.factories文件自动加载所需的配置。例如,如果项目中包含Spring Web模块,Spring Boot会自动配置Tomcat容器。

  5. 初始化容器和Bean: Spring Boot会初始化所有的Bean,自动注入依赖,完成应用的初始化工作。

  6. 启动嵌入式服务器: 对于Web应用,Spring Boot会启动嵌入式的Web服务器(如Tomcat、Jetty等),并开始接受HTTP请求。

  7. 应用运行: 当所有初始化工作完成后,应用开始运行,处理业务请求。

2、关键类解析

在Spring Boot启动过程中,以下几个类扮演着至关重要的角色:

  • SpringApplication:负责应用的启动和初始化。
  • ConfigurableApplicationContext:负责管理应用的上下文。
  • AnnotationConfigApplicationContext:作为容器,加载应用的Bean。
  • ApplicationContextInitializer:用于在应用上下文初始化之前执行自定义逻辑。
    我们通过源代码来理解Spring Boot启动的核心过程。

SpringApplication的run()方法解析

public static ConfigurableApplicationContext run(Class<?> primarySource, String... args) {SpringApplication application = new SpringApplication(primarySource);application.setApplicationContextClass(GenericWebApplicationContext.class);return application.run(args);
}

在此方法中,Spring Boot会创建一个SpringApplication对象,并通过run()方法启动应用。primarySource参数通常是应用的主配置类或启动类,args是命令行传递的参数。接下来,我们将详细分析run()方法的实现。

二、SpringApplication类源码解读

1、SpringApplication类的作用

SpringApplication是Spring Boot应用启动的核心类。它负责启动Spring容器,管理应用的生命周期,并处理应用的配置、环境和自动化设置。该类封装了Spring应用初始化的多个步骤,是Spring Boot应用程序的核心入口。

2、run()方法深入分析

run()方法是Spring Boot应用启动的入口,它的作用不仅仅是启动应用,它还包含了一系列复杂的操作,包括环境的初始化、应用上下文的配置等。

run()方法解析

public ConfigurableApplicationContext run(String... args) {// 1. 环境准备prepareEnvironment(args);// 2. 初始化Spring应用上下文ConfigurableApplicationContext context = createApplicationContext();// 3. 初始化应用的BeanprepareContext(context, args);// 4. 启动监听器并发布应用事件refreshContext(context);// 5. 完成应用启动return context;
}
  • 准备环境:prepareEnvironment()方法会根据传入的参数设置应用环境,例如加载配置文件、命令行参数等。
  • 创建应用上下文:根据项目类型,选择合适的ApplicationContext(例如Web应用会选择AnnotationConfigServletWebApplicationContext)。
  • 初始化容器:prepareContext()方法会初始化应用上下文,将所有的Bean注册到容器中,并执行一些必要的初始化操作。
  • 启动监听器并发布应用事件:refreshContext()会刷新容器并发布事件,启动所有的Bean。

3、事件监听与应用上下文的启动

Spring Boot在启动过程中会广播多个事件,如ApplicationStartingEvent、ApplicationPreparedEvent、ApplicationReadyEvent等,开发者可以通过监听这些事件来执行特定操作。例如,监听ApplicationReadyEvent事件,可以在应用完全启动后执行初始化任务。

三、Spring Boot的自动配置实现

1、自动配置的概念

自动配置是Spring Boot的一大亮点。通过@EnableAutoConfiguration注解,Spring Boot可以自动推断和配置项目中所需的组件,从而大大减少开发者的配置工作。自动配置基于“约定大于配置”的原则,自动加载相关的配置并根据项目依赖进行调整。

2、自动配置的工作原理

自动配置的实现基于@Configuration注解的类,并通过@Conditional注解对自动配置进行条件化。Spring Boot会根据应用的类路径和环境条件,自动选择合适的配置类。

自动配置类示例

@Configuration
@ConditionalOnClass(JdbcTemplate.class)
@EnableConfigurationProperties(DataSourceProperties.class)
public class DataSourceAutoConfiguration {@Beanpublic DataSource dataSource(DataSourceProperties properties) {return new DriverManagerDataSource(properties.getUrl(), properties.getUsername(), properties.getPassword());}
}

在上面的例子中,@ConditionalOnClass(JdbcTemplate.class)表示只有在类路径中包含JdbcTemplate时才会加载此自动配置类。Spring Boot通过这种方式控制自动配置的启用条件。

3、自动配置实现的关键代码分析

Spring Boot通过META-INF/spring.factories文件加载自动配置类。这个文件包含了自动配置类的名称和启动条件,Spring Boot会扫描并自动加载这些配置。

spring.factories文件示例

# META-INF/spring.factories
org.springframework.boot.autoconfigure.EnableAutoConfiguration=\
org.springframework.boot.autoconfigure.web.servlet.WebMvcAutoConfiguration,\
org.springframework.boot.autoconfigure.jdbc.DataSourceAutoConfiguration

这些配置项会告诉Spring Boot在启动时自动加载相关的自动配置类。

四、配置和属性加载的原理

1、配置文件的加载过程

Spring Boot的配置文件(如application.properties或application.yml)可以存放在不同的路径中,如src/main/resources。Spring Boot会在应用启动时加载这些配置文件,并将其中的属性注入到Spring容器中。

加载顺序

  1. 默认配置:Spring Boot提供了一些默认配置,位于spring-boot-autoconfigure模块中。
  2. 环境属性:通过Environment接口,Spring Boot加载并管理来自不同位置的属性。
  3. 外部配置文件:如果应用有外部配置文件,Spring Boot会优先加载这些配置文件中的属性。

2、属性源的管理

Spring Boot使用PropertySource来管理应用的属性源。Spring Boot提供了多个属性源,包括application.properties、命令行参数、JVM参数、操作系统环境变量等。Spring Boot会根据优先级将这些属性源合并到Environment对象中。

属性源合并过程

@PropertySource("classpath:application.properties")
public class MyApplication {@Value("${app.name}")private String appName;
}

3、配置文件与环境的结合

Spring Boot通过@ConfigurationProperties注解将配置文件中的属性与Java对象结合。开发者可以通过这种方式将配置文件中的复杂配置映射到POJO类中。

配置文件与Java类映射示例

@ConfigurationProperties(prefix = "app")
public class AppConfig {private String name;private String version;// getters and setters
}

总结

通过对Spring Boot启动过程、SpringApplication类、自动配置及属性加载原理的深入解析,我们不仅能了解Spring Boot的启动机制,还能够掌握如何优化应用的启动流程与配置管理。这些原理和源码的深入解析将帮助开发者更好地理解Spring Boot的设计思想,提升代码的可维护性和性能。

以上是 SpringBoot-SpringBoot源码解读 的学习

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

相关文章:

  • 旅游兼职网站建设google浏览器官网下载
  • 多多搜索推广seo观察网
  • 上海网站改版方案网络营销模式下品牌推广途径
  • 青岛网站建设推广服务长春网站建设公司
  • 北京市委网站百度下载免费安装到桌面
  • wordpress制作页面模板兰州网络seo公司
  • 怎么用ftpxp做网站昆明seocn整站优化
  • 12306网站建设费用网络推广文案
  • 指定网站怎么设置路由器只访问新产品推广方案范文
  • 合适的网站制作需要多少钱网站域名查询
  • 网站建设公司织梦模板下载榜单优化
  • wordpress 3.8 下载关键词排名优化软件价格
  • 用织梦搭建网站seo软件工具箱
  • 江苏省建设培训网站裤子seo关键词
  • 网站cms系统 开源框架hyein seo
  • 做淘宝主要看哪些网站全网搜索软件下载
  • 网站设计应该遵循的原则西安百度推广网站建设
  • 自己做网站 服务器chinaz站长素材
  • 做网批那个网站好seo外链怎么发
  • 合肥网站建设合肥站长统计app进入网址新版小猪
  • 莲都区建设分局网站seo技术培训唐山
  • 响应式网站建设对企业营销什么网站百度收录快
  • 营销型网站推广营销平台
  • WordPress 评论列表折叠关键词优化怎么弄
  • 门户网站和网站的区别微营销推广软件
  • 网站网页的区别与联系今天上海最新新闻事件
  • 萝岗网站建设制作微营销是什么
  • 常德建设网站制作搜狗seo优化
  • 公司做网站 手机 电脑百度上怎么免费开店
  • matlab 做网站开发种子库