{"id":1921,"date":"2023-04-01T09:45:24","date_gmt":"2023-04-01T01:45:24","guid":{"rendered":"https:\/\/www.appblog.cn\/?p=1921"},"modified":"2023-04-22T08:52:06","modified_gmt":"2023-04-22T00:52:06","slug":"spring-boot-dynamically-obtains-yaml-configured-list-array-object-through-nacos","status":"publish","type":"post","link":"https:\/\/www.appblog.cn\/index.php\/2023\/04\/01\/spring-boot-dynamically-obtains-yaml-configured-list-array-object-through-nacos\/","title":{"rendered":"Spring Boot\u901a\u8fc7Nacos\u52a8\u6001\u83b7\u53d6yaml\u914d\u7f6e\u7684List\u6570\u7ec4\u5bf9\u8c61\u5e76\u6620\u5c04"},"content":{"rendered":"<h2>\u65b9\u6848\u4e00<\/h2>\n<h3>\u9700\u6c42\u7b80\u4ecb<\/h3>\n<ol>\n<li>\u5728yml\u6587\u4ef6\u52a8\u6001\u914d\u7f6e\u9879\u76ee\u540d\u79f0\u4e0e\u9879\u76eeID\uff08\u52a8\u6001\u914d\u7f6e\u901a\u8fc7nacos\u5b9e\u73b0\uff09<\/li>\n<li>\u56e0\u4e3a\u5217\u8868\u6570\u91cf\u5f88\u5c11\uff0c\u53c8\u4f1a\u6539\u52a8\uff0c\u53c8\u4e0d\u60f3\u5b58\u6570\u636e\u5e93\u5355\u72ec\u5efa\u4e2a\u8868\u7ef4\u62a4\uff0c\u6545\u901a\u8fc7\u914d\u7f6e\u6587\u4ef6\u7684\u9879\u76ee\u5217\u8868\u4fe1\u606f<\/li>\n<\/ol>\n<p><!-- more --><\/p>\n<h3>application.yml \u914d\u7f6e<\/h3>\n<h4>\u65b0\u589e\/\u5220\u9664\/\u66f4\u6539 list \u5373\u53ef<\/h4>\n<pre><code class=\"language-yml\">projects:\n  list:\n    - name: project_one\n      projectId: project_01\n    - name: project_two\n      projectId: project_02<\/code><\/pre>\n<h4>\u914d\u7f6e\u7c7b<\/h4>\n<pre><code class=\"language-java\">@RefreshScope\n@Configuration\n@ConfigurationProperties(prefix = &quot;projects&quot;)\npublic class Projects {\n\n    public static List&lt;Map&lt;String, String&gt;&gt; list;   \/\/static \u624d\u80fd\u62ff\u914d\u7f6e\u503c\n\n    public static List&lt;Map&lt;String, String&gt;&gt; getList() {\n        return list;\n    }\n\n    public void setList(List&lt;Map&lt;String, String&gt;&gt; list) {\n        Projects.list = list;\n    }\n}<\/code><\/pre>\n<h4>REST\u63a5\u53e3<\/h4>\n<pre><code class=\"language-java\">@GetMapping(&quot;\/projects&quot;)\npublic Result&lt;Object&gt; projectList() {\n    List&lt;Map&lt;String, String&gt;&gt; list = Projects.getMap(); \n\n    return Result.ok(list); \n}<\/code><\/pre>\n<blockquote>\n<p>\u7f3a\u9677\uff1a\u4e0d\u80fd\u52a8\u6001\u5237\u65b0<\/p>\n<\/blockquote>\n<h2>\u65b9\u6848\u4e8c\uff08\u7ec8\u6781\u65b9\u6848\uff09<\/h2>\n<pre><code class=\"language-yml\">alipay:\n  custom:\n    productList:\n      - productId: alipay_test1\n        productType: offline\n        merchantIds: 10000001,10000002\n        partnerId: &#039;2088******&#039;\n        commissionFlag: test1\n        signType: MD5\n        signKey: ******\n        callbackKey: ******\n      - productId: alipay_test2\n        productType: offline\n        merchantIds: 10000005,10000006\n        partnerId: &#039;2088******&#039;\n        commissionFlag: test2\n        signType: RSA\n        signKey: ******\n        callbackKey: ******\n      - productId: alipay_test3\n        productType: online \n        merchantIds: 10000007,10000008\n        partnerId: &#039;2088******&#039;\n        commissionFlag: test3\n        signType: RSA\n        signKey: ******\n        callbackKey: ******<\/code><\/pre>\n<pre><code class=\"language-java\">@Configuration\n@RefreshScope\npublic class AlipayCustomConfig {\n\n    @Bean\n    @ConfigurationProperties(prefix = &quot;alipay.custom.products&quot;)\n    public List&lt;Map&lt;String, String&gt;&gt; products() {\n        \/\/ old key still exist when delete this key on nacos\n        return new ArrayList&lt;&gt;();\n    }\n}<\/code><\/pre>\n<pre><code class=\"language-java\">@Slf4j\n@RestController\npublic class TestController {\n\n    @Autowired\n    private AlipayCustomConfig alipayCustomConfig;\n\n    @GetMapping(&quot;\/test&quot;)\n    @ResponseBody\n    public String getKey() {\n        return JsonUtil.obj2Str(alipayCustomConfig.products());\n    }\n}<\/code><\/pre>\n","protected":false},"excerpt":{"rendered":"<p>\u65b9\u6848\u4e00 \u9700\u6c42\u7b80\u4ecb \u5728yml\u6587\u4ef6\u52a8\u6001\u914d\u7f6e\u9879\u76ee\u540d\u79f0\u4e0e\u9879\u76eeID\uff08\u52a8\u6001\u914d\u7f6e\u901a\u8fc7nacos\u5b9e\u73b0\uff09 \u56e0\u4e3a\u5217\u8868\u6570\u91cf\u5f88\u5c11\uff0c\u53c8\u4f1a [&hellip;]<\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[17,41],"tags":[],"class_list":["post-1921","post","type-post","status-publish","format-standard","hentry","category-nacos","category-spring-boot"],"_links":{"self":[{"href":"https:\/\/www.appblog.cn\/index.php\/wp-json\/wp\/v2\/posts\/1921","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.appblog.cn\/index.php\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.appblog.cn\/index.php\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.appblog.cn\/index.php\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/www.appblog.cn\/index.php\/wp-json\/wp\/v2\/comments?post=1921"}],"version-history":[{"count":0,"href":"https:\/\/www.appblog.cn\/index.php\/wp-json\/wp\/v2\/posts\/1921\/revisions"}],"wp:attachment":[{"href":"https:\/\/www.appblog.cn\/index.php\/wp-json\/wp\/v2\/media?parent=1921"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.appblog.cn\/index.php\/wp-json\/wp\/v2\/categories?post=1921"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.appblog.cn\/index.php\/wp-json\/wp\/v2\/tags?post=1921"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}