SpringBoot入門(一)



1 簡介

Spring Boot是快速搭建Spring工程的腳手架,簡化配置與依賴關係(約定大於配置),讓咱們把精力集中在業務部分java




2 簡單入門事例

建立一個Hello World的Web工程mysql


2.1 建立Maven工程

直接Next -> 填寫工程座標 -> 建立web


2.2 添加pom.xml依賴

父工程管理jar包,沒有業務代碼,子工程須要jar包時不用寫版本號spring

<!--  父工程  -->
<parent>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-parent</artifactId>
    <version>2.1.5.RELEASE</version>
</parent>

<!--  設置JDK版本  -->
<properties>
    <java.version>1.8</java.version>
</properties>

<!--  添加依賴  -->
<dependencies>
    <!--  場景啓動器  -->
    <dependency>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-web</artifactId>
    </dependency>
</dependencies>


2.3 建立主程序類Application

注意Application要放在根目錄下,由於會去Application的同級目錄去掃描,注意左邊有層級結構sql

@SpringBootApplication
public class Application {

    public static void main(String[] args) {

        //SpringBoot啓動
        SpringApplication.run(Application.class,args);
    }
}


2.4 建立Controller

@RestController
public class HelloController {

    //請求映射
    @RequestMapping(value = "hello",method = RequestMethod.GET)
    public String hello(){
        return "Hello Worlddddd";
    }
}


2.5 啓動並測試

啓動SpringBoot應用瀏覽器

打開瀏覽器測試成功app

總結maven

  • 父工程管理各類依賴,Spring已經幫咱們測試好各版本之間的關係了,因此添加依賴不用版本號
  • 啓動器幫咱們導入各類場景所須要組件
  • @SpringBootApplication標註說明這個類是主配置類,運行該類的main方法來啓動SpringBoot應用




3. 自動配置

咱們來看看@SpringBootApplication這個組合註釋,底層還包括兩個註解spring-boot


  • @SpringBootConfiguration:SpringBoot的配置類,標註在類上表示該類是個配置類測試

    • 它底層又有@Configuration:Spring的註解,放在配置類上

      • 配置類--配置文件:配置類也是容器中的一個組件:@Component
  • @EnableAutoConfiguration:開啓自動配置,之前須要配置的東西,SpringBoot幫咱們自動配置

    • 它底層有@AutoConfigurationPackage:自動配置包

      • Import(AutoConfigurationPackages.Registrar.class):Spring底層註解,給容器導入組件,即將主程序同級及下面子包全部組件掃描到Spring容器中
    • @Import(.AutoConfigurationImportSelector.class):導入組件的選擇器,會給容器導入很是多的自動配置類(xxxAutoConfiguration),並配置好對應的組件

  • 有了自動配置類就免去了手動編寫配置注入組件了,其實現由SpringFactoriesLoader.loadFactoryNames(EnableAutoConfiguration.class,classLoader)完成


總結:SpringBoot啓動時從類路徑下META_INF/spring.factories獲取EnableAutoConfiguration指定的值,將這些值做爲自動配置類導入到容器中,自動配置類就生效,幫咱們進行自動配置工做



4. 配置文件

  • 名字是固定以application開頭的

  • 有兩種方式application.properties和application.yml
  • 用來修改SpringBoot默認配置


4.1 讀取配置文件(這裏以yml爲事例)

  • 首先要在resources下建立application.yml配置文件,而後在裏面輸入須要被讀取的數據
jdbc:
  driverclassName: com.mysql.jdbc.Driver
  url: jdbc:mysql://localhost:3306/test?serverTimezone=UTC
  username: root
  password: howl
  • 建立bean類,把配置的屬性值寫入bean對象中
  • 須要用到@ConfigurationProperties()註解,該註解須要導入依賴
<!--  註解解析器  -->
<dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-configuration-processor</artifactId>
    <optional>true</optional>
</dependency>
  • 只有這個對象是容器中的組件,才能使用容器的@ConfigurationProperties功能
/*
 * @ConfigurationProperties把配置文件的屬性注入該類中
 */
@Component
@ConfigurationProperties(prefix = "jdbc")
public class JDBC {
    private String driverclassName;
    private String url;
    private String username;
    private String password;

    //各類Getters和Setters
}
  • 結構圖

  • 最後
    再次啓動Web應用,application.yml中以jdbc爲前綴的屬性會自動注入到JDBC這個對象組件中去


經常使用註解

//將配置文件的屬性注入到該對象中,只有這個註解是生效的,須要配合@EnableConfigurationProperties註解,或加入@Component註解
@ConfigurationProperties(prefix = "jdbc")

//屬性注入
@value

//使對應的配置文件生效加入到Bean容器
@EnableConfigurationProperties(JDBCProperties.class)

//聲明一個類爲配置類,代替xml文件,通常配合@Bean註解
@Configuration
//聲明在方法上,將返回值加入Bean容器,代替<bean>標籤
@Bean

//------------推薦使用上面來指定配置文件,在主目錄下創一個config包-------------

//指定外部屬性文件,這時還沒生效,須要配合下面的註解
@PropertySource(value = {"classpath:other.properties"})
//加載多個配置文件,放在主程序類上
@ImportResourcec(locations = {"classpath:other.yml"})


@ConfigurationProperties和@value區別

@ConfigurationProperties @value
功能 批量注入配置 單個指定
鬆散綁定 支持 不支持
SpEL 不支持 支持
JSR303數據校驗 支持 不支持
複雜數據類型 支持 不支持




4.2 Profile

  • 在不一樣環境下須要使用不一樣的配置文件,這裏就能夠用Profile

  • 名稱規範 application-{profile}.yml / properties
  • 默認是application.yml /properties裏的配置


咱們在resources下創建兩個配置文件

  • application.yml(用於部署配置)
  • application-dev.yml(用於生產環境)

兩者用上面的JDBC配置文件,不一樣於username,一個爲root,一個爲Howl


激活測試

# 在application.yml主配置文件中添加下面配置
spring:
  profiles:
    active: dev

Controller代碼

//請求映射
@RequestMapping(value = "hello",method = RequestMethod.GET)
public String hello(){
    return jdbc.getUsername();
}

未激活dev前,username爲root

激活dev後爲,username爲Howl

相關文章
相關標籤/搜索