摘要:警告此示例文件僅供參考。在自定義配置屬性添加自定義屬性在引用這個自定義屬性名為密碼為注意在獲取自定義屬性時一定要嚴格按照配置文件來獲取并且里面的字符串一定是花括號花括號里面的表示為里面自定義的字符串,所以本例就是表示為。
簡介
上篇我們做了一些簡單的運行文件的配置,本篇帶領大家來認識常用的一些配置,當然了關于Spring Boot 這些配置太多太多了,如果想了解更多的話直接上官網參考一下,了解相關案例如本篇的配置。 application.properties配置官方指南參考。
在 IntelliJ IDEA 開發工具中創建項目的時候,默認的配置文件是application.properties,接下來我們就學習一下然后配置一些我們在開發中經常用到的配置項,進入帶領我們揭開Spring Boot 項目的神秘的面紗。
在下面的文檔中我會在每個配置中進行注解,這樣能更好的了解,當然官方文檔有我們所需的全部配置,大家如果項目開發中有需求那么可以進入application.properties配置官方指南參考。
英: Appendix A. Common application properties
1. Various properties can be specified inside your application.properties file, inside your application.yml file, or as command line switches. This appendix provides a list of common Spring Boot properties and references to the underlying classes that consume them. 2. [Note] Property contributions can come from additional jar files on your classpath, so you should not consider this an exhaustive list. Also, you can define your own properties. 3. [Warning] This sample file is meant as a guide only. Do not copy and paste the entire content into your application. Rather, pick only the properties that you need.
譯: 官方指南者三段話概況了今天我們要講得內容:
1. 可以在application.properties文件中,application.yml文件中或命令行開關中指定各種屬性。 本附錄提供了常用Spring Boot屬性的列表以及對使用它們的基礎類的引用。 2. [注意] 屬性貢獻可以來自類路徑上的其他jar文件,因此您不應將此視為詳盡的列表。 此外,您可以定義自己的屬性。 3. [警告] 此示例文件僅供參考。 不要將整個內容復制并粘貼到您的應用程序中。 相反,只選擇您需要的屬性。
所以我們在添加某些配置屬性的時候,一定要根據自己的需要來添加,不然有時出錯了,不知道哪里找問題。
1. 常用的application.properties配置一般情況下在src目錄下的/main/resource文件夾中新建application.properties文件,目錄結構如下:
|--src |--main |--resources |--application.properties
我們接下來編寫一些常用的屬性配置,大家在開發中需要到哪些就直接去查看一下:
#啟用調試日志。 debug=false #啟用跟蹤日志。 trace=false #-------------------------------------- # LOGGING 日記 #-------------------------------------- # 日志配置文件的位置。 例如,Logback的classpath:logback.xml logging.config=classpath:logback.xml # 日志文件名(例如,`myapp.log`)。名稱可以是精確位置或相對于當前目錄。 logging.file=property.log # 最大日志文件大小。 僅支持默認的logback設置 logging.file.max-size=10MB # 日志文件的位置。 例如,`/ var / log`。 logging.path=/var/log #--------------------------------- # AOP #--------------------------------- # 使用AOP 切面編程 spring.aop.auto=true #是否要創建基于子類的(CGLIB)代理(true),而不是基于標準Java接口的代理(false) spring.aop.proxy-target-class=true #-------------------------------- # Email #-------------------------------- # 編碼格式 spring.mail.default-encoding=UTF-8 # SMTP服務器主機 spring.mail.host=smtp.property.com #SMTP服務器端口 spring.mail.port=7800 # 登錄SMTP用戶名 spring.mail.username=property # 登錄SMTP密碼 spring.mail.password=123456 #-------------------------------- # WEB 屬性配置 #-------------------------------- # 服務器應綁定的網絡地址 server.address=127.0.0.1 # 是否啟用了響應壓縮 server.compression.enabled=false # 連接器在關閉連接之前等待另一個HTTP請求的時間。 未設置時,將使用連接器的特定于容器的默認值。 使用值-1表示沒有(即無限)超時 server.connection-timeout=2000 # 錯誤控制器的路徑 server.error.path=/error # 是否啟用HTTP / 2支持,如果當前環境支持它。 server.http2.enabled=false # 服務器端口默認為:8080 server.port=8084 # SP servlet的類名。 server.servlet.jsp.class-name=org.apache.jasper.servlet.JspServlet # 主調度程序servlet的路徑。 server.servlet.path=/home # 會話cookie名稱 server.servlet.session.cookie.name=propertydemo #------------------------------ # HTTP encoding #------------------------------ # HTTP請求和響應的字符集。 如果未明確設置,則添加到“Content-Type”標頭。 spring.http.encoding.charset=UTF-8 # 是否啟用http編碼支持。 spring.http.encoding.enabled=true #-------------------- # MULTIPART (MultipartProperties) #-------------------- # 是否啟用分段上傳支持 spring.servlet.multipart.enabled=true # 上傳文件的中間位置 spring.servlet.multipart.location=/log # 最大文件的大小 spring.servlet.multipart.max-file-size=1MB # 最大請求大小 spring.servlet.multipart.max-request-size=10MB # 是否在文件或參數訪問時懶惰地解析多部分請求。 spring.servlet.multipart.resolve-lazily=false #-------------------------------------------- # SPRING SESSION JDBC (JdbcSessionProperties) #-------------------------------------------- # cron表達式用于過期的會話清理作業 spring.session.jdbc.cleanup-cron=0 * * * * * # 數據庫模式初始化模式 spring.session.jdbc.initialize-schema=embedded # 用于初始化數據庫模式的SQL文件的路徑 spring.session.jdbc.schema=classpath:org/springframework/session/jdbc/schema-@@platform@@.sql # 用于存儲會話的數據庫表的名稱 spring.session.jdbc.table-name=SPRING_SESSION #---------------------------------- # MONGODB 數據庫配置 #---------------------------------- # 數據庫名稱 spring.data.mongodb.database=demo # host 配置 spring.data.mongodb.host=127.0.0.1 # 登錄用戶名 spring.data.mongodb.username=property # 登錄密碼 spring.data.mongodb.password=123456 # 端口號,自己根據安裝的mongodb端口配置 spring.data.mongodb.port=9008 # 要啟用的Mongo存儲庫的類型 spring.data.mongodb.repositories.type=auto # 連接數據uri spring.data.mongodb.uri=mongodb://localhost/test #--------------------------------------- # DATASOURCE 數據庫配置 #--------------------------------------- # MySql jdbc Driver spring.datasource.driver-class-name=com.mysql.cj.jdbc.Driver # 連接數據庫 # demo表示的是你創建的數據庫; spring.datasource.url=jdbc:mysql://127.0.0.1:3306/demo?useSSL=false&requireSSL=false&characterEncoding=UTF-8&useJDBCCompliantTimezoneShift=true&useLegacyDatetimeCode=false&serverTimezone=UTC # 數據庫用戶名 spring.datasource.username=root # 數據庫密碼 spring.datasource.password=123456 #----------------------------------- # Jpa使用 #----------------------------------- # 目標數據庫進行操作,默認情況下自動檢測。可以使用“databasePlatform”屬性設置。 #spring.jpa.database= demo1 # 要操作的目標數據庫的名稱,默認情況下自動檢測。 也可以使用“Database”枚舉來設置。 #spring.jpa.database-platform=DEMO # DDL模式 一般有這幾種方式,Spring Boot會根據是否認為您的數據庫是嵌入式的,為您選擇一個默認值 # update: 更新架構時,使用; spring.jpa.hibernate.ddl-auto=update # 是否啟用SQL語句的日志記錄 spring.jpa.show-sql=true #---------------------------------------- # TESTING PROPERTIES #---------------------------------------- # 要替換的現有DataSource的類型 spring.test.database.replace=any # MVC打印選項 spring.test.mockmvc.print=default # ---------------大家查看文檔進行配置,不一一列舉了---------------------- # 各個屬性注解在查看常用配置文件application.properties中 # FREEMARKER # DEVTOOLS配置 # SPRING HATEOAS # HTTP message conversion # GSON # JDBC # JEST (Elasticsearch HTTP client) (JestProperties) # CASSANDRA (CassandraProperties) # --------------------------等等----------------------------------
查看常用配置文件application.properties2. 自定義屬性
由于有時為了方便項目的開發維護,我們可能需要到自定義配置屬性,接下來我們也來搞一下自定義屬性配置。
在application.properties自定義配置屬性:
1.application.properties添加:
#-------------------------------- # 自定義屬性 #-------------------------------- com.eirunye.defproname="root" com.eirunye.defpropass="123456"
2.在DefPropertyController.class引用
@RestController public class DefPropertyController { @Value("${com.eirunye.defproname}") private String defProName; @Value("${com.eirunye.defpropass}") private String defProPass; @RequestMapping(value = "/defproprety") public String defPropretyUser() { return "這個自定義屬性名為: " + defProName + ", 密碼為:" + defProPass; } }
注意
在獲取自定義屬性時一定要嚴格按照配置文件來獲取并且Value里面的字符串一定是$+花括號{***},花括號里面的***表示為:application.properties里面自定義的字符串,所以本例就是表示為: @Value("${com.eirunye.defproname}") 。
如果application.properties有自定義為 test.ok="haha" ,同樣的獲取方式為:@Value("${test.ok}")
3.測試這里暫未使用測試代碼的方式,后面的文章會講到
IntelliJ IDEA訪問
http://localhost:8084/defproprety
Postman訪問
通過Bean的形式獲取
假如我們遇到這樣情況,自定義屬性多,然后每個都是通過@Value(${""})方式的話可能會很容易出錯,那么我們可以采用以下方式。
1.新建一個Properties.class
添加@ConfigurationProperties(prefix = "com.eirunye")//表示的是通過自定義屬性查找,如果自定義是:test.ok=haha,則該這樣表示:@ConfigurationProperties(prefix = "test")
@ConfigurationProperties(prefix = "com.eirunye")//添加該注解 public class Properties { private String defproname; private String defpropass; // get/set方法 public String getDefproname() { return defproname; } public void setDefproname(String defproname) { this.defproname = defproname; } public String getDefpropass() { return defpropass; } public void setDefpropass(String defpropass) { this.defpropass = defpropass; }}
2.在controller包下創建 DefBeanPropertyController.class
@RestController public class DefBeanPropertyController { //通過 Autowired注解來獲取到 Properties屬性,注:Autowired是按類型進行裝配,可獲取它所裝配類的屬性 @Autowired Properties properties; @RequestMapping(value = "/bean/defproperty") public String getDefBeanProperties() { return "這是通過Bean注解的方式獲取屬性: " + properties.getDefproname() + ",密碼為: " + properties.getDefpropass(); }}
3.在項目的入口文件Application添加注解@EnableConfigurationProperties
最后加上包名不然可能找不到掃描文件如:@EnableConfigurationProperties({com.eirunye.defpropertys.bean.Properties.class})。
@SpringBootApplication @EnableConfigurationProperties({com.eirunye.defpropertys.bean.Properties.class})//添加注解bean的掃描文件 public class DefpropertysApplication { public static void main(String[] args) { SpringApplication.run(DefpropertysApplication.class, args); } }
4.測試
IntelliJ IDEA訪問
創建文件xxx.properties文件方式
我們可以自己創建一個自定義屬性的文件如本例def.properties,(注:一般都是以 .properties 文件結尾)
1.添加自定義def.properties配置如下:
#-------------------------------- # 自定義屬性 #-------------------------------- # 用戶名 com.eirunye.defineuser="property" # 年齡 com.eirunye.defineage=20
2.創建 DefineProperties.class
@Configuration @ConfigurationProperties(prefix = "com.eirunye")//添加注解 ConfigurationProperties "com.eirunye"表示的是自定義屬性 @PropertySource("classpath:defines.properties")// 添加注解 PropertySource 該注解能根據路徑掃描到我們的文件 public class DefineProperties { // 這里可以通過@Value("${}")方式添加,我已經屏蔽掉了,直接通過ConfigurationProperties注解的方式 // @Value("${com.eirunye.defineuser}") private String defineuser; // @Value("${com.eirunye.defineage}") private int defineage; // get/set方法 public String getDefineuser() { return defineuser; } public void setDefineuser(String defineuser) { this.defineuser = defineuser; } public int getDefineage() { return defineage; } public void setDefineage(int defineage) { this.defineage = defineage; }}
3.在DefinePropertiesController.class引用
@RestController public class DefinePropertiesController { @Autowired DefineProperties defineProperties; @RequestMapping(value = "define/Properties") public String getDefinePropertiesData(){ return "新建文件自定義屬性姓名:"+defineProperties.getDefineuser()+",新建文件自定義屬性年齡:"+defineProperties.getDefineage(); } }
4.別忘了在Application里面添加配置@EnableConfigurationProperties,即:`@EnableConfigurationProperties({com.eirunye.defpropertys.bean.Properties.class,com.eirunye.defpropertys.bean.DefineProperties.class})
`
5.測試
http://localhost:8084/define/Properties
下載application.properties案例demo二、application.yml配置
由于application.properties配置有點繁瑣,簡潔是我們非常喜歡的,那么在Spring Boot程序里面當然也是可以用.yml文件來配置的,接下來讓我們進入對.yml文件的一些相關配置吧,官方文檔Using YAML Instead of Properties。
1.常見的配置首先在src目錄下的/main/resource文件夾中新建application.yml、application-dev.yml、application-prod.yml三個文件,刪除application.properties文件,目錄結構如下:
|--src |--main |--resources |--application.yml |--application-dev.yml |--application-prod.yml
相信很多人要罵街了,這什么情況不是說,yml配置很給力嗎?怎么還有創建那么多文件,這不是比上面的 application.properties配置還多此一舉嗎?莫急接下來讓我們來看看.yml的配置之后,我相信你肯定在項目中會喜歡用它。
常見的配置屬性如下: 【注意: 這里屬性之間的間隔必須按照要求而來,如:冒號后面要空格】
application.yml 配置
spring: profiles: active: dev #引用 application-dev.yml文件,這里我們可以改為 prod,表示引用application-prod.yml文件 datasource: driver-class-name: com.mysql.cj.jdbc.Driver url: jdbc:mysql://127.0.0.1:3306/demo?useSSL=false&requireSSL=false&characterEncoding=UTF-8&useJDBCCompliantTimezoneShift=true&useLegacyDatetimeCode=false&serverTimezone=UTC username: root password: 12346 jpa: hibernate: ddl-auto: update show-sql: true data: mongodb: host: 127.0.0.1 uri: mongodb://localhost/test username: root password: 123456 database: test test: database: replace: any mockmvc: print: default servlet: multipart: enabled: true
application-dev.yml 可以當成正式服務器端口
server: port: 8084
application-prod.yml 可以當成測試服務器端口
server: port: 8080
查看更多.yml配置
2.自定義yml配置在application.yml配置
1.和上面的application.properties類似,但是需要注意的是格式問題
com: eirunye: ymlname: ymlroot ymlpass: yml123456
2.通過@Value("${com.eirunye.ymlname}")獲取
@RestController public class YmlPropertiesController{ @Value("${com.eirunye.ymlname}") private String ymlname; @Value("${com.eirunye.ymlpass}") private String ymlpass; @RequestMapping(value = "yml/proprety") public String getYmlPropreties() { return "這個自定義屬性名為: " + ymlname+ ", 密碼為:" + ymlpass; } }
3.測試
訪問:
http://localhost:8084/yml/proprety
通過Bean方式獲取和application.properties方式一樣
1.創建YmlPropertyBean.class
@ConfigurationProperties(prefix = "com.eirunye")//添加該注解 public class YmlPropertyBean { private String ymlname; private String ymlpass; // get/set方法..... }
2.在 YmlPropertyBeanController.class引用
@RestController public class YmlPropertyBeanController { @Autowired YmlPropertyBean propertyBean; @RequestMapping(value = "/bean/ymlproperty") public String getYmlPropertyData(){ return "這個bean自定義屬性名為: " + propertyBean.getYmlname()+ ", 密碼為:" + propertyBean.getYmlpass(); } }
3.測試
訪問
http://localhost:8084/bean/ymlproperty
下載.yml案例demo三、總結
1.本篇主要講得配置文件,到此就結束了,在開發中這是我們經常用到。
2.在本篇有些相關配置,本例的代碼實例還沒涉及到,接下來會繼續結合相關的配置案例繼續更新。
3.相信大家也有所掌握。
大家想學習更多關于Spring Boot系列可以查看
Spring Boot攻略
文章版權歸作者所有,未經允許請勿轉載,若此文章存在違規行為,您可以聯系管理員刪除。
轉載請注明本文地址:http://specialneedsforspecialkids.com/yun/76809.html
摘要:引入了新的環境和概要信息,是一種更揭秘與實戰六消息隊列篇掘金本文,講解如何集成,實現消息隊列。博客地址揭秘與實戰二數據緩存篇掘金本文,講解如何集成,實現緩存。 Spring Boot 揭秘與實戰(九) 應用監控篇 - HTTP 健康監控 - 掘金Health 信息是從 ApplicationContext 中所有的 HealthIndicator 的 Bean 中收集的, Spring...
摘要:它就是史上最簡單的教程第三篇服務消費者后端掘金上一篇文章,講述了通過去消費服務,這篇文章主要講述通過去消費服務。概覽和架構設計掘金技術征文后端掘金是基于的一整套實現微服務的框架。 Spring Boot 配置文件 – 在坑中實踐 - 后端 - 掘金作者:泥瓦匠鏈接:Spring Boot 配置文件 – 在坑中實踐版權歸作者所有,轉載請注明出處本文提綱一、自動配置二、自定義屬性三、ran...
摘要:開公眾號差不多兩年了,有不少原創教程,當原創越來越多時,大家搜索起來就很不方便,因此做了一個索引幫助大家快速找到需要的文章系列處理登錄請求前后端分離一使用完美處理權限問題前后端分離二使用完美處理權限問題前后端分離三中密碼加鹽與中異常統一處理 開公眾號差不多兩年了,有不少原創教程,當原創越來越多時,大家搜索起來就很不方便,因此做了一個索引幫助大家快速找到需要的文章! Spring Boo...
閱讀 2491·2021-11-25 09:43
閱讀 2585·2021-11-16 11:50
閱讀 3280·2021-10-09 09:44
閱讀 3193·2021-09-26 09:55
閱讀 2834·2019-08-30 13:50
閱讀 1026·2019-08-29 13:24
閱讀 2068·2019-08-26 11:44
閱讀 2790·2019-08-26 11:37