1. 程式人生 > >SpringBoot學習筆記(2) Spring Boot的一些配置

SpringBoot學習筆記(2) Spring Boot的一些配置

外部配置

spring Boot允許使用properties檔案、yaml檔案或者命令列引數作為外部配置

使用@Value註解,可以直接將屬性值注入到你的beans中,並通過SpringEnvironment抽象或繫結到結構化物件來訪問。

以前使用Spring的時候需要通過@PropertySource指明properties檔案位置,然後通過@value注入.

常規屬性配置

properties檔案中增加幾個屬性

  1. server.port=8081
  2. server.context-path=/demo  
  3. #宣告一個name屬性  
  4. user.name=張三  
  5. user.age
    =21

Java

  1. package com.ibigsea.bootdemo;  
  2. import org.springframework.beans.factory.annotation.Value;  
  3. import org.springframework.boot.SpringApplication;  
  4. import org.springframework.boot.autoconfigure.SpringBootApplication;  
  5. import org.springframework.web.bind.annotation.RequestMapping;  
  6. import
     org.springframework.web.bind.annotation.RestController;  
  7. /** 
  8.  * 是Spring Boot專案的核心註解,主要是開啟自動配置 
  9.  */
  10. @SpringBootApplication// same as @Configuration @EnableAutoConfiguration @ComponentScan
  11. @RestController
  12. publicclass App {  
  13.     @Value("${user.name}")  
  14.     private String name;  
  15.     @Value("${user.age}"
    )  
  16.     private Long age;  
  17.     @RequestMapping("/")  
  18.     public String index(){  
  19.         return"Hello Spring Boot, name is " + name + ", age is "+ age;  
  20.     }  
  21.     publicstaticvoid main(String[] args) {  
  22. //      SpringApplication app = new SpringApplication(App.class);
  23. //      app.setBannerMode(Mode.OFF);
  24. //      app.run(args);
  25.         SpringApplication.run(App.class, args);  
  26.     }  
  27. }  

執行結果:


除此之外,Spring Boot 還提供了基於型別安全的配置方式,通過@ConfigurationPropertiesproperties屬性和一個Bean及其屬性關聯,從而實現型別安全的配置

在上面的情景下新增一個UserSetting

  1. package com.ibigsea.bootdemo;  
  2. import org.springframework.boot.context.properties.ConfigurationProperties;  
  3. import org.springframework.stereotype.Component;  
  4. @Component
  5. //通過該註解價值properties檔案內的配置
  6. //通過prefix執行properties配置的字首
  7. @ConfigurationProperties(prefix = "user")  
  8. publicclass UserSetting {  
  9.     private String name;  
  10.     private Long age;  
  11.     public String getName() {  
  12.         return name;  
  13.     }  
  14.     publicvoid setName(String name) {  
  15.         this.name = name;  
  16.     }  
  17.     public Long getAge() {  
  18.         return age;  
  19.     }  
  20.     publicvoid setAge(Long age) {  
  21.         this.age = age;  
  22.     }  
  23. }  

使用


執行結果



日誌配置


Spring boot預設的輸出格式

  1. 2016-07-04 23:47:27.195  INFO 28916 --- [           main] com.ibigsea.bootlog.App                  : Starting App on sea-pc with PID 28916 (E:\workspace\myworkspace\bootlog\target\classes started by bigsea in E:\workspace\myworkspace\bootlog)  
  2. 2016-07-04 23:47:27.201  INFO 28916 --- [           main] com.ibigsea.bootlog.App                  : No active profile set, falling back to default profiles: default  
  3. 2016-07-04 23:47:27.315  INFO 28916 --- [           main] ationConfigEmbeddedWebApplicationContext : Refreshing org.springframework.boot[email protected]75592f8b: startup date [Mon Jul 04 23:47:27 CST 2016]; root of context hierarchy  
  4. 2016-07-04 23:47:28.653  INFO 28916 --- [           main] o.s.b.f.s.DefaultListableBeanFactory     : Overriding bean definition for bean 'beanNameViewResolver' with a different definition: replacing [Root bean: class [null]; scope=; abstract=false; lazyInit=false; autowireMode=3; dependencyCheck=0; autowireCandidate=true; primary=false; factoryBeanName=org.springframework.boot.autoconfigure.web.ErrorMvcAutoConfiguration$WhitelabelErrorViewConfiguration; factoryMethodName=beanNameViewResolver; initMethodName=null; destroyMethodName=(inferred); defined in class path resource [org/springframework/boot/autoconfigure/web/ErrorMvcAutoConfiguration$WhitelabelErrorViewConfiguration.class]] with [Root bean: class [null]; scope=; abstract=false; lazyInit=false; autowireMode=3; dependencyCheck=0; autowireCandidate=true; primary=false; factoryBeanName=org.springframework.boot.autoconfigure.web.WebMvcAutoConfiguration$WebMvcAutoConfigurationAdapter; factoryMethodName=beanNameViewResolver; initMethodName=null; destroyMethodName=(inferred); defined in class path resource [org/springframework/boot/autoconfigure/web/WebMvcAutoConfiguration$WebMvcAutoConfigurationAdapter.class]]  
  5. 2016-07-04 23:47:30.227  INFO 28916 --- [           main] s.b.c.e.t.TomcatEmbeddedServletContainer : Tomcat initialized with port(s): 8080 (http)  
  6. 2016-07-04 23:47:30.245  INFO 28916 --- [           main] o.apache.catalina.core.StandardService   : Starting service Tomcat  
  7. 2016-07-04 23:47:30.245  INFO 28916 --- [           main] org.apache.catalina.core.StandardEngine  : Starting Servlet Engine: Apache Tomcat/8.0.30  
  8. 2016-07-04 23:47:30.371  INFO 28916 --- [ost-startStop-1] o.a.c.c.C.[Tomcat].[localhost].[/]       : Initializing Spring embedded WebApplicationContext  

  • 時間日期 — 精確到毫秒
  • 日誌級別 — ERROR, WARN, INFO, DEBUG or TRACE
  • 程序ID
  • 分隔符 — --- 標識實際日誌的開始
  • 執行緒名 — 方括號括起來(可能會截斷控制檯輸出)
  • Logger名 — 通常使用原始碼的類名
  • 日誌內容

