SpringBoot(二)--Eclipse創建SpringBoot項目之HelloWorld熱部署全局Profile配置常規屬性配置

要在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>

image

定製Banner

修改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

演示如下: 

image

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章