国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 開發 > Java > 正文

詳解Spring Boot讀取配置文件與配置文件優先級

2024-07-14 08:42:03
字體:
來源:轉載
供稿:網友

Spring Boot讀取配置文件

1)通過注入ApplicationContext 或者 Environment對象來讀取配置文件里的配置信息。

package com.ivan.config.controller;import org.springframework.beans.factory.annotation.Autowired;import org.springframework.context.ApplicationContext;import org.springframework.core.env.Environment;import org.springframework.web.bind.annotation.RequestMapping;import org.springframework.web.bind.annotation.RequestMethod;import org.springframework.web.bind.annotation.RestController;@RestControllerpublic class ConfigController {  @Autowired  ApplicationContext context;  @Autowired  Environment environment;  @RequestMapping(value="/config", method={RequestMethod.GET})  public String getConfigContent(){           String name = context.getEnvironment().getProperty("db.user.name");    return name;  }  @RequestMapping(value="/configEnv", method={RequestMethod.GET})  public String getConfigEnvironment(){    String name = environment.getProperty("db.user.name");    return name;  }}

2)通過@ConfigurationProperties配合@PropertySource讀取配置文件里的配置信息。

1:通過@PropertySource指定當前類里屬性的配置文件地址,ConfigurationProperties可以指定配置的前綴,@Configuration用于定義一個配置類:

package com.ivan.config.entity;import org.springframework.boot.context.properties.ConfigurationProperties;import org.springframework.context.annotation.Configuration;import org.springframework.context.annotation.PropertySource;@Configuration@PropertySource("classpath:config/druid.properties")@ConfigurationProperties(prefix = "druid")public class DruidConfig {  private int  initialSize;  private int  minIdle;  private int  maxActive;  private int  maxWait;  private String validationQuery;  private boolean testWhileIdle;  private boolean testOnBorrow;  private boolean testOnReturn;  public int getInitialSize() {    return initialSize;  }  public void setInitialSize(int initialSize) {    this.initialSize = initialSize;  }  public int getMinIdle() {    return minIdle;  }  public void setMinIdle(int minIdle) {    this.minIdle = minIdle;  }  public int getMaxActive() {    return maxActive;  }  public void setMaxActive(int maxActive) {    this.maxActive = maxActive;  }  public int getMaxWait() {    return maxWait;  }  public void setMaxWait(int maxWait) {    this.maxWait = maxWait;  }  public String getValidationQuery() {    return validationQuery;  }  public void setValidationQuery(String validationQuery) {    this.validationQuery = validationQuery;  }  public boolean isTestWhileIdle() {    return testWhileIdle;  }  public void setTestWhileIdle(boolean testWhileIdle) {    this.testWhileIdle = testWhileIdle;  }  public boolean isTestOnBorrow() {    return testOnBorrow;  }  public void setTestOnBorrow(boolean testOnBorrow) {    this.testOnBorrow = testOnBorrow;  }  public boolean isTestOnReturn() {    return testOnReturn;  }  public void setTestOnReturn(boolean testOnReturn) {    this.testOnReturn = testOnReturn;  }  @Override  public String toString() {    return "DruidConfig [initialSize=" + initialSize + ", minIdle=" + minIdle + ", maxActive=" + maxActive + ", maxWait=" + maxWait + ", validationQuery=" + validationQuery + ", testWhileIdle=" + testWhileIdle + ", testOnBorrow=" + testOnBorrow + ", testOnReturn=" + testOnReturn + "]";  }}

2:對應的配置文件:

druid.initialSize=5druid.minIdle=5druid.maxActive=20druid.maxWait=60000druid.validationQuery=select 'x'druid.testWhileIdle=true druid.testOnBorrow=true druid.testOnReturn=true

3:在需要用到的類通過@Autowired注入

package com.ivan.config.controller;import org.springframework.beans.factory.annotation.Autowired;import org.springframework.web.bind.annotation.RequestMapping;import org.springframework.web.bind.annotation.RequestMethod;import org.springframework.web.bind.annotation.RestController;import com.ivan.config.entity.DruidConfig;@RestControllerpublic class DruidConfigController {  @Autowired  public DruidConfig druidConfig;  @RequestMapping(value="/druidConfig", method={RequestMethod.GET})  public String getDruidConfig(){    return druidConfig.toString();  }}

3)通過@Value注解

1:需要得到配置屬性的類如下,可以在任何需要得到配置的地方用@Value注解

package com.ivan.config.entity;import org.springframework.beans.factory.annotation.Value;import org.springframework.context.annotation.Configuration;@Configurationpublic class ValueTest {  @Value("${db.user.name}")  private String username;  public String getUsername() {    return username;  }  public void setUsername(String username) {    this.username = username;  }}

2:測試Controller類通過@Autowired注入實體類

package com.ivan.config.controller;import org.springframework.beans.factory.annotation.Autowired;import org.springframework.web.bind.annotation.RequestMapping;import org.springframework.web.bind.annotation.RequestMethod;import org.springframework.web.bind.annotation.RestController;import com.ivan.config.entity.ValueTest;@RestControllerpublic class ValueController {  @Autowired  private ValueTest value;  @RequestMapping(value="/configValue", method={RequestMethod.GET})  public String getConfig(){    return value.getUsername();  }}

Spring boot 配置文件優先級:

1:命令行參數。(以--開頭的參數,比如可以設置:--server.port對同一套代碼設置不同的參數)
2: 通過 System.getProperties() 獲取的 Java 系統參數。
3:操作系統環境變量(這解釋了為什么你通過application.properties設置的user.name取的是系統的用戶名了)
4:從 java:comp/env 得到的 JNDI 屬性。
5: 應用 Jar 文件之外的屬性文件(系統的application.properties文件)
6:應用 Jar 文件內部的屬性文件。
7: 在應用配置 Java 類(包含“@Configuration”注解的 Java 類)中通過“@PropertySource”注解聲明的屬性文件。
8: 通過“SpringApplication.setDefaultProperties”聲明的默認屬性。

以上就是本文的全部內容,希望對大家的學習有所幫助,也希望大家多多支持VeVb武林網。


注:相關教程知識閱讀請移步到JAVA教程頻道。
發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 开远市| 高唐县| 嫩江县| 宜兰市| 齐河县| 永兴县| 萝北县| 洪雅县| 达拉特旗| 红原县| 若羌县| 葵青区| 石嘴山市| 荆州市| 青岛市| 合水县| 祁东县| 仙游县| 云林县| 沙坪坝区| 宁波市| 且末县| 平果县| 涟源市| 遵义市| 普定县| 阳春市| 江口县| 靖宇县| 资溪县| 叙永县| 博爱县| 乌鲁木齐县| 五莲县| 句容市| 汝州市| 新兴县| 龙口市| 伽师县| 宁都县| 宣汉县|