@ConfigurationProperties和@EnableConfigurationProperties的正確打開方式

配置元數(shù)據(jù)官網(wǎng)

image.png
  • LuckyZookeeperPropertiesod.class
package com.lucky.config.properties;

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

@ConfigurationProperties(prefix = "lucky.zookeeper", ignoreInvalidFields = true)
public class LuckyZookeeperProperties {
    private String connectString;
    private int sessionTimeoutMs;
    private int connectionTimeoutMs;

    private RetryPolicy retryPolicy;


    public String getConnectString() {
        return connectString;
    }

    public void setConnectString(String connectString) {
        this.connectString = connectString;
    }

    public int getSessionTimeoutMs() {
        return sessionTimeoutMs;
    }

    public void setSessionTimeoutMs(int sessionTimeoutMs) {
        this.sessionTimeoutMs = sessionTimeoutMs;
    }

    public int getConnectionTimeoutMs() {
        return connectionTimeoutMs;
    }

    public void setConnectionTimeoutMs(int connectionTimeoutMs) {
        this.connectionTimeoutMs = connectionTimeoutMs;
    }

    public RetryPolicy getRetryPolicy() {
        return retryPolicy;
    }

    public void setRetryPolicy(RetryPolicy retryPolicy) {
        this.retryPolicy = retryPolicy;
    }

    public static class RetryPolicy {
        private int baseSleepTimeMs;
        private int maxRetries;

        public int getBaseSleepTimeMs() {
            return baseSleepTimeMs;
        }

        public void setBaseSleepTimeMs(int baseSleepTimeMs) {
            this.baseSleepTimeMs = baseSleepTimeMs;
        }

        public int getMaxRetries() {
            return maxRetries;
        }

        public void setMaxRetries(int maxRetries) {
            this.maxRetries = maxRetries;
        }
    }
}

  • ZookeeperConfig.class
package com.lucky.config;

import com.lucky.config.properties.LuckyZookeeperProperties;
import org.apache.curator.RetryPolicy;
import org.apache.curator.framework.CuratorFramework;
import org.apache.curator.framework.CuratorFrameworkFactory;
import org.apache.curator.retry.ExponentialBackoffRetry;
import org.springframework.boot.context.properties.EnableConfigurationProperties;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;

@Configuration
@EnableConfigurationProperties(LuckyZookeeperProperties.class)
public class ZookeeperConfig {

    @Bean
    public CuratorFramework curatorZookeeperClient(LuckyZookeeperProperties properties) {
        RetryPolicy retryPolicy = new ExponentialBackoffRetry(properties.getRetryPolicy().getBaseSleepTimeMs(),
                properties.getRetryPolicy().getMaxRetries());
        final CuratorFramework client = CuratorFrameworkFactory.builder()
                .connectString(properties.getConnectString())
                .sessionTimeoutMs(properties.getSessionTimeoutMs())
                .connectionTimeoutMs(properties.getConnectionTimeoutMs())
                .retryPolicy(retryPolicy)
                .build();
        client.start();
        return client;
    }
}

  • gradle
    annotationProcessor('org.springframework.boot:spring-boot-configuration-processor')
  • 執(zhí)行命令
gradle clear && gradle build

查看生成的自動(dòng)補(bǔ)全json


image.png
build/classes/java/main/META-INF/spring-configuration-metadata.json
{
  "groups": [
    {
      "name": "lucky.zookeeper",
      "type": "com.lucky.config.properties.LuckyZookeeperProperties",
      "sourceType": "com.lucky.config.properties.LuckyZookeeperProperties"
    },
    {
      "name": "lucky.zookeeper.retry-policy",
      "type": "com.lucky.config.properties.LuckyZookeeperProperties$RetryPolicy",
      "sourceType": "com.lucky.config.properties.LuckyZookeeperProperties",
      "sourceMethod": "getRetryPolicy()"
    },
    {
      "name": "spring.datasource.druid.primary",
      "type": "javax.sql.DataSource",
      "sourceType": "com.lucky.config.PrimaryDataSourceConfig",
      "sourceMethod": "dataSource()"
    }
  ],
  "properties": [
    {
      "name": "lucky.zookeeper.connect-string",
      "type": "java.lang.String",
      "description": "zookeeper地址格式:Ip1:port1,Ip2:port2.",
      "sourceType": "com.lucky.config.properties.LuckyZookeeperProperties"
    },
    {
      "name": "lucky.zookeeper.connection-timeout-ms",
      "type": "java.lang.Integer",
      "sourceType": "com.lucky.config.properties.LuckyZookeeperProperties",
      "defaultValue": 0
    },
    {
      "name": "lucky.zookeeper.retry-policy.base-sleep-time-ms",
      "type": "java.lang.Integer",
      "sourceType": "com.lucky.config.properties.LuckyZookeeperProperties$RetryPolicy",
      "defaultValue": 0
    },
    {
      "name": "lucky.zookeeper.retry-policy.max-retries",
      "type": "java.lang.Integer",
      "sourceType": "com.lucky.config.properties.LuckyZookeeperProperties$RetryPolicy",
      "defaultValue": 0
    },
    {
      "name": "lucky.zookeeper.session-timeout-ms",
      "type": "java.lang.Integer",
      "sourceType": "com.lucky.config.properties.LuckyZookeeperProperties",
      "defaultValue": 0
    }
  ],
  "hints": [
    {
      "name": "lucky.zookeeper.connect-string",
      "values": [
        {
          "value": "localhost:2181"
        },
        {
          "value": "192.168.56.103:2181,192.168.56.104:2181,192.168.56.105:2181"
        },
        {
          "value": "192.168.56.103:2181"
        }
      ]
    }
  ]
}
  • 打開application.yml,發(fā)現(xiàn)有提示了
