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();}
執行效果如下:
日誌配置
預設情況下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,這兩個前者表示生產環境下的配置,後者表示開發環境下的配置,如下:
application-prod.properties:
server.port=8081
application-dev.properties:
server.port=8080
然後在application.properties中進行簡單配置,如下:
spring.profiles.active=dev
這個表示使用開發環境下的配置。然後執行專案,我們得通過8080端口才可以訪問:
如果想換為生產環境,只需要把spring.profiles.active=dev改為spring.profiles.active=prod即可,當然訪問埠這時也變為8081了,如下:
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檔案。所以建議工程中,只使用其中一種型別的檔案即可。