spring-boot讀取props和yml配置文件-創(chuàng)新互聯(lián)

最近微框架spring-boot很火,筆者也跟風(fēng)學(xué)習(xí)了一下,廢話不多說,現(xiàn)給出一個(gè)讀取配置文件的例子。
首先,需要在pom文件中依賴以下jar包

創(chuàng)新互聯(lián)公司作為成都網(wǎng)站建設(shè)公司,專注重慶網(wǎng)站建設(shè)公司、網(wǎng)站設(shè)計(jì),有關(guān)成都定制網(wǎng)頁設(shè)計(jì)方案、改版、費(fèi)用等問題,行業(yè)涉及成都酒店設(shè)計(jì)等多個(gè)領(lǐng)域,已為上千家企業(yè)服務(wù),得到了客戶的尊重與認(rèn)可。

Java代碼

  1. <dependencies>

  2.     <dependency>

  3.         <groupId>org.springframework.boot</groupId>

  4.         <artifactId>spring-boot-starter-web</artifactId>

  5.     </dependency>

  6.     <dependency>

  7.         <groupId>org.springframework.boot</groupId>

  8.         <artifactId>spring-boot-starter-test</artifactId>

  9.         <scope>test</scope>

  10.     </dependency>

  11. </dependencies>

其次,我們需要一個(gè)spring-boot啟動(dòng)類 下載

Java代碼

  1. @SpringBootApplication

  2. @EnableConfigurationProperties({PropsConfig.class,YmlConfig.class})

  3. public class ReadApplication {

  4.     public static void main(String[] args) {

  5.         SpringApplication.run(ReadApplication.class, args);

  6.     }

  7. }

沒錯(cuò),@EnableConfigurationProperties注解里指出的PropsConfig.class,YmlConfig.class分別就是讀取props和yml配置文件的類。接下來,我們分別進(jìn)行讀取properties和yml配置文件的具體實(shí)現(xiàn)。

1.讀取properties配置文件
在類路徑下放置一個(gè)application.properties文件,大致內(nèi)容如下: 下載

Java代碼

  1. master.ds.driverClassName=com.mysql.jdbc.Driver

  2. master.ds.url=jdbc:mysql://localhost:3306/test

  3. master.ds.username=root

  4. master.ds.password=root

  5. master.ds.filters=stat

  6. master.ds.maxActive=20

  7. master.ds.initialSize=1

  8. master.ds.maxWait=60000

  9. master.ds.minIdle=10

  10. master.ds.timeBetweenEvictionRunsMillis=60000

  11. master.ds.minEvictableIdleTimeMillis=300000

  12. master.ds.validationQuery=SELECT 'x'

  13. master.ds.testWhileIdle=true

  14. master.ds.testOnBorrow=false

  15. master.ds.testOnReturn=false

  16. master.ds.poolPreparedStatements=true

  17. master.ds.maxOpenPreparedStatements=100

  18. master.ds.removeAbandoned=true

  19. master.ds.removeAbandonedTimeout=1800

  20. master.ds.logAbandoned=true

讀取props配置的類,很簡單,基本就是一個(gè)pojo/vo類,在類上加載@ConfigurationProperties注解即可。

Java代碼  下載

  1. @ConfigurationProperties(prefix = "master.ds",locations = "classpath:application.properties")

  2. public class PropsConfig {

  3.     private String driverClassName;

  4.     private String url;

  5.     private String username;

  6.     private String password;

  7.     private String filters;

  8.     private String maxActive;

  9.     private String initialSize;

  10.     private String maxWait;

  11.     public String getDriverClassName() {

  12.         return driverClassName;

  13.     }

  14.     public void setDriverClassName(String driverClassName) {

  15.         this.driverClassName = driverClassName;

  16.     }

  17.     public String getUrl() {

  18.         return url;

  19.     }

  20.     public void setUrl(String url) {

  21.         this.url = url;

  22.     }

  23.     public String getUsername() {

  24.         return username;

  25.     }

  26.     public void setUsername(String username) {

  27.         this.username = username;

  28.     }

  29.     public String getPassword() {

  30.         return password;

  31.     }

  32.     public void setPassword(String password) {

  33.         this.password = password;

  34.     }

  35.     public String getFilters() {

  36.         return filters;

  37.     }

  38.     public void setFilters(String filters) {

  39.         this.filters = filters;

  40.     }

  41.     public String getMaxActive() {

  42.         return maxActive;

  43.     }

  44.     public void setMaxActive(String maxActive) {

  45.         this.maxActive = maxActive;

  46.     }

  47.     public String getInitialSize() {

  48.         return initialSize;

  49.     }

  50.     public void setInitialSize(String initialSize) {

  51.         this.initialSize = initialSize;

  52.     }

  53.     public String getMaxWait() {

  54.         return maxWait;

  55.     }

  56.     public void setMaxWait(String maxWait) {

  57.         this.maxWait = maxWait;

  58.     }

  59. }

單元測試類

Java代碼  下載

  1. @RunWith(SpringJUnit4Cla***unner.class)

  2. @SpringBootTest(classes = ReadApplication.class)

  3. public class ReadApplicationPropsTests {

  4.     @Autowired

  5.     private PropsConfig propsConfig;

  6.     @Test

  7.     public void testDisplayPropsValue() {

  8.         String driverClassName = propsConfig.getDriverClassName();

  9.         String url = propsConfig.getUrl();

  10.         String username = propsConfig.getUsername();

  11.         String password = propsConfig.getPassword();

  12.         String filters = propsConfig.getFilters();

  13.         String maxActive = propsConfig.getMaxActive();

  14.         String initialSize = propsConfig.getInitialSize();

  15.         String maxWait = propsConfig.getMaxWait();

  16.         System.out.println("driverClassName -> " + driverClassName);

  17.         System.out.println("url -> " + url);

  18.         System.out.println("username -> " + username);

  19.         System.out.println("password -> " + password);

  20.         System.out.println("initialSize -> " + initialSize);

  21.         System.out.println("maxWait -> " + maxWait);

  22.     }

  23. }

