1. 程式人生 > >Spring Boot快速入門 (一)

Spring Boot快速入門 (一)

environ UC .get 實體 MF proc this random rop

1、IDE工具的安裝和使用
  • 1.1、下載IDE

    • Spring Tool Suite
    • Eclipse
  • 1.2、介紹

    • maven是學習Spring Boot必備之一
    • Spring Tool Suite可快速搭建Spring Boot項目
  • 1.3、Spring Boot項目結構預覽
    技術分享圖片

2、RESTfull API簡單項目的快速搭建

  • 2.1、搭建一個簡單的RESTfull API接口項目
    技術分享圖片

  • 2.2、引入spring-boot-starter-web
    技術分享圖片

  • 2.3、引入spring-boot-devtools
    技術分享圖片

  • 2.4、代碼的實現

    User.java:

    import java.util.Date;
    
    /**
     * 實體類
     */
    public class User {
        private int id;
        private String name;
        private Date date;
    
        public int getId() {
            return id;
        }
    
        public void setId(int id) {
            this.id = id;
        }
    
        public String getName() {
            return name;
        }
    
        public void setName(String name) {
            this.name = name;
        }
    
        public Date getDate() {
            return date;
        }
    
        public void setDate(Date date) {
            this.date = date;
        }
    }

    IndexController.java:

    import java.util.Date;
    import java.util.HashMap;
    
    import org.springframework.web.bind.annotation.PathVariable;
    import org.springframework.web.bind.annotation.RequestMapping;
    import org.springframework.web.bind.annotation.RequestParam;
    import org.springframework.web.bind.annotation.RestController;
    
    import com.roncoo.education.bean.User;
    
    /**
     * spring-boot-demo-2-1
     */
    @RestController
    @RequestMapping(value = "/index")
    public class IndexController {
    
        @RequestMapping
        public String index() {
            return "hello world";
        }
    
        // @RequestParam 簡單類型的綁定,可以出來get和post
        @RequestMapping(value = "/get")
        public HashMap<String, Object> get(@RequestParam String name) {
            HashMap<String, Object> map = new HashMap<String, Object>();
            map.put("title", "hello world");
            map.put("name", name);
            return map;
        }
    
        // @PathVariable 獲得請求url中的動態參數
        @RequestMapping(value = "/get/{id}/{name}")
        public User getUser(@PathVariable int id, @PathVariable String name) {
            User user = new User();
            user.setId(id);
            user.setName(name);
            user.setDate(new Date());
            return user;
        }
    
    }
  • 2.5、運行項目

    • 直接運行main方法或者使用maven命令: spring-boot:run
    • 測試: http://localhost:8080/index
    • 帶參數:http://localhost:8080/index/get?name=wujing
    • 帶參數有中文:http://localhost:8080/index/get?name=測試
    • url測試:http://localhost:8080/index/get/1/wujing
    • url測試:http://localhost:8080/index/get/1/測試
  • 2.6、打包
    • 命令: clean package
      技術分享圖片
      技術分享圖片
    • 運行命令: java –jar roncoo-education-0.0.1-SNAPSHOT.jar

3、配置文件詳解:Properties和YAML

  • 3.1、配置文件的生效順序,會對值進行覆蓋:

    • 1.@TestPropertySource 註解
    • 2.命令行參數
    • 3.Java系統屬性(System.getProperties()
    • 4.操作系統環境變量
    • 5.只有在random.*裏包含的屬性會產生一個RandomValuePropertySource
    • 6.在打包的jar外的應用程序配置文件(application.properties,包含YAML和profile變量)
    • 7.在打包的jar內的應用程序配置文件(application.properties,包含YAML和profile變量)
    • 8.在@Configuration類上的@PropertySource註解
    • 9.默認屬性(使用SpringApplication.setDefaultProperties指定)
  • 3.2、配置隨機值(自定義,只有重啟項目才會重新生成隨機值)

    roncoo.secret=${random.value}
    roncoo.number=${random.int}
    roncoo.bignumber=${random.long}
    roncoo.number.less.than.ten=${random.int(10)}
    roncoo.number.in.range=${random.int[1024,65536]}
    • 讀取使用註解:@Value(value = "${roncoo.secret}")
    • 註:出現黃點提示,是要提示配置元數據,可以不配置
  • 3.3、屬性占位符

    當application.properties裏的值被使用時,它們會被存在的Environment過濾,所以你能夠引用先前定義的值(比如,系統屬性)。

    roncoo.name=www.roncoo.com
    roncoo.desc=${roncoo.name} is a domain name
  • 3.4、Application屬性文件,按優先級排序,位置高的將覆蓋位置低的

    • 1.當前目錄下的一個/config子目錄
    • 2.當前目錄
    • 3.一個classpath下的/config
    • 4.classpath根路徑(root—默認生成路徑)
    • 這個列表是按優先級排序的(列表中位置高的將覆蓋位置低的)
  • 3.5、配置應用端口和其他配置的介紹

    #端口配置:
    server.port=8090
    #時間格式化
    spring.jackson.date-format=yyyy-MM-dd HH:mm:ss
    #時區設置(若使用jackson格式化時間字符串需設置本地時區,默認是美國的時區)
    spring.jackson.time-zone=Asia/Chongqing
  • 3.6、使用YAML代替Properties
    • 註意寫法:冒號後要加個空格

4、配置文件-多環境配置

  • 4.1、多環境配置的好處

    • 1.不同環境配置可以配置不同的參數
    • 2.便於部署,提高效率,減少出錯
  • 4.2、Properties多環境配置

    • 1.配置激活選項
      • spring.profiles.active=dev
    • 2.添加其他配置文件
      技術分享圖片
  • 4.3、YAML多環境配置
    ① 配置激活選項

    spring:
      profiles:
        active: dev

    ② 在配置文件添加三個英文狀態下的短橫線即可區分不同文件

    ---
    spring:
      profiles: dev
  • 4.4、兩種配置方式的比較

    • 1.Properties配置多環境,需要添加多個配置文件,YAML只需要一個配件文件
    • 2.書寫格式的差異,yaml相對比較簡潔,優雅
    • 3.YAML的缺點:不能通過@PropertySource註解加載。如果需要使用@PropertySource註解的方式加載值,那就要使用properties文件。
  • 4.5、運行使用
    • java -jar myapp.jar --spring.profiles.active=dev

5、致謝名單

  • 馮永偉

Spring Boot快速入門 (一)