簡單分析springboot的原始碼
阿新 • • 發佈:2018-12-05
springboot的pom檔案的起步依賴以及功能依賴
每一個版本的起步依賴中,都集成了相應的一整套的功能依賴,所需要的一套依賴
springboot的起步依賴註解@SpringBootApplication簡單分析
@SpringBootApplication註解包含以下主要的註解,在起步依賴上加入以下註解也可以實現springboot的起步依賴配置
- @SpringBootConfiguration:
其本質是**@Configuration**註解,宣告該類為配置類 - @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
- @ComponentScan:
包掃描註解,該註解表明約定大於配置,會掃描該啟動類下的所有包,將其注入到spring容器中 - @Target({ElementType.TYPE}):
宣告註解的使用範圍,是在類上面或者是介面上面等等 - @Retention(RetentionPolicy.RUNTIME)
宣告註解的生命週期,是在執行時或者是編譯時等等