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。

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

SpringBoot无废话入门02:SpringBoot启动分析的更多相关文章

  1. SpringBoot无废话入门04:MyBatis整合

    1.Parent引入及pom配置 首先,如果要支持mybatis,那么我们就应该引入mybatis的starter.同时,由于连接本身还需要用jdbc的connetor和连接池,所以一并需要引入这些依 ...

  2. SpringBoot无废话入门01:最简SpringBoot应用

    虽然本篇讲的是一个最简的SpringBoot应用,但是要说明的是:学习SpringBoot是有门槛的,这个门槛就是, 1:首先得有框架的基础,比如SSM: 2:MAVEN基础. 在学好上面两者的基础上 ...

  3. SpringBoot无废话入门03:SpringMVC支持

    1.默认配置 Springboot对于路径的默认位置为: spring.resources.static-locations=classpath:/META-INF/resources/,classp ...

  4. SpringCloud无废话入门02:Ribbon负载均衡

    1.白话负载均衡 在上一篇的介绍中,我们创建了两个一模一样的服务提供者:Provider1和Provider2,然后它们提供的服务也一模一样,都叫Hello-Service.为什么一样的服务我们要部署 ...

  5. SpringBoot源码解析:tomcat启动分析

    >> spring与tomcat的启动分析:war包形式 tomcat:xml加载规范 1.contex-param: 初始化参数 2.listener-class: contextloa ...

  6. SpringCloud无废话入门05:Spring Cloud Gateway路由、filter、熔断

    1.什么是路由网关 截至目前为止的例子中,我们创建了一个service,叫做:HelloService,然后我们把它部署到了两台服务器(即提供了两个provider),然后我们又使用ribbon将其做 ...

  7. SpringCloud无废话入门01:最简SpringCloud应用

    1.创建Parent Parent很简单,创建一个空的maven项目,pom如下: <?xml version="1.0" encoding="UTF-8" ...

  8. SpringCloud无废话入门04:Hystrix熔断器及监控

    1.断路器(Circuit Breaker)模式 在上文中,我们人为停掉了一个provider,在实际的生产环境中,因为意外某个服务down掉,甚至某一层服务down掉也是会是有发生的.一旦发生这种情 ...

  9. SpringCloud无废话入门03:Feign声明式服务调用

    1.Feign概述 在上一篇的HelloService这个类中,我们有这样一行代码: return restTemplate.getForObject("http://hello-servi ...

随机推荐

  1. cmake与autoconf+automake

    cmake与autoconf+automakes是同类的编译工具,本人常用的是cmake. 这有一篇对比的文章,记录一下. cmake与autoconf+automake的对比

  2. Python_collections_namedtuple可命名元组

    namedtuple:用来构建带字段名的元组 import collections # 创建类,两种创建方法 MytupleClass = collections.namedtuple('Mytupl ...

  3. tomcat 反代配置

    tomcat反代可以基于nginx , http进行反代 反代服务器: 有两个网口  反代服务器一般有两块网卡一块处于外网,一块处于内网用于与后端服务器通信 tomcat 节点处于内网地址 1 tom ...

  4. echarts Y轴的刻度 跟数据对应---tooltip-formatter

    var xAxisData = ['2018-01', '2018-02', '2018-03', '2018-04', '2018-05', '2018-06', '2018-07', '2018- ...

  5. POJ1469 COURSES 二分图匹配 匈牙利算法

    原文链接http://www.cnblogs.com/zhouzhendong/p/8232649.html 题目传送门 - POJ1469 题意概括 在一个大矩阵中,有一些障碍点. 现在让你用1*2 ...

  6. 025 SSM简单搭建

    参考了同事的文档,自己也写一篇文档. 同时,补充了一下,程序是如何运行的. 一:SSM框架 1.说明 SSM(Spring+SpringMVC+MyBatis)框架集由Spring.SpringMVC ...

  7. 模运算(附加几种数据类型的数据范围判断)-hdu3123

    题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=3123 预备知识点: (a+b)%m=[(a%m)+(b%m)]%m(a*b)%m=[(a%m)*(b% ...

  8. HDU 5178 pairs【二分】||【尺取】

    <题目链接> 题目大意: 给定一个整数序列,求出绝对值小于等于k的有序对个数. 解题分析: $O(nlong(n))$的二分很好写,这里就不解释了.本题尺取$O(n)$也能做,并且效率很不 ...

  9. 从输入 URL 到页面加载完成的过程详解---【XUEBIG】

    从输入 URL 到页面加载完成的过程中都发生了什么事情? 这是一道经典的面试题,涉及面非常广,要答出来并不困难,当要将问题回答好却不是那么容易 过程概述 浏览器查找域名对应的 IP 地址: 浏览器根据 ...

  10. mybatis查询语句的背后之封装数据

    转载请注明出处... 一.前言 继上一篇mybatis查询语句的背后,这一篇主要围绕着mybatis查询的后期操作,即跟数据库交互的时候.由于本人也是一边学习源码一边记录,内容难免有错误或不足之处,还 ...