SpringBoot-尚硅谷筆記

一、hello world

目的:簡化spring開發

技術棧:spring全家桶

J2EE一站式解決方案

優點

  • 與主流框架集成
  • 嵌入tomcat,直接生成jar包
  • starters啓動器,自動配置依賴和版本管理
  • 無需xml,開箱即用
  • 提供準生產環境的應用監控
  • 與雲計算集成

發展過程:

  1. 單體應用:所有的都寫在一個應用裏,牽一髮動全身
  2. 微服務:獨立功能元素,動態組合,節省資源,服務耦合降低

課程學習:穀粒學院、博學谷

知識前提:

  1. Spring框架掌握
  2. Maven掌握
  3. IDEA掌握

環境約束:

  1. jdk1.8
  2. maven3.x
  3. IDEA2017以上
  4. springboot 1.5.9 release

配置

maven添加配置

	<profile>
      <id>jdk-1.8</id>
      <activation>
        <activeByDefault>true</activeByDefault>
        <jdk>1.8</jdk>
      </activation>
      <properties>
        <maven.compiler.source>1.8</maven.compiler.source>
        <maven.compiler.target>1.8</maven.compiler.target>
        <maven.compiler.compilerVersion>1.8</maven.compiler.compilerVersion>
        <maven.compiler.encoding>utf-8</maven.compiler.encoding>
      </properties>
    </profile>

IDEA配置

配置默認maven爲指定maven

hello world

需求:瀏覽器發送hello請求,服務器返回處理結果

1.創建普通maven工程,無骨架

2.添加maven依賴

包括父工程依賴和springweb依賴,此處打包爲jar

    <!-- Inherit defaults from Spring Boot -->
    <parent>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-parent</artifactId>
        <version>2.2.5.RELEASE</version>
    </parent>
    <!-- Add typical dependencies for a web application -->
    <dependencies>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-web</artifactId>
        </dependency>
    </dependencies>
    
    <!-- Package as an executable jar -->
    <build>
        <plugins>
            <plugin>
                <groupId>org.springframework.boot</groupId>
                <artifactId>spring-boot-maven-plugin</artifactId>
            </plugin>
        </plugins>
    </build>

3.編寫主程序

要掌握的註解:@SpringBootApplication。標誌這是一個Springboot的應用,此時註解在主函數類外

main方法中:

SpringApplication.run(main類字節碼文件,args)

4.編寫controller文件

要掌握的註解:@Controller。表示這個類爲控制類,映射請求

要掌握的註解:@RequestMapping。表示這個方法所映射的請求

要掌握的註解:@ResponseBody。表示這個方法會返回一個值給response

細代碼可以參考springboot環境配置日誌

5.看效果

可以直接工程中點擊運行查看,然後去瀏覽器訪問查看效果,也可以maven package打包成jar,然後:

java -jar xxx

然後瀏覽器訪問即可

細節一二

  • RESTAPI解釋
    服務器請求,處理後不是跳轉頁面,而是返回內容

如果某個controller類的所有mapping方法都是返回一個內容(字符串或者json),那麼可以將@ResponseBody加到類上面。

要掌握的註解:@RestController。這個爲:@ResponseBody+@Controller

使用spring initializer快速生成springboot項目

生成項目的目錄結構:

  • 主程序已經生成好
  • resources文件夾:
    • static:保存靜態資源:js css images
    • templates:存放模板引擎,默認jar包使用嵌入式tomcat,不支持jsp頁面
    • application.properties:springboot應用配置文件,用來改變默認配置

二、springboot配置

配置文件

  • applicatin.properties
  • application.yml

用來改變springboot默認配置,路徑:src/main/resource或者類路徑/config

yml配置實例:

server:
    port: 8081

yml語法

基本語法

key: value
注意:key和value之間嚴格【空格】約定!同一縮進下的kv屬於同一層級

不能是tab,只能是空格

注意事項:

  • 屬性值中單引號中可以轉義,雙引號不會轉移,字符串默認不用加引號
  • 對象表示可以用行內寫法:friends: {lastname: ddd,age: 18}
  • 數組使用橫槓空格表示元素
    #普通寫法
    pets:
      - cat
      - dog
      - pig
    #行內寫法
    pets: [cat,dog,pig]
    

配置文件注入javabean

配置文件內容:

person:
    name: abc
    age: 18
    dog:
      name: gaga
      age: 2
    lists:
      - abc
      - gaga

其中,person下的第一個層級都與javabean中的屬性一一對應。

在Person類中,需要加上註解:@Component@ConfigurationProperties(prefix="person")

要掌握的註解:@ConfigurationProperties(prefix="person")。用於將配置文件內的對應屬性映射到javabean上,其中prefix表示選定的配置文件字段,默認從全局配置文件中獲取值

要掌握的註解:@PropertySource(...)。用於指定配置文件路徑,可以指定多個,當需要獲取其他文件裏的配置需要加該註解

要掌握的註解::@Component。該註解將當前類加入容器管理,標識爲spring的組件,這樣才能使用第六個註解的功能

注意事項:

  • 使用上面的註解後會提示導入配置文件註解處理器包:
    <!--導入配置文件處理器後,配置文件中寫綁定信息會有提示-->
    

驗證注入情況

採用spring的測試類來查看注入情況

在test-java-包下有個測試類,包含兩個註解:@RunWith(SpringRunner.class)@SpringBootTest,在測試類中寫上Person person;並註解:@Autowired,然後定義一個方法輸出該字段,並給該方法註解@Test

要掌握的註解:@RunWith(SpringRunner.class)。表示當前測試類使用的測試驅動器爲springrunner,當然也可以指定爲junit等

要掌握的註解:@SpringBootTest。表示當前類爲springboot的測試類

要掌握的註解:@Autowired。表示當前類字段自動從spring容器中注入匹配的javabean

要掌握的註解:@Test。表示當前方法爲需要測試的方法,必須註解在測試類中

properties語法

直接看:

#由於idea默認properties使用utf-8編碼,
#而程序運行時默認採用ascii編碼,
#所以輸出中文會亂碼,在idea的file encoding中設置運行時轉碼爲ascii
person.last-name=abc
person.age=18
person.dog.name=gaga
person.dog.age=1
person.maps.k1=v1
person.map.k2=v2

要掌握的註解:@Value("${person.last-name})。該註解放在javabean類中的屬性上,表示從spring容器中取出哪個值注入到當前屬性中,value中也支持el表達式:@Value("#{11*2})會將22注入

注意:@ConfigurationProperties和@Value

  • 鬆散綁定:

在這裏插入圖片描述

只用configurationproperties支持鬆散綁定

  • spel語法:只有Value支持,畢竟另一個是統一注入的
  • jsr303校驗:ConfigurationProperties支持,如類上加:@Validated,字段上加:@Email,則當前字段必須爲郵箱格式,Value不支持
  • Value註解在複雜類型封裝時不支持,只能注入基本數據類型
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章