欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

springboot如何讀取application.yml文件

 更新時間:2020年12月10日 09:26:39   作者:迷茫中守候  
這篇文章主要介紹了springboot如何讀取application.yml文件的方法,幫助大家更好的理解和使用springboot框架,感興趣的朋友可以了解下

現(xiàn)在開發(fā)主要使用微服務(wù)框架springboot,在springboot中經(jīng)常遇到讀取application.yml文件的情形。

一、概述

開發(fā)過程中經(jīng)常遇到要讀取application.yml文件中的屬性值,本文總結(jié)幾種讀取的方式,供參考。

二、詳述

我這里使用的是springboot-2.1.2.RELEASE版本,這里使用的是application.properties的配置方式,和使用application.yml的方式是一樣的。下面是application.properties文件的內(nèi)容

cn.com.my.test1=test1
cn.com.my.test2=test2

1、@Value注解

 這種方式是spring最早提供的方式,通過@Value注解的方式,該注解用在屬性上,但是要求該屬性所在的類必須要被spring管理。

package com.example.demo.controller;

import org.springframework.beans.factory.annotation.Value;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.ResponseBody;

@Controller
public class TestController {

  @Value("${cn.com.my.test1}")
  private String test1;
  @Value("${cn.com.my.test2}")
  private String test2;

  @RequestMapping("/test1/test")
  @ResponseBody
  public String getTest(){
    return "hello:"+test1+",test2:"+test2;
  }

}

在標記有@Controller類中使用了帶有@Value注解的test1和test2的屬性,首先標記有@Controller注解便可以使該類被spring管理。其次,使用@Value標記了屬性,則可以獲得application.properties(application.yml)文件中的屬性,這里使用${cn.com.my.test1},屬性的名稱必須是全部的名稱,測試結(jié)果如下,

2、@ConfigurationProperties

@ConfigurationProperties注解是springboot提供的,在springboot中大量使用,下面看其用法,

使用@Component注解

這里需要定義一個類,

package com.example.demo.properties;

import org.springframework.boot.context.properties.ConfigurationProperties;
import org.springframework.stereotype.Component;

@Component
@ConfigurationProperties(prefix = "cn.com.my")
public class ApplicationPro {
  private String test1;
  private String test2;  private String testName;

  //必須有set方法
  public void setTest1(String test1) {
    this.test1 = test1;
  }

  //必須有set方法
  public void setTest2(String test2) {
    this.test2 = test2;
  }

  public String getTest1() {
    return test1;
  }

  public String getTest2() {
    return test2;
  }
public void setTestName(String testName) {  this.testName = testName;}public String getTestName() {  return testName;}
}

該類上使用了@ConfigurationProperties注解,且配置了prefix屬性,指定了要獲取屬性的前綴,這里的前綴是cn.com.my,在類中定義的屬性名最好和application.properties文件中的一致,不過這種方式可以采用稀疏匹配,把application.properties修改為下面的內(nèi)容,

cn.com.my.test1=test1
cn.com.my.test2=test2
cn.com.my.test-name="hello world"

另外,在ApplicationPro類上標記有@Component注解,標記該注解的意思是要把該類交給spring管理,也就是說要讓spring管理此類,其實也可以使用其他注解,如,@Service等

下面看測試類,

package com.example.demo.controller;

import com.example.demo.properties.ApplicationPro;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.ResponseBody;

@Controller
public class TestController3 {
  @Autowired
  private ApplicationPro ap;
  @RequestMapping("test3/test")
  @ResponseBody
  public String getTest(){
    return ap.getTest1()+","+ap.getTest2()+","+ap.getTestName();
  }
}

看測試結(jié)果,

從上面的結(jié)果可以看出已經(jīng)獲得了application.properties文件中的值,并且獲得了test-name的值。具體匹配規(guī)則可以自行百度,這里強烈建議配置文件中的屬性和類中的保持一致。

使用@EnableConfigurationProperties注解
使用該注解在ApplicationPro類中便不需要使用@Component注解,

package com.example.demo.properties;

import org.springframework.boot.context.properties.ConfigurationProperties;
import org.springframework.stereotype.Component;

//@Component
@ConfigurationProperties(prefix = "cn.com.my")
public class ApplicationPro {
  private String test1;
  private String test2;
  private String testName;

  //必須有set方法
  public void setTest1(String test1) {
    this.test1 = test1;
  }

  //必須有set方法
  public void setTest2(String test2) {
    this.test2 = test2;
  }

  public String getTest1() {
    return test1;
  }

  public String getTest2() {
    return test2;
  }

  public void setTestName(String testName) {
    this.testName = testName;
  }

  public String getTestName() {
    return testName;
  }
}

再看啟動類,在啟動類上標記了@EnableConfigurationProperties({ApplicationPro.class}),也就是使@ConfigurationProperties注解生效,并標記了標有@ConfigurationProperties注解的類Application.class

package com.example.demo;

import com.example.demo.properties.ApplicationPro;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.boot.context.properties.ConfigurationProperties;
import org.springframework.boot.context.properties.EnableConfigurationProperties;

@SpringBootApplication
@EnableConfigurationProperties({ApplicationPro.class})
public class DemoApplication {