預設情況下ERROR, WARNINFO級別的訊息會輸出到控制檯

可以通過命令列開啟DEBUG或者在properties檔案中新增

  1. Jar -jar xx.jar --debug  

Properties檔案中新增 debug=true即可

如果想要輸出到日誌檔案中,那麼需要在properties檔案中設定logging.filelogging.path屬性


控制日誌級別

通過 logging.level.*= LEVEL(LEVELTRACE,DEBUG,INFO,WARN,FATAL,OFF)中的一個

這樣表示專案中所有的日誌級別都是一樣的.也可以精準控制到具體的一塊

  1. logging.level.org.springframework.web: DEBUG //org.springframework.web包下面的日誌級別是DEBUG的  
  2. logging.level.org.hibernate: ERROR //org.hibernate包下面的日誌級別是ERROR  
  3. logging.level.com.ibigsea.*: INFO //com.ibigsea包下面的日誌級別是INFO  

除了Spring Boot預設的以外,還可以啟用其他各種日誌系統

由於日誌是在ApplicationContext被建立之前初始化,所以不可能在Spring@Configuration檔案中,通過系統屬性和傳統的外部配置檔案依然可以讓日誌系統正常工作


這句話一直無法理解,查詢資料也大都是沒解釋清楚,猜想的話 應該是在pom裡面新增對應日誌依賴,然後在專案新增對應的配置檔案比如這樣的


Spring boot 會自動啟用這個日誌系統

Profile配置

ProfileSpring用來針對不同環境對不同配置提供支援的,全域性Profile配置使用

application-{profile}.properties :application-prod.properties

在本地模擬出一個開發環境和生產環境

建立application-prd.properties 和 application-dev.properties

專案結構


application-dev.properties

  1. server.port=8081  

application-prd.properties

  1. server.port=8082  

application.properties

  1. spring.profiles.active=prd  

啟動結果


修改spring.profiles.activedev並啟動


除了上面這種配置方式,我們還有一種更簡便的方式來配置多種環境,通過命令列引數配置

刪除多餘的properties檔案


application.yml

  1. server :  
  2.  port : 8081  
  3. ---  
  4. spring :  
  5.   profiles : dev  
  6. server :  
  7.   port : 8082  

預設是prd環境 


在啟動的時候增加引數 spring.profiles.active=dev


右擊顯示選單選擇run configurations

新增命令列引數 




OK 實驗成功

將程式打包之後 通過 java -jar xx.jar --spring.profiles.active=dev的方式啟動

相關推薦

SpringBoot學習筆記(2) Spring Boot一些配置

外部配置 spring Boot允許使用properties檔案、yaml檔案或者命令列引數作為外部配置 使用@Value註解,可以直接將屬性值注入到你的beans中,並通過Spring的Environment抽象或繫結到結構化物件來訪問。 以前使用Spring的

kafka學習筆記(三)spring boot整合kafka0.9.0.1(使用配置類)

spring boot 版本:1.5.6引入關於kafka的相關jar         <dependency>          <groupId>org.springframework.kafka</groupI

ElasticSearch學習筆記--2、ES相關配置

last 學習 -- code logs 相關數 clas 名稱 config 1、配置文件 ES的配置文件位置:config/elasticsearch.yml可以直接搜索elasticsearch.yml 2、配置遠程api訪問 network.host: 192

SpringBoot學習筆記(1):配置Mybatis

