打开SpringBoot项目后,系统会自动生成一个SpringbootDemo01Application.java文件用于存放程序的主方法,此外会生成application.properties存放配置文件,pom.xml依旧存放各种程序需要的依赖。
点开项目的pom.xml之后找到parent标签就可以找到本项目的父项目(SpringBoot的启动器)。
父项目就是SpringBoot管理依赖的地方,SpringBoot的版本管理控制的地方,有此文件今后导入依赖就不需要写版本了(如果导入的包没有在依赖中管理着就需要手动配置版本了)。
启动器:SpringBoot将所有的功能场景都抽取出来,做成一个个的启动器,只需要在项目中引入这些starter即可,所有相关的依赖都会导入进来 , 我们要用什么功能就导入什么样的场景启动器即可。
springboot-boot-starter:就是spring-boot的场景启动器。spring-boot-starter-web帮助我们导入了web模块正常运行所需的组件。
首先我们进入SpringbootDemo01Application.java,会看到主方法、run方法以及@SpringBootApplication注解。由于我们要查看源码,所以Ctrl点进@SpringBootApplication查看源码:
@SpringBootApplication用来标注一个主程序,说明是一个SpringBoot应用。main方法用来将spring应用启动起来。
@SpringBootApplication:SpringBoot应用标注在某个类上说明这个类是SpringBoot的主配置类 , SpringBoot就应该运行这个类的main方法来启动SpringBoot应用。进入这个注解后会发现程序被@SpringBootConfiguration、@ComponentScan及@EnableAutoConfiguration注解修饰。
下面我们分别点进源码,查看这三个注解的作用。
@SpringBootConfiguration
@SpringBootConfiguration:SpringBoot的配置类 ;标注在某个类上 , 表示这是一个SpringBoot的配置类;我们继续进去这个注解查看;@EnableAutoConfiguration
回到 SpringBootApplication 注解中继续看@EnableAutoConfiguration(开启自动配置功能)我们需要的配置,SpringBoot可以自动帮我们配置,@EnableAutoConfiguration告诉SpringBoot开启自动配置功能,这样自动配置才能生效
我们点进源码查看会看到@AutoConfigurationImporServlet和@Import({AutoConfigurationImportSelector.class}) (给容器导入组件 AutoConfigurationImportSelector :它将所有需要导入的组件以全类名的方式返回 , 这些组件就会被添加到容器中 ;)两个注解:
主方法主要分两部分,一部分是SpringApplication的实例化,二是run方法的执行;
SpringApplication的实例化
run方法的执行
找出所有的应用程序监听器,设置到listeners属性中
4. 推断并设置main方法的定义类,找到运行的主类
原文:https://www.cnblogs.com/a-xia/p/SpringBoot.html