中文字幕av专区_日韩电影在线播放_精品国产精品久久一区免费式_av在线免费观看网站

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

Spring?Boot怎么正確讀取配置文件屬性

發布時間:2022-04-21 09:08:28 來源:億速云 閱讀:234 作者:iii 欄目:開發技術

這篇“Spring Boot怎么正確讀取配置文件屬性”文章的知識點大部分人都不太理解,所以小編給大家總結了以下內容,內容詳細,步驟清晰,具有一定的借鑒價值,希望大家閱讀完這篇文章能有所收獲,下面我們一起來看看這篇“Spring Boot怎么正確讀取配置文件屬性”文章吧。

    @Value

    @Value用來讀取application.yml配置文件中屬性的值。

    示例代碼

    application.yml文件中屬性:

    //定義屬性
    fileName : test
    isFile : false
    filePath : c://test

    @value讀取application.yml屬性值:

    @Configuration
    public class FileConfig
    {
        @Value("${fileName}")
        private final String fileName;
        @Value("${isFile}")
        private boolean isFile;
        @Value("${filePath}")
        private static String filePath;
    }

    測試:

     @Autowired
        private FileConfig fileConfig;
        @GetMapping("getFileConfig")
        public void getFileConfig()
        {
            logger.info("fileConfig:{}",fileConfig);
        }

    運行結果:

    fileConfig:FileConfig [fileName=, isFile=false, filePath=null]

    特別注意:

    • @Value不能將屬性值讀取靜態變量,否則讀取的值為空。

    • @Value不能將屬性值讀取常量,否則讀取的值為空。

    • @Value不能讀取boolean類型的值,經過測試Spring Boot2.1的版本是無效的,2.2以上版本支持。

    所以個人建議非必要情況,盡量少用@Value注解讀取屬性值。

    @ConfigurationProperties

    讀取配置文件值并且轉換成類對象,便于獲取值和修改屬性值。

    示例代碼

    application.yml文件中屬性:

    http:
      pool:
        # 連接超時
        connectTimeout: 5000
        #獲取連接池中連接超時
        connectionRequestTimeout: 1000
        #每個路由連接數量
        defaultMaxPerRoute: 50
        # /連接池中最大連接數
        maxTotal: 50
        # 服務器返回數據(response)的時間
        socketTimeout: 5000
        #定義不活動的時間(以毫秒為單位),連接回收
        validateAfterInactivity: 30000

    @ConfigurationProperties讀取application.yml中以http.pool開頭的屬性值:

    //以http.pool開頭
    @Component
    @ConfigurationProperties(prefix = "http.pool")
    public class HttpClientConfig implements Serializable
    {
        private static final long serialVersionUID = -4608251658338406043L;
        /**
         * 最大連接數
         */
        private Integer maxTotal;
        /**
         * 路由是對最大連接數的細分
         * 每個路由基礎的連接數
         */
        private Integer defaultMaxPerRoute;
        /**
         * 連接超時時間
         */
        private Integer connectTimeout;
        /**
         * 從連接池中獲取連接的超時時間
         */
        private Integer connectionRequestTimeout;
        /**
         * 服務器返回數據(response)的時間
         */
        private Integer socketTimeout;

    測試:

      @GetMapping("getHttpClientConfig")
        public void getHttpClientConfig()
        {
            String json=FastJsonUtil.toJSONString(httpClientConfig);
            logger.info("fileConfig:{}",json);
        }

    屬性嵌套:

    @ConfigurationProperties 可以嵌套List、map、class

    config:
      url:http://localhsot:8080
      gaode-map:
        host: https://restapi.amap.com/v3
        key: 1234
    @ConfigurationProperties(prefix="config")
    public class Config
    {
        //高德地圖信息
        private GaodeMap gaodeMap;
     }

    特別注意:

    • 默認情況不會將實體注入到spring的容器中,需要結合@EnableConfigurationProperties或者@Component一起使用,否則注入對象為空。

    @EnableConfigurationProperties

    @ConfigurationProperties讀取對象注入到spring容器中。例如上述示例也可以采用@EnableConfigurationProperties 來注入

    @EnableConfigurationProperties(HttpClientConfig.class)
    public class FileController
    {
        private Logger logger = LoggerFactory.getLogger(FileController.class);
        @Autowired
        private FileConfig fileConfig;
        @GetMapping("getHttpClientConfig")
        public void getHttpClientConfig()
        {
            String json=FastJsonUtil.toJSONString(httpClientConfig);
            logger.info("fileConfig:{}",json);
        }
      }

    @ConfigurationPropertiesScan

    用來掃描@ConfigurationProperties實體類并將類注入到Spring容器,上述示例可以如下使用

    @ConfigurationPropertiesScan("com.xx.fw.config")
    public class FwCoreApplication
    {
        public static void main(String[] args)
        {
            SpringApplication.run(FwCoreApplication.class, args);
        }
    }

    @PropertySource

    @PropertySource 主要用于讀取指定的配置文件,需要結合@ConfigurationProperties 注解一起使用實現配置文件和Java Bean的注入操作。

    示例代碼

    屬性文件user.properteis:

    user.id=222
    user.name=劍圣
    user.age=28

    實體類定義:

    @Component
    @ConfigurationProperties(prefix = "user")
    @PropertySource(value = {"classpath:user.properties"})
    public class UserConfig 
    {
        private String id;
        private String name;
        private int age;
     }

    測試:

        @GetMapping("getUserConfig")
        public void getUserConfig()
        {
            String json=FastJsonUtil.toJSONString(userConfig);
            logger.info("userConfig:{}",json);
        }

    輸出結果:

    c.s.fw.controller.FileController - userConfig:{"age":28,"id":"123","name":"admin"}

    以上就是關于“Spring Boot怎么正確讀取配置文件屬性”這篇文章的內容,相信大家都有了一定的了解,希望小編分享的內容對大家有幫助,若想了解更多相關的知識內容,請關注億速云行業資訊頻道。

    向AI問一下細節

    免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

    AI

    双鸭山市| 新兴县| 察雅县| 陆良县| 米泉市| 巴里| 清河县| 酉阳| 镇远县| 泌阳县| 鄂尔多斯市| 陵川县| 吴旗县| 黄平县| 汉川市| 秦安县| 金寨县| 老河口市| 二连浩特市| 班玛县| 莎车县| 临江市| 伊春市| 亳州市| 安泽县| 满洲里市| 句容市| 三门峡市| 漳州市| 鄂托克前旗| 乳山市| 溧阳市| 兴和县| 江油市| 利津县| 井冈山市| 龙山县| 房山区| 西吉县| 宝清县| 思茅市|