target oca run class .com gpo connect auto users SpringBoot學習筆記(1):配置Mybatis 參考資料:   1.AndyLizh的博客   2.xiaolyuh123的博客 快速開始 添加Mybatis依賴(

SpringBoot學習(二)-->Spring的Java配置方式

play sin ext ryu 代碼 容器 技術 測試結果 支持 二、Spring的Java配置方式 Java配置是Spring4.x推薦的配置方式,可以完全替代xml配置。 1、@Configuration 和 @Bean Spring的Java配置方式是通過 @

SpringBoot學習筆記10——spring-data-jpa之分頁查詢

今天我們來學習一下spring-data-jpa的分頁查詢的實現 在上次初探JPA之後我們接下來學習分頁查詢,本篇部落格是接上一篇的,如果有需要了解jpa配置的話可以看上一篇部落格https://blog.csdn.net/lp840312696/article/details/83549937

SpringBoot學習筆記09——spring-data-jpa初探

大家對JPA的褒貶不一,如果想弄清楚JPA是什麼、值不值得用大家可以自行百度,博主這裡就不再多說,因為說可能也說不明白,所以話不多說直接講乾貨! 1.引入依賴 下邊是整個dao曾模組的pom檔案,世界上JPA的以來只有一個,已經添加了註釋 <?xml version="1.0" e

SpringBoot學習筆記2 - 20181128

一.Springboot常見錯誤總結 控制檯亂碼問題(外掛啟動,控制檯亂碼問題) 在pom檔案,springboot外掛啟動中,增加如下(一些虛擬機器方法) <plugin> <groupId>org.springframework.bo

Spring Boot學習筆記Spring Boot 和 activeMQ整合)

Spring Boot學習筆記使用步驟: Spring Boot:並不是不對 Spring 功能上的增強,而是提供了一種快速使用 Spring 的方式。 使用步驟: 1、起步依賴:pom.xml中配置起步依賴,會自動匯入spring相關的許多jar包 <

微服務學習筆記--使用Spring Boot Actuator監控端點

目錄 前言 微服務的這種架構雖然解決了單體應用的一些劣勢,但它也面臨一些挑戰,比如對運維的要求更高了。一個微服務架構中可能有幾十個上百個應用構成,要保證這些應用都正常執行,相互協調是比較麻煩的事情,因此我們需要一個元件來對這些應用進行監控和管理

springboot學習筆記(一):基礎程式和配置

1 , springboot 介紹(來自百度百科) 簡介 微服務是一個新興的軟體架構,就是把一個大型的單個應用程式和服務拆分為數十個的支援微服務。一個微服務的策略可以讓工作變得更為簡便,它可擴充套件單個元件而不是整個的應用程式堆疊,從而滿足服務等級協議。

SpringCloud學習筆記015---Spring Boot整合RabbitMQ傳送接收JSON

在Spring Boot 整合RabbitMQ一文中介紹瞭如何整合RabbitMQ。預設情況下發送的訊息是轉換為位元組碼,這裡介紹一下如何傳送JSON資料。 ObjectMapper 最簡單傳送JSON資料的方式是把物件使用ObjectMapper等JSON工具類把物件轉

CKEditor學習筆記2(CKEditor基本配置修改)

第二篇,圍繞這5個問題進行基本配置: 1、自定義ToolbarSet,去掉一些功能 2、加上幾種常用的字型 3、修改“回車”和“Shift+回車”的換行行為 4、修改編輯區樣式檔案 5、更換表情圖片 這些資訊的配置,可以通過config.js檔案進行,當然也可以建立自己的配

SpringBoot學習:使用spring-boot-devtools進行熱部署

1.新增架包<!--支援熱啟動jar包--> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spr

springboot學習: 初識Spring Boot框架,搭建第一個專案!

專案建立初次接觸,我們先來看看如何建立一個Spring Boot專案,這裡以IntelliJ IDEA為例,其他的IDE工具小夥伴們自行搜尋建立方式:首先建立一個專案,建立時選擇Spring Initializr,然後Next,如下圖:填寫專案資訊,如下圖:填寫專案使用到的技

spring boot 2.1學習筆記【四】屬性配置

spring boot 2.1系列文章目錄 文章目錄 常規屬性配置 @value 啟動引數 application.properties 型別安全的屬性配置(強烈推薦)

SpringBoot學習筆記——Spring Boot配置檔案

    SpringBoot工程建立時會自動生成application.properties檔案,這個檔案專門存放配置資訊。    但是目前預設的配合檔案已經不能滿足我了,需要自己配置一些資訊。    第一、application.properties有一些預設的也是固定的屬

《Gradle構建SpringBoot學習筆記》第二章:建立基於Gradle構建的Spring Boot Web專案

1.生成初始化專案 通過 SpringBoot 官方提供的 Spring Initializr初始化一個Web專案,網址為https://start.spring.io/,瀏覽器開啟該網址顯示如下 選擇構建Gradle Project,語言選擇Java,Spr

SpringBoot 學習(一)---- SpringBoot 核心 之 Spring Boot基本配置介紹

一、關閉某個自動配置 通過上一篇 @SpringBootApplication 下的 @EnableAutoConfiguration 可知,Spring Boot 會根據專案中的jar包依賴,自動做出配置,Spring Boot支援的部分自動配置如下圖(非常多):

Spring boot學習筆記2--pom.xml初探究

新建的springboot_study專案的pom.xml結構如下: <parent> <groupId>org.springframework.boot</groupId> <artifactId&g