1.Spring Boot介绍,源码阅读环境搭建,插件安装



2.spring boot 源码解析2-SpringApplication初始化




![]()


![]()


3.spring boot 源码解析3-SpringApplication#run









![]()




4.spring boot 源码解析4-SpringApplication#run第4步




















![]()
![]()
![]()
![]()


























![]()














![]()













5.spring boot 源码解析5-SpringApplication#run第5步






















6.spring boot 源码解析6-SpringApplication#run第6步




























7.spring boot 源码解析7-SpringApplication#run第7步
















8.spring boot 源码解析8-SpringApplication#run第8步
























2017-12-25 10:25:22.276 INFO 50826 --- [ main] com.example.demo.DemoApplication : Starting DemoApplication on localhost with PID 50826 (/Users/hejiarui/Documents/spring-boot-source/demo/target/classes started by hejiarui in /Users/hejiarui/Documents/spring-boot-source/demo)
2017-12-25 10:29:02.626 DEBUG 50852 --- [ main] com.example.demo.DemoApplication : Running with Spring Boot, Spring v4.3.13.RELEASE 




















9.spring boot 源码解析9-SpringApplication#run第9步













































































/**/favicon.ico=ResourceHttpRequestHandler [locations=[ServletContext resource [/], class path resource [META-INF/resources/], class path resource [resources/], class path resource [static/], class path resource [public/], class path resource []], resolvers=[org.springframework.web.servlet.resource.PathResourceResolver@6bbe50c9]],
/webjars/**=ResourceHttpRequestHandler [locations=[class path resource [META-INF/resources/webjars/]], resolvers=[org.springframework.web.servlet.resource.PathResourceResolver@3c46dcbe]],
/**=ResourceHttpRequestHandler [locations=[ServletContext resource [/], class path resource [META-INF/resources/], class path resource [resources/], class path resource [static/], class path resource [public/]], resolvers=[org.springframework.web.servlet.resource.PathResourceResolver@68577ba8]]

10.spring boot 源码解析10-SpringApplication#run第10-13步





















11.spring boot 源码解析11-ConfigurationClassPostProcessor类加载解析

























































12.spring boot 源码解析12-servlet容器的建立































13.spring boot 源码解析13-@ConfigurationProperties是如何生效的











![]()













































































14.spring boot 源码解析14-默认错误页面处理流程, 自定义,及EnableAutoConfigurationImportSelector处理






![]()










![]()



















15.spring boot 源码解析15-spring mvc零配置

































16.spring boot 源码解析16-spring boot外置tomcat部署揭秘


















17.spring boot 源码解析17-mvc自动化配置揭秘




























18.spring boot 源码解析18-WebMvcAutoConfiguration自动化配置揭秘


















19.spring boot 源码解析19-@Conditional注解详解
















































![]()








20.spring boot 源码解析20-spring boot aop自动化配置












21.spring boot 源码解析21-spring boot transaction自动化配置





![]()















![]()

22.spring boot 源码解析22-spring boot jdbc自动化配置


















23.spring boot 源码解析23-actuate使用及EndPoint解析


































































24.spring boot 源码解析24-HealthEndpoint解析

![]()


































25.spring boot 源码解析25-DataSourcePoolMetadata与DataSourcePoolMetadataProvider

















![]()



26.spring boot 源码解析26-Liquibase使用及LiquibaseEndpoint解析




![]()






















27.spring boot 源码解析27-JavaLoggingSystem及LoggingSystem生命周期详解





































28.spring boot 源码解析28-Log4J2LoggingSystem


















29.spring boot 源码解析29-LogbackLoggingSystem

![]()












![]()














30.spring boot 源码解析30-LoggersEndpoint




31.spring boot 源码解析31-AuthenticationAuditListener,AuthorizationAuditListener














![]()













32.spring boot 源码解析32-PublicMetrics详解



















33.spring boot 源码解析33-spring boot集成spring cache(基于ConcurrentMapCache)










![]()



34.spring boot 源码解析34-spring boot集成spring cache(基于EHcache)














35.spring boot 源码解析35-CacheStatisticsProvider,CacheStatistics














![]()

36.spring boot 源码解析36-ConditionalOnEnabledEndpoint





37.spring boot 源码解析37-CounterService详解
















38.spring boot 源码解析38-GaugeService详解






39.spring boot 源码解析39-DropwizardMetricServices详解




![]()








![]()











40.spring boot 源码解析40-CounterService,GaugeService默认自动装配解析





41.spring boot 源码解析41-CounterWriter,GaugeWriter解析













42.spring boot 源码解析42-MessageChannelMetricWriter详解





43.spring boot 源码解析43-JmxMetricWriter详解





















44.spring boot 源码解析44-PrefixMetricReader,PrefixMetricWriter,MultiMetricRepository

















45.spring boot 源码解析45-RichGaugeReader,RichGaugeRepository











46.spring boot 源码解析46-MetricReader















![]()










47.spring boot 源码解析47-Metric(RichGauge)ReaderPublicMetrics








![]()
48.spring boot 源码解析48-MetricsEndpoint



49.spring boot 源码解析49-MetricsEndpointMetricReader


50.spring boot 源码解析50-Exporter详解
















51.spring boot 源码解析51-MetricExporters详解




![]()
















Metric [name=gauge.response.test-counter, value=32.0, timestamp=Wed Jan 31 17:36:36 CST 2018]Metric [name=gauge.response.star-star.favicon.ico, value=14.0, timestamp=Wed Jan 31 17:36:36 CST 2018]
Metric [name=counter.status.200.star-star.favicon.ico, value=1, timestamp=Wed Jan 31 17:36:36 CST 2018]Metric [name=counter.test-counter.count, value=1, timestamp=Wed Jan 31 17:36:36 CST 2018]
Metric [name=counter.status.200.test-counter, value=1, timestamp=Wed Jan 31 17:36:36 CST 2018]
52.spring boot 源码解析52-actuate中MVCEndPoint解析

















![]()









53.spring boot 源码解析53-AbstractNamedMvcEndpoint











2018-02-01 01:07:26.635 INFO 3132 --- [main] com.example.demo.DemoApplication : Starting DemoApplication on localhost with PID 3132 (/Users/hejiarui/Documents/spring-boot-source/demo/target/classes started by hejiarui in /Users/hejiarui/Documents/spring-boot-source/demo)
2018-02-01 01:07:26.638 INFO 3132 --- [main] com.example.demo.DemoApplication : The following profiles are active: test
2018-02-01 01:07:26.894 INFO 3132 --- [main] ationConfigEmbeddedWebApplicationContext : Refreshing org.springframework.boot.context.embedded.AnnotationConfigEmbeddedWebApplicationContext@7d1cfb8b: startup date [Thu Feb 01 01:07:26 CST 2018]; root of context hierarchy
2018-02-01 01:07:27.619 INFO 3132 ---

54.spring boot 源码解析54-AbstractHandlerMethodMapping












![]()
















55.spring boot 源码解析55-spring boot actuator HandlerMapping全网独家揭秘



![]()


2018-02-01 15:24:52.984 INFO 7106 --- [ main] o.s.b.a.e.mvc.EndpointHandlerMapping : Mapped "{[/metrics/{name:.*}],methods=[GET],produces=[application/vnd.spring-boot.actuator.v1+json || application/json]}" onto public java.lang.Object org.springframework.boot.actuate.endpoint.mvc.MetricsMvcEndpoint.value(java.lang.String)
2018-02-01 15:24:52.984 INFO 7106 --- [ main] o.s.b.a.e.mvc.EndpointHandlerMapping : Mapped "{[/metrics || /metrics.json],methods=[GET],produces=[application/vnd.spring-boot.actuator.v1+json || application/json]}" onto public java.lang.Object org.springframework.boot.actuate.endpoint.mvc.EndpointMvcAdapter.invoke()





![]()















org.springframework.boot.actuate.autoconfigure.EndpointWebMvcManagementContextConfiguration,\
org.springframework.boot.actuate.autoconfigure.EndpointWebMvcHypermediaManagementContextConfiguration




56.spring boot 源码解析56-actuator请求处理流程(以EnvironmentEndpoint为例)








--> org.springframework.web.servlet.mvc.method.AbstractHandlerMethodAdapter.handle(HttpServletRequest, HttpServletResponse, Object)
--> org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter.handleInternal(HttpServletRequest, HttpServletResponse, HandlerMethod)
--> org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter.invokeHandlerMethod(HttpServletRequest, HttpServletResponse, HandlerMethod)
--> org.springframework.web.servlet.mvc.method.annotation.ServletInvocableHandlerMethod.invokeAndHandle(ServletWebRequest, ModelAndViewContainer, Object...)
--> org.springframework.web.method.support.InvocableHandlerMethod.invokeForRequest(NativeWebRequest, ModelAndViewContainer, Object...)
--> org.springframework.web.method.support.InvocableHandlerMethod.doInvoke(Object...)
--> org.springframework.boot.actuate.endpoint.EnvironmentEndpoint.invoke() // 最终执行到
57.spring boot 源码解析57-actuator组件:info背后的密码(全网独家)



















spring.info.build.location=classpath:META-INF/build-info.properties # Location of the generated build-info.properties file.
spring.info.git.location=classpath:git.properties # Location of the generated git.properties file.


























