SpringBoot无废话入门02:SpringBoot启动分析

举报
码农星球陆敏技 发表于 2019/04/02 13:59:02 2019/04/02
【摘要】 1.核心注解 在上文中,我们讲到了@SpringBootApplication是SpringBoot的核心注解。 可以很方便的在idea中下载源码来查看该注解的源码,如下: 可以看到,该注解本身又被其它注解所叠加。其中最重要的注解是@SpringBootConfiguration和@EnableAutoConfiguration。第一个支持表明当前类...

图片0.jpg

1.核心注解

        在上文中,我们讲到了@SpringBootApplication是SpringBoot的核心注解。

        可以很方便的在idea中下载源码来查看该注解的源码,如下:

n_1903141430109393695.jpg

        可以看到,该注解本身又被其它注解所叠加。其中最重要的注解是@SpringBootConfiguration和@EnableAutoConfiguration。第一个支持表明当前类相当于是一个配置文件,第二个注解表明当前应用程序支持自动配置,即允许SpringBoot来提供对web应用的配置。这里就要注意了,我们说SpringBoot看不到配置文件,不是真的就没有配置文件了,而是SpringBoot帮我们完成了配置。

2.核心配置

        既然SpringBoot帮我们完成了配置,那么,当前配置如果我们不满意,能不能修改呢?当时是可以的。

        在resource下创建application.properties,比如为了修改默认端口8080,我们输入这样的内容:server.port=9090

        再次启动项目,就可以看到端口位置被修改了。

n_1903141430357078987.png

        还有一些常用的配置项,logging.level.org.springframework,配置为,

        logging.level.org.springframework=DEBUG

        就可以在控制台看到DEBUG信息。

        更多的属性,可以查看idea给我们的智能感知,

n_1903141430539918039.jpg

3.源码分析

        有同学可能会进一步问,那么,到底SpringBoot的核心配置是怎么加载 呢?这个时候,我们只能通过进一步的源码分析得到了。

        Spring的入口类是SpringApplication的class,在其构造器中,有这样一个方法,叫做getSpringFactoriesInstances,

n_1903141431142748093.jpg

        查看代码,追踪到SpringFactoriesLoader,

n_1903141431253084361.jpg

        打开该类,就看到了一个常量,FACTORIES_RESOURCE_LOCATION,这个常量所定义的"META-INF/spring.factories"就是我们所要知道的核心配置类了,

n_1903141431380198617.jpg

        找到它,打开它看看吧,可以看到在这里面定义的那些初始化器,

n_1903141431492761533.png

        试着打开一个我们可能熟悉的初始化器ServerPortInfoApplicationContextInitializer,

n_1903141431597277265.jpg

        可以看到,在这里对server.ports进行了处理。

4.starter

        最后,再说一下starter。

        除了spring-boot-starter-parent和spring-boot-starter-web这两个starter之外,还有其它的一些starter,我们可以在官方站点

        https://spring.io/projects/spring-boot/#learn

        查到全部的starter,

n_1903141432127165065.jpg

        随着开发的深入,我们会使用越来越多的starter。

        感谢关注“码农星球”。本文版权属于“码农星球”。我们提供咨询和培训服务,关于本文有任何困惑,请关注并联系我们。

【版权声明】本文为华为云社区用户原创内容,转载时必须标注文章的来源(华为云社区)、文章链接、文章作者等基本信息, 否则作者和本社区有权追究责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。