Spring Boot快速入門 (一)
阿新 • • 發佈:2018-06-26
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/測試
- 直接運行main方法或者使用maven命令:
- 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
指定)
- 1.
-
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
—默認生成路徑) - 這個列表是按優先級排序的(列表中位置高的將覆蓋位置低的)
- 1.當前目錄下的一個
-
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.添加其他配置文件
- 1.配置激活選項
-
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快速入門 (一)