lucky:
  zookeeper:
    session-timeout-ms: 6000
    connection-timeout-ms: 6000
    retry-policy:
      base-sleep-time-ms: 1000
      max-retries: 3
    connect-string: 192.168.56.103:2181,192.168.56.104:2181,192.168.56.105:2181
  • 如果想輸入的情況也有提示,在resources目錄下面的META-INF中新建additional-spring-configuration-metadata.json
    (這里的additional-spring-configuration-metadata.json會(huì)自動(dòng)合并到spring-configuration-metadata.json當(dāng)中)
{
  "properties": [
    {
      "name": "lucky.zookeeper.connect-string",
      "type": "java.lang.String",
      "description": "zookeeper地址格式:Ip1:port1,Ip2:port2.",
      "sourceType": "com.lucky.config.properties.LuckyZookeeperProperties"
    }
  ],
  "hints": [
    {
      "name": "lucky.zookeeper.connect-string",
      "values": [
        {
          "value": "localhost:2181"
        },
        {
          "value": "192.168.56.103:2181,192.168.56.104:2181,192.168.56.105:2181"
        },
        {
          "value": "192.168.56.103:2181"
        }
      ]
    }
  ]
}
  • 連輸入都有提示了


    image.png
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個(gè)濱河市责嚷,隨后出現(xiàn)的幾起案子逼争,更是在濱河造成了極大的恐慌确丢,老刑警劉巖魂那,帶你破解...
    沈念sama閱讀 218,941評(píng)論 6 508
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件六敬,死亡現(xiàn)場(chǎng)離奇詭異诡右,居然都是意外死亡安岂,警方通過查閱死者的電腦和手機(jī),發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 93,397評(píng)論 3 395
  • 文/潘曉璐 我一進(jìn)店門稻爬,熙熙樓的掌柜王于貴愁眉苦臉地迎上來嗜闻,“玉大人,你說我怎么就攤上這事桅锄×瘀ǎ” “怎么了?”我有些...
    開封第一講書人閱讀 165,345評(píng)論 0 356
  • 文/不壞的土叔 我叫張陵友瘤,是天一觀的道長(zhǎng)翠肘。 經(jīng)常有香客問我,道長(zhǎng)辫秧,這世上最難降的妖魔是什么束倍? 我笑而不...
    開封第一講書人閱讀 58,851評(píng)論 1 295
  • 正文 為了忘掉前任,我火速辦了婚禮盟戏,結(jié)果婚禮上绪妹,老公的妹妹穿的比我還像新娘。我一直安慰自己柿究,他們只是感情好邮旷,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,868評(píng)論 6 392
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著蝇摸,像睡著了一般婶肩。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上貌夕,一...
    開封第一講書人閱讀 51,688評(píng)論 1 305
  • 那天律歼,我揣著相機(jī)與錄音,去河邊找鬼啡专。 笑死险毁,一個(gè)胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播畔况,決...
    沈念sama閱讀 40,414評(píng)論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼离唐,長(zhǎng)吁一口氣:“原來是場(chǎng)噩夢(mèng)啊……” “哼!你這毒婦竟也來了问窃?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 39,319評(píng)論 0 276
  • 序言:老撾萬榮一對(duì)情侶失蹤完沪,失蹤者是張志新(化名)和其女友劉穎域庇,沒想到半個(gè)月后,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體覆积,經(jīng)...
    沈念sama閱讀 45,775評(píng)論 1 315
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡听皿,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,945評(píng)論 3 336
  • 正文 我和宋清朗相戀三年,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了宽档。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片尉姨。...
    茶點(diǎn)故事閱讀 40,096評(píng)論 1 350
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡,死狀恐怖吗冤,靈堂內(nèi)的尸體忽然破棺而出又厉,到底是詐尸還是另有隱情,我是刑警寧澤椎瘟,帶...
    沈念sama閱讀 35,789評(píng)論 5 346
  • 正文 年R本政府宣布覆致,位于F島的核電站,受9級(jí)特大地震影響肺蔚,放射性物質(zhì)發(fā)生泄漏煌妈。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,437評(píng)論 3 331
  • 文/蒙蒙 一宣羊、第九天 我趴在偏房一處隱蔽的房頂上張望璧诵。 院中可真熱鬧,春花似錦仇冯、人聲如沸之宿。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,993評(píng)論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽澈缺。三九已至,卻和暖如春炕婶,著一層夾襖步出監(jiān)牢的瞬間姐赡,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 33,107評(píng)論 1 271
  • 我被黑心中介騙來泰國(guó)打工柠掂, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留项滑,地道東北人。 一個(gè)月前我還...
    沈念sama閱讀 48,308評(píng)論 3 372
  • 正文 我出身青樓涯贞,卻偏偏與公主長(zhǎng)得像枪狂,于是被迫代替她去往敵國(guó)和親危喉。 傳聞我的和親對(duì)象是個(gè)殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 45,037評(píng)論 2 355