1. 程式人生 > >簡單分析springboot的原始碼

簡單分析springboot的原始碼

springboot的pom檔案的起步依賴以及功能依賴

每一個版本的起步依賴中,都集成了相應的一整套的功能依賴,所需要的一套依賴

springboot的起步依賴註解@SpringBootApplication簡單分析

@SpringBootApplication註解包含以下主要的註解,在起步依賴上加入以下註解也可以實現springboot的起步依賴配置

  1. @SpringBootConfiguration:
    其本質是**@Configuration**註解,宣告該類為配置類
  2. @EnableAutoConfiguration:
    自動配置註解:
    包含:@Import({AutoConfigurationImportSelector.class})註解,此註解表明該註解需要引入AutoConfigurationImportSelector類的資訊
    →AutoConfigurationImportSelector
    :該方法是載入自動配置的主要方法
    →selectImports:在此方法中載入自動配置的
    →this.getAutoConfigurationEntry
    →this.getCandidateConfigurations:在這裡會發現一句話:No auto configuration classes found in META-INF/spring.factories,找到該類對應的包(package org.springframework.boot.autoconfigure)對應的META-INF/spring.factories檔案,點開之後發現有很多的全類名
    隨便點開一個類(例如:ServletWebServerFactoryAutoConfiguration),找到(@EnableConfigurationProperties({ServerProperties.class})),點開ServerProperties,會發現
@ConfigurationProperties(
prefix = "server",
ignoreUnknownFields = true
)

其中prefix宣告字首為server,例如會載入server. port配置(宣告埠的配置),其中載入的配置在該檔案所在位置對應的spring-configuration-metadata.json檔案中,可以找到

{
"name": "server.port",
"type": "java.lang.Integer",
"description": "Server HTTP port.",
"sourceType": "org.springframework.boot.autoconfigure.web.ServerProperties"
, "defaultValue": 8080 }

該json中間中宣告埠號預設為8080
如果想修改該配置檔案:在pom檔案中spring-boot-starter-parent中已經宣告,會掃描.yml或者是.properties中的配置資訊(必須以指定的字首才會被掃描到),在resources下建立一個application.properties配置檔案,配置檔案中可以指定專案啟動時的埠號或者是專案的名稱:

#指定埠號為8081
server.port=8081
#指定專案的路徑為/dmeo
server.servlet.context-path=/demo
  1. @ComponentScan:
    包掃描註解,該註解表明約定大於配置,會掃描該啟動類下的所有包,將其注入到spring容器中
  2. @Target({ElementType.TYPE}):
    宣告註解的使用範圍,是在類上面或者是介面上面等等
  3. @Retention(RetentionPolicy.RUNTIME)
    宣告註解的生命週期,是在執行時或者是編譯時等等