1. 程式人生 > 實用技巧 >Springboot入門-01

Springboot入門-01

微服務階段

javaSE : OOP

Mysql: 持久化

html+css+js+jquery+框架: 檢視、框架不熟練、css不熟練。

javaWeb: 獨立開發MVC三層架構網站: 最原始

ssm: 框架,簡化了開發流程,配置也變得較為複雜。

war: tomcat執行

spring再簡化:SpringBoot- jar: 內嵌Tomcat; 微服務架構開始!

服務越來越多: SpringCloud 管理服務。

什麼是微服務?

MVC三層架構 MVVM 微服務結構

業務: service : UserService: ===> 每個服務都獨立成一個模組

springmvc, controller ===> 提供介面呼叫

Http模式、RPC模式

第一個SptingBoot程式

環境:

  • jdk1.8

  • maven 3.5.3

  • IDEA

自動配置原理

自動配置:

pom.xml

  • spring-boot-dependencies: 核心依賴在 父工程中

  • 在引入一些依賴時,不需要在指定版本。因為父工程已定義

啟動器

  • <dependency>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter</artifactId>
    </dependency>

  • 啟動器:就是Springboot的啟動場景(依賴)

  • spring-boot-starter-web 就會自動匯入web環境所需的所有依賴

  • 要使用什麼功能,只需要匯入對應的 starter啟動器就可以。

主程式

//@SpringBootApplication : 標註這個類是一個 springboot的應用
@SpringBootApplication
public class SpringbootApplication {

    public static void main(String[] args) {
        // 將springboot應用啟動。主入口
SpringApplication.run(SpringbootApplication.class, args); } }

註解

@SpringBootConfiguration : springboot的配置
        @Configuration : spring配置類
        @Component: 該類本身就是個元件
            
@EnableAutoConfiguration: 自動配置
        @AutoConfigurationPackage: 自動配置包
            @Import(AutoConfigurationPackages.Registrar.class): 自動配置包`註冊`
            
        @Import(AutoConfigurationImportSelector.class): 自動配置匯入選擇

// 獲取所有的配置
List<String> configurations = getCandidateConfigurations(annotationMetadata, attributes);            
            

獲取候選的配置

protected List<String> getCandidateConfigurations(AnnotationMetadata metadata, AnnotationAttributes attributes) {
        List<String> configurations = SpringFactoriesLoader.loadFactoryNames(getSpringFactoriesLoaderFactoryClass(),
                getBeanClassLoader());
        Assert.notEmpty(configurations, "No auto configuration classes found in META-INF/spring.factories. If you "
                + "are using a custom packaging, make sure that file is correct.");
        return configurations;
    }

META-INF/spring.factories: 自動配置的核心檔案

路徑在: spring-boot-autoconfigure-2.2.0.RELEASE.jar/META-INF/spring.factories 檔案中

Properties properties = PropertiesLoaderUtils.loadProperties(resource);
所以資源載入到配置類中

結論: spring boot所有自動配置都是在啟動的時候掃描並載入,spring.factories所有的的自動配置類都在這裡,但不一定生效。要判斷條件是否成立,只有匯入了相應的啟動器,自動配置才會生效。

  1. Springboot在啟動的時候從類路徑下 META-INF/spring.factiries中獲取 EnableAutoConfiguration指定的值。

  2. 將這些值指定的自動配置類匯入到容器,自動配置類就會生效,前提必須要有對應的starter場景啟動器。

幫助我們完成自動配置工作。

  1. 整個javaEE體系的解決方案和自動配置都在 springboot-autoconfiguration的jar包中。

  2. 它將所有需要匯入的元件以全類名的方式返回。這些元件會被新增到容器中。

  3. 它會給容器中匯入非常多的自動配置類。格式為(xxxxAutoConfiguration),就是給容器中這個場景需要的元件,並自動配置好這些元件。

  4. 有了自動配置類,免去了手動去配置編寫注入功能元件的工作。