SpringBoot无废话入门2:SpringBoot启动分析
1.核心注解
在上文中,我们讲到了@springbootapplication是springboot的核心注解。
可以很方便的在idea中下载源码来查看该注解的源码,如下:
可以看到,该注解本身又被其它注解所叠加。其中最重要的注解是@springbootconfiguration和@enableautoconfiguration。第一个支持表明当前类相当于是一个配置文件,第二个注解表明当前应用程序支持自动配置,即允许springboot来提供对web应用的配置。这里就要注意了,我们说springboot看不到配置文件,不是真的就没有配置文件了,而是springboot帮我们完成了配置。
2.核心配置
既然springboot帮我们完成了配置,那么,当前配置如果我们不满意,能不能修改呢?当时是可以的。
在resource下创建application.properties,比如为了修改默认端口8080,我们输入这样的内容:server.port=9090
再次启动项目,就可以看到端口位置被修改了。
还有一些常用的配置项,logging.level.org.springframework,配置为,
logging.level.org.springframework=debug
就可以在控制台看到debug信息。
更多的属性,可以查看idea给我们的智能感知,
3.源码分析
有同学可能会进一步问,那么,到底springboot的核心配置是怎么加载 呢?这个时候,我们只能通过进一步的源码分析得到了。
spring的入口类是springapplication的class,在其构造器中,有这样一个方法,叫做getspringfactoriesinstances,
查看代码,追踪到springfactoriesloader,
打开该类,就看到了一个常量,factories_resource_location,这个常量所定义的"meta-inf/spring.factories"就是我们所要知道的核心配置类了,
找到它,打开它看看吧,可以看到在这里面定义的那些初始化器,
试着打开一个我们可能熟悉的初始化器serverportinfoapplicationcontextinitializer,
可以看到,在这里对server.ports进行了处理。
4.starter
最后,再说一下starter。
除了spring-boot-starter-parent和spring-boot-starter-web这两个starter之外,还有其它的一些starter,我们可以在官方站点
https://spring.io/projects/spring-boot/#learn
查到全部的starter,
随着开发的深入,我们会使用越来越多的starter。
感谢关注“码农星球”。本文版权属于“码农星球”。我们提供咨询和培训服务,关于本文有任何困惑,请关注并联系我们。
上一篇: 单位院里有一些建筑垃圾