1. 程式人生 > 其它 >springboot profile_SpringBoot簡單配置

springboot profile_SpringBoot簡單配置

技術標籤:springboot profilespringboot 中文亂碼springboot 日誌亂碼springboot+jsp中文亂碼springboot接收中文亂碼

使用Spring Boot,配置工作將會變得更加簡單,我們只需要在application.properties中定義屬性,然後在程式碼中直接使用@Value注入即可。

如下:

book.author=xxxbook.name=yyybook.pinyin=測試

這裡專門設定了中文,因為中文不做特殊處理會亂碼,處理方式為繼續在application.properties中新增如下程式碼:

server.tomcat.uri-encoding=UTF-8spring.http.encoding.charset=UTF-8spring.http.encoding.enabled=truespring.http.encoding.force=true spring.messages.encoding=UTF-8

然後 在IntelliJ IDEA中依次點選File -> Settings -> Editor -> File Encodings

將Properties Files (*.properties)下的Default encoding for properties files設定為UTF-8,將Transparent native-to-ascii conversion前的勾選上。

在變數中通過@Value直接注入就行了,如下:

@Value(value = "${book.author}")    private String bookAuthor;    @Value("${book.name}")    privateStringbookName;@Value("${book.pinyin}")privateStringbookPinYin;

型別安全的配置

剛剛說的這種方式我們在實際專案中使用的時候工作量略大,因為每個專案要注入的變數的值太多了,這種時候我們可以使用基於型別安全的配置方式,就是將properties屬性和一個Bean關聯在一起,這樣使用起來會更加方便。我麼來看看這種方式怎麼實現。

1.在src/main/resources資料夾下建立檔案book.properties

檔案內容如下:

book.name=紅樓夢book.author=曹雪芹book.price=28

2.建立Book Bean,並注入properties檔案中的值

程式碼如下:

@[email protected](value= "book.properties")@ConfigurationProperties(prefix = "book")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;    }}

prefix是指字首,location指定要注入檔案的位置。

3.新增路徑對映

在Controller中新增如下程式碼注入Bean:

@AutowiredprivateBookBeanbookBean;

新增路徑對映:

@RequestMapping("/book")    public String book() {          return "Hello Spring Boot! The BookName is "+bookBean.getName();}

執行效果如下:

b41dda69576619fc2cc209725962a0f2.png

日誌配置

預設情況下Spring Boot使用Logback作為日誌框架,也就是我們前面幾篇部落格中用到的列印日誌方式,當然如果有需要我們可以手動配置日誌級別以及日誌輸出位置,相比於我們在Spring容器中寫的日誌輸出程式碼,這裡的配置簡直就是小兒科了,只需要在application.properties中新增如下程式碼:

logging.file=/home/sang/workspace/log.loglogging.level.org.springframework.web=debug

上面表示配置日誌輸出位置,下面配置日誌級別。

Profile配置問題

Spring Boot 提供了更為簡潔的方式。全域性Profile配置我們使用application-{profile}.properties來定義,然後在application.properties中通過spring.profiles.active來指定使用哪個Profile。

1.在src/main/resources資料夾下定義不同環境下的Profile配置檔案,檔名分別為application-prod.properties和application-dev.properties,這兩個前者表示生產環境下的配置,後者表示開發環境下的配置,如下:

ca7a61c0844670bb54a896e37e63eff6.png

application-prod.properties:

server.port=8081

application-dev.properties:

server.port=8080

然後在application.properties中進行簡單配置,如下:

spring.profiles.active=dev

這個表示使用開發環境下的配置。然後執行專案,我們得通過8080端口才可以訪問:

5cd544c817d7bded68d27a9a74bed16b.png

如果想換為生產環境,只需要把spring.profiles.active=dev改為spring.profiles.active=prod即可,當然訪問埠這時也變為8081了,如下:

8fbe0187e7a6f5ccbe574cd0ff60403a.png

SpringBoot配置時,也可以用yml來配置,用yml來配置的話,結構相對要清晰很多。

注意點:

1,原有的key,例如

server.port

,按“.”分割,都變成樹狀的配置

server:  prot: 8081

2,key後面的冒號,後面一定要跟一個空格

#application.ymlserver:  port: 8080   spring:    datasource:        name: test        url: jdbc:mysql://127.0.0.1:3306/test        username: root        password: xxx

兩者的區別

1.內容格式比較:

.properties檔案,通過.來連線,通過=來賦值,結構上,沒有分層的感覺,但比較直接。

.yml檔案,通過:來分層,結構上,有比較明顯的層次感,最後key賦值的:後需要留一個空格

2.執行順序

如果工程中同時存在application.properties檔案和 application.yml檔案,yml檔案會先載入,而後載入的properties檔案會覆蓋yml檔案。所以建議工程中,只使用其中一種型別的檔案即可。