一、SpringBoot啟動的3種方式
第一種:借助IDE工具直接啟動 run as
第二種:mvn命令啟動
1:打開命令行,進入到項目目錄中(我這里還是用上次建立的dog項目來操作)cd E:\Workspaces\Idea\dog
2:mvn spring-boot:run
第三種:使用jar文件啟動
1:在項目目錄下(即E:\Workspaces\Idea\dog)編譯項目
mvn install
2:進入target目錄下
cd target/
3:查看當前路徑下的所有文件和目錄
dir ./
4:找到項目對應的jar文件,我這里是 dog-0.0.1-SNAPSHOT.jar
然后運行java命令:
java -jar java -jar dog-0.0.1-SNAPSHOT.jar
二、SpringBoot的配置文件
1、properties還是yml
默認幫我們生成了resources目錄,我們的配置文件基本上在這個目錄下完善
目錄下還默認提供了一個application.properties文件,我們可以在其中配置訪問端口和路徑
server.port=8081
server.servlet.context-path=/dog
這里修改了默認端口為8081,並且修改了訪問路徑。所以我們不能再使用原來的 http://127.0.0.1:8080/hello
來打招呼了,需要使用新的訪問地址 http://127.0.0.1:8081/dog/hello
在SpringBoot種還提供了另外一種簡便的寫法,就是yml文件
server:
port: 8082
servlet:
context-path: /dog
注意冒號后面需要有一個空格,來和配置的內容隔開
2、多環境配置
加入2個yml文件,分別配置不同的訪問端口,和不同的訪問路徑
新建開發環境的配置:application-dev.yml文件
server:
port: 8083
servlet:
context-path: /dev
新建生產環境的配置:application-pro.yml文件
server:
port: 8084
servlet:
context-path: /pro
修改application.yml文件 指定所要使用的環境的配置,這里我們指向開發環境
spring:
profiles:
active: dev
注意:這里的前綴換成了spring,已經不再是server,訪問使用 http://127.0.0.1:8083/dev/hello
3、多環境同時啟動
這里使用上面介紹的第三種啟動方式 :java -jar的方式來啟動
使用啟動命令時只需要加一些參數,就可以輕松指定我們要使用的配置環境
第一步:啟動前先編譯 mvn (因為我們改動過項目了,不能再使用原來的jar文件啟動)
第二步:java -jar dog-0.0.1-SNAPSHOT.jar --spring.profiles.active=dev
第三步:新打開一個命令行窗口,進入項目的target目錄下,執行java -jar命令
java -jar dog-0.0.1-SNAPSHOT.jar --spring.profiles.active=pro
第四步:測試 http://127.0.0.1:8083/dev/hello http://127.0.0.1:8084/pro/hello都能訪問即成功
4、其他配置
a.項目中讀取配置中的某些無關的值
這里我們在dev環境中進行操作,在application-dev.yml文件中加入一些需要讀取的值
然后在前台拉取,這里使用@Value注解來拉取
前端成功展示
b.配置中使用配置
yml文件中使用EL表達式
controller中還是使用@Value拉取
c.相關的屬性,可以封轉成對象
第一步:在pom.xml中加入依賴
<!--configuration的依賴--> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-configuration-processor</artifactId> <optional>true</optional> </dependency>
第二步:新建一個用來封裝屬性的方法,提供getter、setter方法,並且重寫toString()方法
package com.zmfx.hello; import org.springframework.boot.context.properties.ConfigurationProperties; import org.springframework.stereotype.Component; @Component //由於后面自動裝配@Autowired時能掃描到此類 @ConfigurationProperties(prefix = "dev")//指明了配置文件中前綴為 dev封裝成對象 public class Developer { private String name;//姓名 private Integer age;//年齡 private Integer id;//編號 public String getName() { return name; } public void setName(String name) { this.name = name; } public Integer getAge() { return age; } public void setAge(Integer age) { this.age = age; } public Integer getId() { return id; } public void setId(Integer id) { this.id = id; } @Override public String toString() { return "Developer{" + "name='" + name + '\'' + ", age=" + age + ", id=" + id + '}'; } }
第三步:在yml文件中添加屬性,我這里還是在開發環境application-dev.yml中添加
server:
port: 8083
servlet:
context-path: /dev
pageSize: 20
devName: 紫陌飛雪
content: "pageSize:${pageSize},devName:${devName}"
dev:
name: 紫陌飛雪
age: 26
id: 365
第四步:編寫controller中的控制代碼、新加屬性和方法
//屬性封裝到對象中提取 @Autowired private Developer developer; @RequestMapping(value = "/developer",method = RequestMethod.GET) public String showDeveloper(){ return developer.toString(); }
第五步:在瀏覽器中輸入 http://127.0.0.1:8083/dev/developer 進行測試
三、SpringBoot模板(template)的使用
首先來介紹一下@RestController
它相當於 @Controller+@ResponseBody的簡寫。
@ResponseBody的作用時把返回值回顯到頁面,默認解析成Json格式。不會走視圖解析器
如果把@RestController換成@Controller,頁面會報500,提示你檢查視圖解析器。
SpringBoot官方為我們提供了頁面顯示的模板 thymeleaf
第一步:加入pom.xml的依賴
<!--模板的依賴--> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-thymeleaf</artifactId> </dependency>
第二步:在templates下編寫一個 index.html頁面
<h1>Hello SpringBoot!</h1>
第三步:編寫controller層的代碼
//templates的展示 @RequestMapping(value = {"/t","/temp","/template"} ,method = RequestMethod.GET) public String showIndexHtml(){ return "index"; }
第四步:訪問 http://127.0.0.1:8083/dev/t
http://127.0.0.1:8083/dev/temp
http://127.0.0.1:8083/dev/template
我們發現它的映射規則和在SpringMVC沒什么太大區別,只是不用自己去配置視圖解析器了