  public static void main(String[] args) {
    SpringApplication.run(DemoApplication.class, args);
  }

}

下面看測試結(jié)果,

3、Environment對象

使用Environment對象,該對象是spring提供的一個對象,且是spring內(nèi)部創(chuàng)建的對象,

package com.example.demo.controller;

import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.core.env.Environment;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.ResponseBody;

@Controller
public class TestController2 {
  @Autowired
  private Environment environment;

  @RequestMapping("/test2/test")
  @ResponseBody
  public String getTest(){
    return "hello,"+environment.getProperty("cn.com.my.test1")+","+"test2:"+environment.getProperty("cn.com.my.test2");
  }
}

可以看到,可以直接注入該對象的實例,通過其getProperty方法獲得相應(yīng)的屬性值。

三、總結(jié)

 本文總結(jié)了,在使用springboot的過程中獲取配置文件中的幾種方式,

@Value

@ConfigurationProperties

Environment對象

有不當之處,歡迎指正,謝謝。

以上就是springboot如何讀取application.yml文件的詳細內(nèi)容,更多關(guān)于springboot 讀取application.yml文件的資料請關(guān)注腳本之家其它相關(guān)文章!

相關(guān)文章

  • 在SpringBoot中實現(xiàn)線程池并行處理任務(wù)的方法詳解

    在SpringBoot中實現(xiàn)線程池并行處理任務(wù)的方法詳解

    在使用Spring Boot開發(fā)應(yīng)用程序時,我們經(jīng)常需要處理一些耗時的任務(wù),例如網(wǎng)絡(luò)請求、數(shù)據(jù)庫操作或者其他需要花費一定時間的計算任務(wù),本文將介紹如何在Spring Boot中使用線程池來實現(xiàn)任務(wù)的并行處理
    2023-06-06
  • Springcloud Alibaba超詳細使用詳解

    Springcloud Alibaba超詳細使用詳解

    SpringCloudAlibaba是一款優(yōu)秀的微服務(wù)架構(gòu),在市面上有著廣泛的應(yīng)用,這篇文章介紹了SpringCloudAlibaba的一些基本使用,適合初學(xué)者,希望能夠給大家?guī)韼椭?/div> 2024-08-08
  • Mybatis SQL運行流程源碼詳解

    Mybatis SQL運行流程源碼詳解

    這篇文章主要介紹了Mybatis SQL運行流程源碼詳解,文中通過示例代碼介紹的非常詳細,對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友可以參考下
    2020-10-10
  • springboot?整合?SA-Token?使用詳解

    springboot?整合?SA-Token?使用詳解

    本文詳細介紹了SA-Token這款安全框架的使用,并結(jié)合實際操作演示了如何集成到springboot項目中,感興趣的朋友跟隨小編一起看看吧
    2024-08-08
  • 十分鐘速懂java知識點 System類

    十分鐘速懂java知識點 System類

    這篇文章主要介紹了java知識點System類,根據(jù)一次面試總結(jié)的,可以十分鐘速懂System類,感興趣的小伙伴們可以參考一下
    2015-12-12
  • Java中的包裝類是什么

    Java中的包裝類是什么

    這篇文章主要介紹了Java中的包裝類是什么,具有很好的參考價值,希望對大家有所幫助,如有錯誤或未考慮完全的地方,望不吝賜教
    2023-11-11
  • Spring?Batch批處理框架操作指南

    Spring?Batch批處理框架操作指南

    Spring?Batch?是?Spring?提供的一個數(shù)據(jù)處理框架。企業(yè)域中的許多應(yīng)用程序需要批量處理才能在關(guān)鍵任務(wù)環(huán)境中執(zhí)行業(yè)務(wù)操作,這篇文章主要介紹了Spring?Batch批處理框架操作指南,需要的朋友可以參考下
    2022-07-07
  • Java實現(xiàn)復(fù)原IP地址的方法

    Java實現(xiàn)復(fù)原IP地址的方法

    這篇文章主要介紹了Java實現(xiàn)復(fù)原IP地址的方法,文中通過示例代碼介紹的非常詳細,對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2020-02-02
  • Java中Bean轉(zhuǎn)Map問題歸納總結(jié)

    Java中Bean轉(zhuǎn)Map問題歸納總結(jié)

    Java Bean轉(zhuǎn)Map的坑很多,最常見的就是類型丟失和屬性名解析錯誤的問題,下面這篇文章主要給大家介紹了關(guān)于Java中Bean轉(zhuǎn)Map問題歸納總結(jié)的相關(guān)資料,文中通過實例代碼介紹的非常詳細,需要的朋友可以參考下
    2023-06-06
  • 每日六道java新手入門面試題,通往自由的道路--JVM

    每日六道java新手入門面試題,通往自由的道路--JVM

    這篇文章主要為大家分享了最有價值的6道JVM面試題,涵蓋內(nèi)容全面,包括數(shù)據(jù)結(jié)構(gòu)和算法相關(guān)的題目、經(jīng)典面試編程題等,對hashCode方法的設(shè)計、垃圾收集的堆和代進行剖析,感興趣的小伙伴們可以參考一下
    2021-06-06

最新評論