可以看到在控制臺(tái)輸出的測試內(nèi)容:

Java代碼

  1. driverClassName -> com.mysql.jdbc.Driver

  2. url -> jdbc:mysql://localhost:3306/test

  3. username -> root

  4. password -> root

  5. initialSize -> 1

  6. maxWait -> 60000

2.讀取yml配置文件
在類路徑下放置一個(gè)application.yml文件下載,大致內(nèi)容如下:

Java代碼

  1. myProps: #自定義的屬性和值

  2.   simpleProp: simplePropValue

  3.   arrayProps: 1,2,3,4,5

  4.   listProp1:

  5.     - name: abc

  6.       value: abcValue

  7.     - name: efg

  8.       value: efgValue

  9.   listProp2:

  10.     - config2Value1

  11.     - config2Vavlue2

  12.   mapProps:

  13.     key1: value1

  14.     key2: value2

讀取yml配置文件的類。

Java代碼

  1. @ConfigurationProperties(prefix="myProps") //application.yml中的myProps下的屬性

  2. public class YmlConfig {

  3.     private String simpleProp;

  4.     private String[] arrayProps;

  5.     private List<Map<String, String>> listProp1 = new ArrayList<>(); //接收prop1里面的屬性值

  6.     private List<String> listProp2 = new ArrayList<>(); //接收prop2里面的屬性值

  7.     private Map<String, String> mapProps = new HashMap<>(); //接收prop1里面的屬性值

  8.     public String getSimpleProp() {

  9.         return simpleProp;

  10.     }

  11.     public void setSimpleProp(String simpleProp) {

  12.         this.simpleProp = simpleProp;

  13.     }

  14.     public List<Map<String, String>> getListProp1() {

  15.         return listProp1;

  16.     }

  17.     public List<String> getListProp2() {

  18.         return listProp2;

  19.     }

  20.     public String[] getArrayProps() {

  21.         return arrayProps;

  22.     }

  23.     public void setArrayProps(String[] arrayProps) {

  24.         this.arrayProps = arrayProps;

  25.     }

  26.     public Map<String, String> getMapProps() {

  27.         return mapProps;

  28.     }

  29.     public void setMapProps(Map<String, String> mapProps) {

  30.         this.mapProps = mapProps;

  31.     }

  32. }

單元測試類

Java代碼  下載

  1. @RunWith(SpringJUnit4Cla***unner.class)

  2. @SpringBootTest(classes = ReadApplication.class)

  3. public class ReadApplicationYmlTests {

  4.     @Autowired

  5.     private YmlConfig ymlConfig;

  6.     @Test

  7.     public void testDisplayYmlValue() throws JsonProcessingException {

  8.         System.out.println("simpleProp: " + ymlConfig.getSimpleProp());

  9.         ObjectMapper objectMapper = new ObjectMapper();

  10.         System.out.println("arrayProps: " + objectMapper.writeValueAsString(ymlConfig.getArrayProps()));

  11.         System.out.println("listProp1: " + objectMapper.writeValueAsString(ymlConfig.getListProp1()));

  12.         System.out.println("listProp2: " + objectMapper.writeValueAsString(ymlConfig.getListProp2()));

  13.         System.out.println("mapProps: " + objectMapper.writeValueAsString(ymlConfig.getMapProps()));

  14.     }

  15. }

可以看到在控制臺(tái)輸出的測試內(nèi)容:

Java代碼

  1. simpleProp: simplePropValue

  2. arrayProps: ["1","2","3","4","5"]

  3. listProp1: [{"name":"abc","value":"abcValue"},{"name":"efg","value":"efgValue"}]

  4. listProp2: ["config2Value1","config2Vavlue2"]

  5. mapProps: {"key1":"value1","key2":"value2"}

另外有需要云服務(wù)器可以了解下創(chuàng)新互聯(lián)scvps.cn,海內(nèi)外云服務(wù)器15元起步,三天無理由+7*72小時(shí)售后在線,公司持有idc許可證,提供“云服務(wù)器、裸金屬服務(wù)器、高防服務(wù)器、香港服務(wù)器、美國服務(wù)器、虛擬主機(jī)、免備案服務(wù)器”等云主機(jī)租用服務(wù)以及企業(yè)上云的綜合解決方案,具有“安全穩(wěn)定、簡單易用、服務(wù)可用性高、性價(jià)比高”等特點(diǎn)與優(yōu)勢,專為企業(yè)上云打造定制,能夠滿足用戶豐富、多元化的應(yīng)用場景需求。

網(wǎng)站欄目:spring-boot讀取props和yml配置文件-創(chuàng)新互聯(lián)
URL標(biāo)題:http://muchs.cn/article8/eeeop.html

成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供服務(wù)器托管、網(wǎng)站改版外貿(mào)網(wǎng)站建設(shè)、標(biāo)簽優(yōu)化、微信小程序、網(wǎng)站排名

廣告

聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請盡快告知,我們將會(huì)在第一時(shí)間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時(shí)需注明來源: 創(chuàng)新互聯(lián)

外貿(mào)網(wǎng)站建設(shè)