丹东做网站哪家好,soho网站建设教程,网站选择城市怎么做,wordpress主题 动漫2019独角兽企业重金招聘Python工程师标准 本文会通过分析上一篇中跑起来的示例程序来分析一下Spring Boot程序运行的基本原理。 概要 在上一篇的介绍中#xff0c;程序是通过SpringBoot1HelloworldApplication.main()方法运行起来的#xff1a; public static … 2019独角兽企业重金招聘Python工程师标准 本文会通过分析上一篇中跑起来的示例程序来分析一下Spring Boot程序运行的基本原理。 概要 在上一篇的介绍中程序是通过SpringBoot1HelloworldApplication.main()方法运行起来的 public static void main(String[] args) {SpringApplication.run(SpringBoot1HelloworldApplication.class, args);
}从代码中可以看到通过SpringApplication.run 这样一个静态方法非常便捷地启动了一个Spring程序。SpringApplication这个类实际上就是一个Spring Boot应用的起点每一个Spring Boot的应用都会有一个类似的启动类而run方法的实际的作用是初始化了一个Spring容器的上下文。下面我们来分析一下这个简单的应用是如何启动起来的。 思考 按照以往使用Spring Framework的经验初始化一个Spring容器需要读取一些配置信息但是在我们这个示例程序里面是没有做任何配置的先看一下源码。 源码分析 从SpringApplication.run()方法一路追踪看到下面的一个运行的过程 上面的源码最下面的红框中在加载META-INF下面的spring.factories文件,然后我们看到有很几个包里面都带这个文件我们主要关注一下spring-boot-autoconfigure这个包下面的。 大致内容示例如下 可以看出这个文件基本上都是定义一些Initializer和Listener这些定义都会在SpringApplication。run启动的时候进行加载。这些内容加载之后有什么用呢以上图中红框对应的org.springframework.boot.autoconfigure.amqp.RabbitAutoConfiguration 进行举例说明先看一下该类的源码 简单理解一下这个类上的几个注解 Configuration 本类是一个Spring的配置类ConditionalOnClass({ RabbitTemplate.class, Channel.class }) 类路径中有注解中的两个类则加载本配置EnableConfigurationProperties(RabbitProperties.class) 加载注解类中对应的配置类到这里我们大概就知道了这个spring.factories 配置文件其实就是定义了一些Spring启动需要的监听以及Spring Boot 启动是的默认配置这样就能达到在不做任何配置的情况下启用Spring Boot提供的默认配置来启动程序。 SpringApplication运行及自动配置总结 简单总结一下 每个Spring Boot 程序都包括一个main函数来运行SpringApplication.run()进行系统启动。(目前可以这么认为)这个run方法里面会初始化一个Spring的容器初始化的内容都在项目及各个jar文件的META-INF下面的spring.factories中定义的各个配置类、监听等等。每个自动配置类都是基于条件进行加载的即我们在项目中引入某些包之后不添加配置或者少量必需配置后即可使用该包的功能。欢迎关注我的微信公众号 转载于:https://my.oschina.net/lsjcoder/blog/1585346