要在Eclipse裏使用SpringBoot,首先要安裝下STS插件
注意:STS插件運行必須是JDK1.8 否則會出現安裝失敗的情況;
創建SpringBoot項目創建SpringBoot項目pom.xml文件第一行報錯:Non-parseable POM
或者run as 沒有Spring Boot App-->解決方法
參考-->配置STS插件兩種方法
插件安裝完畢,然後我們來新建一個SpringBoot項目
新建 選擇 Spring Boot->Spring Starter Project
點擊“Next”,顯示
到了配置依賴的界面,暫時不需要用到其他的,僅選擇一個Web依賴即可
然後點擊Finish完成。
HelloWorldApplication是啓動類,我們右擊Run As 選擇 Spring Boot app
我們瀏覽器輸入:http://localhost:8080/
出現這個 說明項目啓動成功;
我們現在配置一個HelloWorld請求
在com.exmple.demo包下,新建一個HelloWorldController類
package com.example.demo;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
@RestController
public class HelloWorldController {
@RequestMapping("/HelloWorld")
public String say(){
return "HelloWorld";
}
}
然後我們重新啓動HelloWorldApplication類
請求 http://localhost:8080/HelloWorld
我們一個簡單的Spring Boot工程已經創建出來了,並且成功的從瀏覽器中訪問到了.
熱部署
當我們修改文件和創建文件時,都需要重新啓動項目。這樣頻繁的操作很浪費時間,配置熱部署可以讓項目自動加載變化的文件,省去的手動操作。
在 pom.xml 文件中添加如下配置:
<dependencies>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-tomcat</artifactId>
<scope>provided</scope>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-test</artifactId>
<scope>test</scope>
</dependency>
<!-- 熱部署 -->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-devtools</artifactId>
<optional>true</optional>
<scope>true</scope>
</dependency>
</dependencies>
<build>
<plugins>
<plugin>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-maven-plugin</artifactId>
<!-- 沒有該配置,devtools 不生效 -->
<configuration>
<fork>true</fork>
</configuration>
</plugin>
</plugins>
</build>
定製Banner
我們在啓動Spring Boot項目的時候,在控制檯會默認輸出一個啓動圖案,如下
當然,這個圖案如果你需要的話是可以自己修改的,修改方式很簡單:
1.在src/main/resources下新建一個banner.txt文檔
2.通過點擊網站生成需要的字符,將字符拷貝到步驟1所創建的txt文檔中,比如我這裏爲springboot生成字符,如下:
來個霸氣的直接複製到banner.txt即可:
_ooOoo_
o8888888o
88" . "88
(| -_- |)
O\ = /O
____/`---'\____
.' \\| |// `.
/ \\||| : |||// \
/ _||||| -:- |||||- \
| | \\\ - /// | |
| \_| ''\---/'' | |
\ .-\__ `-` ___/-. /
___`. .' /--.--\ `. . __
."" '< `.___\_<|>_/___.' >'"".
| | : `- \`.;`\ _ /`;.`/ - ` : | |
\ \ `-. \_ __\ /__ _/ .-` / /
======`-.____`-.___\_____/___.-`____.-'======
`=---='
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
佛祖保佑 永無BUG
點擊Select&Copy按鈕,將這個字符拷貝到txt文檔中,然後再啓動項目,這個時候控制檯輸出的文本就會自動改變,如下:
Spring Boot的配置文件
Spring Boot使用一個全局的配置文件application.properties或者application.yml,配置文件放在src/main/resources目錄下。properties是我們常見的一種配置文件,Spring Boot不僅支持properties這種類型的配置文件,也支持yaml語言的配置文件,我這裏以properties類型的配置文件爲例來看幾個案例。
1.修改Tomcat默認端口和默認訪問路徑
Tomcat默認端口是8080,我將之改爲8081,默認訪問路徑是http://localhost:8080,我將之改爲http://localhost:8081/helloboot,我們來看看這兩個需求要怎麼樣通過簡單的配置來實現。
很簡單,在application.properties文件中添加如下代碼:
server.servlet.context-path=/hello
server.port=8081
常規屬性配置
如果我們使用了Spring Boot,這項工作將會變得更加簡單,我們只需要在application.properties中定義屬性,然後在代碼中直接使用@Value注入即可。
如下:
book.author=羅貫中
book.name=三國演義
book.pinyin=sanguoyanyi
我這裏專門設置了中文,因爲中文不做特殊處理會亂碼,處理方式爲繼續在application.properties中添加如下代碼:
server.tomcat.uri-encoding=UTF-8
spring.http.encoding.charset=UTF-8
spring.http.encoding.enabled=true
spring.http.encoding.force=true
spring.messages.encoding=UTF-8
然後在eclipse中右擊項目->Properties->Resource->Other,將編碼各式設爲“UTF-8”
然後在變量中通過@Value直接注入就行了,如下:
@RestController
public class HelloWorldController {
/*@RequestMapping("/HelloWorld")
public String say(){
return "HelloWorld";
}
@RequestMapping("/HelloWorld2")
public String say2(){
return "HelloWorld2";
}*/
@Value(value = "${book.author}")
private String bookAuthor;
@Value("${book.name}")
private String bookName;
@Value("${book.pinyin}")
private String bookPinYin;
//修改index方法,使之返回這些值:
@RequestMapping(value = "/",produces = "text/plain;charset=UTF-8")
public String index(){
return"Hello Spring Boot! The BookName is "+bookName+";and Book Author is "+bookAuthor+";and Book PinYin is "+bookPinYin;
}
}
類型安全的配置
剛剛說的這種方式我們在實際項目中使用的時候工作量略大,因爲每個項目要注入的變量的值太多了,這種時候我們可以使用基於類型安全的配置方式,
就是將properties屬性和一個Bean關聯在一起,這樣使用起來會更加方便。
1.創建新的配置文件books.properties然後定義屬性直接複製application.properties修改名稱
books.name=紅樓夢
books.author=曹雪芹
books.price=28
server.tomcat.uri-encoding=UTF-8
spring.http.encoding.charset=UTF-8
spring.http.encoding.enabled=true
spring.http.encoding.force=true
spring.messages.encoding=UTF-8
books.name=\u7EA2\u697C\u68A6
books.author=\u66F9\u96EA\u82B9
books.price=28
2.在com.example.demo下創建BookBean實體類,並注入properties文件中的值
@Component註解目的是爲了這個JavaBean可以被SpringBoot項目啓動時候被掃描到並加載到Spring容器之中,
@PropertySource這個註解專門用來加載指定位置的properties文件
@ConfigurationProperties綁定專用註解它的作用就是將指定前綴配置項的值與JavaBean的字段綁定prefix是指前綴
代碼如下:
package com.example.demo;
import org.springframework.boot.context.properties.ConfigurationProperties;
import org.springframework.context.annotation.PropertySource;
import org.springframework.stereotype.Component;
@Component
@PropertySource("classpath:books.properties")
@ConfigurationProperties(prefix = "books")
public class BookBean {
private String name;
private String author;
private String price;
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public String getAuthor() {
return author;
}
public void setAuthor(String author) {
this.author = author;
}
public String getPrice() {
return price;
}
public void setPrice(String price) {
this.price = price;
}
}
3.添加路徑映射
在Controller中添加如下代碼注入Bean:
@Autowired
private BookBean bookBean;
@RequestMapping("/books")
public String book() {
return"Hello Spring Boot! The BookName is "+bookBean.getName()+";and Book Author is "+bookBean.getAuthor()+";and Book price is "
+bookBean.getPrice();
}
運行效果如下:
全局Profile配置多環境切換
application.properties 是 springboot 在運行中所需要的配置信息。
全局Profile配置我們使用application-{profile}.properties來定義,然後在application.properties中通過spring.profiles.active來指定使用哪個Profile
當我們在開發階段,使用自己的機器開發,測試的時候需要用的測試服務器測試,上線時使用正式環境的服務器。
這三種環境需要的配置信息都不一樣,當我們切換環境運行項目時,需要手動的修改多出配置信息,非常容易出錯。
爲了解決上述問題,springboot 提供多環境配置的機制,讓開發者非常容易的根據需求而切換不同的配置環境。
在 src/main/resources 目錄下創建三個配置文件:
application-dev.properties:用於開發環境
application-test.properties:用於測試環境
application-prod.properties:用於生產環境
內容分別爲
server.port=8080
server.port=8081
server.port=8082
我們可以在這個三個配置文件中設置不同的信息,application.properties 配置公共的信息。
在 application.properties 中配置:
spring.profiles.active=dev
#spring.profiles.active=test
#spring.profiles.active=prod
演示如下: