From a8cf02e74f2416f9bde8dbe427e75c5a5eb1c4cc Mon Sep 17 00:00:00 2001 From: RuanSheng Date: Sat, 28 Jan 2023 18:10:51 +0800 Subject: [PATCH] update nacos config examples (#3110) * update nacos config examples --- .../main/asciidoc-zh/sca-upgrade-guide.adoc | 2 +- .../src/main/asciidoc/sca-upgrade-guide.adoc | 2 +- .../nacos-config-2.4.x-example/pom.xml | 51 ---------- .../nacos-config-2.4.x-example/readme-zh.md | 99 ------------------- .../nacos-config-2.4.x-example/readme.md | 99 ------------------- .../cloud/imports/examples/Application.java | 36 ------- .../examples/controller/UserController.java | 43 -------- .../imports/examples/model/UserConfig.java | 45 --------- .../src/main/resources/application.yml | 15 --- .../nacos-config-example/pom.xml | 5 - .../nacos-config-example/readme-zh.md | 77 ++++++--------- .../nacos-config-example/readme.md | 72 +++++--------- ...ation.java => NacosConfigApplication.java} | 4 +- .../example/ExtensionConfigExample.java | 64 ------------ .../examples/example/SharedConfigExample.java | 63 ------------ .../src/main/resources/application.properties | 3 - .../src/main/resources/application.yaml | 25 +++++ .../src/main/resources/bootstrap.properties | 37 ------- spring-cloud-alibaba-examples/pom.xml | 1 - 19 files changed, 84 insertions(+), 659 deletions(-) delete mode 100644 spring-cloud-alibaba-examples/nacos-example/nacos-config-2.4.x-example/pom.xml delete mode 100644 spring-cloud-alibaba-examples/nacos-example/nacos-config-2.4.x-example/readme-zh.md delete mode 100644 spring-cloud-alibaba-examples/nacos-example/nacos-config-2.4.x-example/readme.md delete mode 100644 spring-cloud-alibaba-examples/nacos-example/nacos-config-2.4.x-example/src/main/java/com/alibaba/cloud/imports/examples/Application.java delete mode 100644 spring-cloud-alibaba-examples/nacos-example/nacos-config-2.4.x-example/src/main/java/com/alibaba/cloud/imports/examples/controller/UserController.java delete mode 100644 spring-cloud-alibaba-examples/nacos-example/nacos-config-2.4.x-example/src/main/java/com/alibaba/cloud/imports/examples/model/UserConfig.java delete mode 100644 spring-cloud-alibaba-examples/nacos-example/nacos-config-2.4.x-example/src/main/resources/application.yml rename spring-cloud-alibaba-examples/nacos-example/nacos-config-example/src/main/java/com/alibaba/cloud/examples/{Application.java => NacosConfigApplication.java} (90%) delete mode 100644 spring-cloud-alibaba-examples/nacos-example/nacos-config-example/src/main/java/com/alibaba/cloud/examples/example/ExtensionConfigExample.java delete mode 100644 spring-cloud-alibaba-examples/nacos-example/nacos-config-example/src/main/java/com/alibaba/cloud/examples/example/SharedConfigExample.java delete mode 100644 spring-cloud-alibaba-examples/nacos-example/nacos-config-example/src/main/resources/application.properties create mode 100644 spring-cloud-alibaba-examples/nacos-example/nacos-config-example/src/main/resources/application.yaml delete mode 100644 spring-cloud-alibaba-examples/nacos-example/nacos-config-example/src/main/resources/bootstrap.properties diff --git a/spring-cloud-alibaba-docs/src/main/asciidoc-zh/sca-upgrade-guide.adoc b/spring-cloud-alibaba-docs/src/main/asciidoc-zh/sca-upgrade-guide.adoc index 3d6babc8e..76b60b488 100644 --- a/spring-cloud-alibaba-docs/src/main/asciidoc-zh/sca-upgrade-guide.adoc +++ b/spring-cloud-alibaba-docs/src/main/asciidoc-zh/sca-upgrade-guide.adoc @@ -98,7 +98,7 @@ Add a spring.config.import=nacos: property to your configuration. - 假如想保留以前的使用方式 (bootstrap引入配置),你只需要添加依赖 `spring-cloud-starter-bootstrap` 依赖,不需要修改一行代码 -你可以前往 https://github.com/alibaba/spring-cloud-alibaba/tree/2021.x/spring-cloud-alibaba-examples/nacos-example/nacos-config-2.4.x-example[这里] 查看具体example +你可以前往 https://github.com/alibaba/spring-cloud-alibaba/tree/2021.x/spring-cloud-alibaba-examples/nacos-example/nacos-config-example[这里] 查看具体example ==== Nacos 容错能力 diff --git a/spring-cloud-alibaba-docs/src/main/asciidoc/sca-upgrade-guide.adoc b/spring-cloud-alibaba-docs/src/main/asciidoc/sca-upgrade-guide.adoc index f7dd0cb73..07655f828 100644 --- a/spring-cloud-alibaba-docs/src/main/asciidoc/sca-upgrade-guide.adoc +++ b/spring-cloud-alibaba-docs/src/main/asciidoc/sca-upgrade-guide.adoc @@ -98,7 +98,7 @@ You can manually turn it off by setting `spring.cloud.nacos.config.import-check. - If you want to keep the previous usage (bootstrap way), you only need to add the dependency `spring-cloud-starter-bootstrap` dependency and don't need modifying a line of code. -you can go https://github.com/alibaba/spring-cloud-alibaba/tree/2021.x/spring-cloud-alibaba-examples/nacos-example/nacos-config-2.4.x-example[here] to see the complete example. +you can go https://github.com/alibaba/spring-cloud-alibaba/tree/2021.x/spring-cloud-alibaba-examples/nacos-example/nacos-config-example[here] to see the complete example. ==== Nacos Failure Tolerance diff --git a/spring-cloud-alibaba-examples/nacos-example/nacos-config-2.4.x-example/pom.xml b/spring-cloud-alibaba-examples/nacos-example/nacos-config-2.4.x-example/pom.xml deleted file mode 100644 index 7f6233b27..000000000 --- a/spring-cloud-alibaba-examples/nacos-example/nacos-config-2.4.x-example/pom.xml +++ /dev/null @@ -1,51 +0,0 @@ - - - - - com.alibaba.cloud - spring-cloud-alibaba-examples - ${revision} - ../../pom.xml - - 4.0.0 - - nacos-config-2.4.x-example - Spring Cloud Starter Alibaba Nacos Config 2.4.x Example - Example demonstrating how to use nacos config in spring boot 2.4.x - jar - - - - - org.springframework.boot - spring-boot-starter-web - - - com.alibaba.cloud - spring-cloud-starter-alibaba-nacos-config - - - org.projectlombok - lombok - - - - - - - org.springframework.boot - spring-boot-maven-plugin - - - org.apache.maven.plugins - maven-deploy-plugin - ${maven-deploy-plugin.version} - - true - - - - - - diff --git a/spring-cloud-alibaba-examples/nacos-example/nacos-config-2.4.x-example/readme-zh.md b/spring-cloud-alibaba-examples/nacos-example/nacos-config-2.4.x-example/readme-zh.md deleted file mode 100644 index 336b09648..000000000 --- a/spring-cloud-alibaba-examples/nacos-example/nacos-config-2.4.x-example/readme-zh.md +++ /dev/null @@ -1,99 +0,0 @@ -# Nacos Config 2.4.x Example - -## 项目说明 - -Spring Boot 2.4.0 版本开始默认不启动 bootstrap 容器 -本项目演示如何在 Spring boot >= 2.4.0 版本不启用 bootstrap 容器情况下如何使用 nacos - -***适用于 Spring boot >= 2.4.0 并且使用 import 方式导入配置,将不会再默认拉取配置,需要手动配置 dataId。*** - -## 示例 - -### 如何接入 - -1. 首先,修改 pom.xml 文件,引入 Nacos Config Starter -```xml - - org.springframework.boot - spring-boot-starter-web - - - com.alibaba.cloud - spring-cloud-starter-alibaba-nacos-config - -``` - - -2. 在应用的 /src/main/resources/***application.yml*** 配置文件中配置 Nacos Config 元数据 -```yaml -server: - port: 8888 -spring: - application: - name: nacos-config-import-example - cloud: - nacos: - config: - group: DEFAULT_GROUP - server-addr: 127.0.0.1:8848 - config: - import: - - optional:nacos:test.yml - - optional:nacos:test01.yml?group=group_02 - - optional:nacos:test02.yml?group=group_03&refreshEnabled=false -``` - -3. 在 nacos 创建 test.yml -```yaml -configdata: - user: - age: 21 - name: freeman - map: - hobbies: - - art - - programming - intro: Hello, I'm freeman - users: - - name: dad - age: 20 - - name: mom - age: 18 -``` - -4. 完成上述操作后,应用会从 Nacos Config 中获取相应的配置,并添加在 Spring Environment 的 PropertySources 中 -```java -// controller -@RestController -public class UserController { - - @Autowired - private UserConfig userConfig; - - @GetMapping - public String get() throws JsonProcessingException { - return new ObjectMapper().writeValueAsString(userConfig); - } - -} - -// ConfigurationProperties -@ConfigurationProperties(prefix = "configdata.user") -public class UserConfig { - private String name; - private Integer age; - private Map map; - private List users; - // getters and setters ... - - public static class User { - private String name; - private Integer age; - // getters and setters ... - } -} -``` - -验证动态刷新 -访问 http://localhost:8888 -再从 nacos 修改配置, 再次访问即可验证动态配置生效 diff --git a/spring-cloud-alibaba-examples/nacos-example/nacos-config-2.4.x-example/readme.md b/spring-cloud-alibaba-examples/nacos-example/nacos-config-2.4.x-example/readme.md deleted file mode 100644 index 4221f057c..000000000 --- a/spring-cloud-alibaba-examples/nacos-example/nacos-config-2.4.x-example/readme.md +++ /dev/null @@ -1,99 +0,0 @@ -# Nacos Config 2.4.x Example - -## Project Instruction - -Spring Boot version 2.4.0 does not start the bootstrap container by default. -This project demonstrates how to use nacos when Spring boot >= 2.4.0 version does not enable the bootstrap container. - -***Applicable to Spring boot >= 2.4.0 and import the configuration using the import method, the configuration will no longer be pulled by default, and the dataId needs to be configured manually.*** - -## Demo - -### How to use - -1. First, modify the pom.xml file and introduce Nacos Config Starter -```xml - - org.springframework.boot - spring-boot-starter-web - - - com.alibaba.cloud - spring-cloud-starter-alibaba-nacos-config - -``` - - -2. Configure Nacos Config metadata in the application's src/main/resources/***application.yml*** configuration file -```yaml -server: - port: 8888 -spring: - application: - name: nacos-config-import-example - cloud: - nacos: - config: - group: DEFAULT_GROUP - server-addr: 127.0.0.1:8848 - config: - import: - - optional:nacos:test.yml - - optional:nacos:test01.yml?group=group_02 - - optional:nacos:test02.yml?group=group_03&refreshEnabled=false -``` - -3. Create test.yml in nacos -```yaml -configdata: - user: - age: 21 - name: freeman - map: - hobbies: - - art - - programming - intro: Hello, I'm freeman - users: - - name: dad - age: 20 - - name: mom - age: 18 -``` - -4. After completing the above operations, the application will obtain the corresponding configuration from Nacos Config and add it to the PropertySources of Spring Environment -```java -// controller -@RestController -public class UserController { - - @Autowired - private UserConfig userConfig; - - @GetMapping - public String get() throws JsonProcessingException { - return new ObjectMapper().writeValueAsString(userConfig); - } - -} - -// ConfigurationProperties -@ConfigurationProperties(prefix = "configdata.user") -public class UserConfig { - private String name; - private Integer age; - private Map map; - private List users; - // getters and setters ... - - public static class User { - private String name; - private Integer age; - // getters and setters ... - } -} -``` - -Verify dynamic refresh -access http://localhost:8888 -Then modify the configuration from nacos, and visit again to verify that the dynamic configuration takes effect. diff --git a/spring-cloud-alibaba-examples/nacos-example/nacos-config-2.4.x-example/src/main/java/com/alibaba/cloud/imports/examples/Application.java b/spring-cloud-alibaba-examples/nacos-example/nacos-config-2.4.x-example/src/main/java/com/alibaba/cloud/imports/examples/Application.java deleted file mode 100644 index a3e47854f..000000000 --- a/spring-cloud-alibaba-examples/nacos-example/nacos-config-2.4.x-example/src/main/java/com/alibaba/cloud/imports/examples/Application.java +++ /dev/null @@ -1,36 +0,0 @@ -/* - * Copyright 2013-2018 the original author or authors. - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * https://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -package com.alibaba.cloud.imports.examples; - -import com.alibaba.cloud.imports.examples.model.UserConfig; - -import org.springframework.boot.SpringApplication; -import org.springframework.boot.autoconfigure.SpringBootApplication; -import org.springframework.boot.context.properties.EnableConfigurationProperties; - -/** - * @author freeman - */ -@SpringBootApplication -@EnableConfigurationProperties(UserConfig.class) -public class Application { - - public static void main(String[] args) { - SpringApplication.run(Application.class, args); - } - -} diff --git a/spring-cloud-alibaba-examples/nacos-example/nacos-config-2.4.x-example/src/main/java/com/alibaba/cloud/imports/examples/controller/UserController.java b/spring-cloud-alibaba-examples/nacos-example/nacos-config-2.4.x-example/src/main/java/com/alibaba/cloud/imports/examples/controller/UserController.java deleted file mode 100644 index adfce66b1..000000000 --- a/spring-cloud-alibaba-examples/nacos-example/nacos-config-2.4.x-example/src/main/java/com/alibaba/cloud/imports/examples/controller/UserController.java +++ /dev/null @@ -1,43 +0,0 @@ -/* - * Copyright 2013-2022 the original author or authors. - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * https://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -package com.alibaba.cloud.imports.examples.controller; - -import com.alibaba.cloud.imports.examples.model.UserConfig; -import com.fasterxml.jackson.core.JsonProcessingException; -import com.fasterxml.jackson.databind.ObjectMapper; - -import org.springframework.beans.factory.annotation.Autowired; -import org.springframework.web.bind.annotation.GetMapping; -import org.springframework.web.bind.annotation.RestController; - -/** - * - * - * @author freeman - */ -@RestController -public class UserController { - - @Autowired - private UserConfig userConfig; - - @GetMapping - public String get() throws JsonProcessingException { - return new ObjectMapper().writeValueAsString(userConfig); - } - -} diff --git a/spring-cloud-alibaba-examples/nacos-example/nacos-config-2.4.x-example/src/main/java/com/alibaba/cloud/imports/examples/model/UserConfig.java b/spring-cloud-alibaba-examples/nacos-example/nacos-config-2.4.x-example/src/main/java/com/alibaba/cloud/imports/examples/model/UserConfig.java deleted file mode 100644 index 5cf69981e..000000000 --- a/spring-cloud-alibaba-examples/nacos-example/nacos-config-2.4.x-example/src/main/java/com/alibaba/cloud/imports/examples/model/UserConfig.java +++ /dev/null @@ -1,45 +0,0 @@ -/* - * Copyright 2013-2022 the original author or authors. - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * https://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -package com.alibaba.cloud.imports.examples.model; - -import java.util.List; -import java.util.Map; - -import lombok.Data; - -import org.springframework.boot.context.properties.ConfigurationProperties; - -/** - * - * - * @author freeman - */ -@Data -@ConfigurationProperties(prefix = "configdata.user") -public class UserConfig { - private String name; - private Integer age; - private Map map; - private List users; - - @Data - public static class User { - private String name; - private Integer age; - } - -} diff --git a/spring-cloud-alibaba-examples/nacos-example/nacos-config-2.4.x-example/src/main/resources/application.yml b/spring-cloud-alibaba-examples/nacos-example/nacos-config-2.4.x-example/src/main/resources/application.yml deleted file mode 100644 index 48ae8b178..000000000 --- a/spring-cloud-alibaba-examples/nacos-example/nacos-config-2.4.x-example/src/main/resources/application.yml +++ /dev/null @@ -1,15 +0,0 @@ -server: - port: 8888 -spring: - application: - name: nacos-config-import-example - cloud: - nacos: - config: - group: DEFAULT_GROUP - server-addr: 127.0.0.1:8848 - config: - import: - - optional:nacos:test.yml - - optional:nacos:test01.yml?group=group_02 - - optional:nacos:test02.yml?group=group_03&refreshEnabled=false diff --git a/spring-cloud-alibaba-examples/nacos-example/nacos-config-example/pom.xml b/spring-cloud-alibaba-examples/nacos-example/nacos-config-example/pom.xml index 1f4776d7a..3f1ddc300 100644 --- a/spring-cloud-alibaba-examples/nacos-example/nacos-config-example/pom.xml +++ b/spring-cloud-alibaba-examples/nacos-example/nacos-config-example/pom.xml @@ -25,11 +25,6 @@ com.alibaba.cloud spring-cloud-starter-alibaba-nacos-config - - org.springframework.cloud - spring-cloud-starter-bootstrap - - org.springframework.boot spring-boot-starter-actuator diff --git a/spring-cloud-alibaba-examples/nacos-example/nacos-config-example/readme-zh.md b/spring-cloud-alibaba-examples/nacos-example/nacos-config-example/readme-zh.md index 1c64ff385..bd6fd989a 100644 --- a/spring-cloud-alibaba-examples/nacos-example/nacos-config-example/readme-zh.md +++ b/spring-cloud-alibaba-examples/nacos-example/nacos-config-example/readme-zh.md @@ -4,7 +4,6 @@ 本项目演示如何使用 Nacos Config Starter 完成 Spring Cloud 应用的配置管理。 -***注意: 适用于 spring boot 版本低于 2.4.0,如果版本高于 2.4.0,考虑使用 import 方式导入配置。*** [Nacos](https://github.com/alibaba/Nacos) 是阿里巴巴开源的一个更易于构建云原生应用的动态服务发现、配置管理和服务管理平台。 @@ -15,24 +14,29 @@ **注意 本章节只是为了便于您理解接入方式,本示例代码中已经完成接入工作,您无需再进行修改。** 1. 首先,修改 pom.xml 文件,引入 Nacos Config Starter。 - - - com.alibaba.cloud - spring-cloud-starter-alibaba-nacos-config - - -2. 在应用的 /src/main/resources/bootstrap.properties 配置文件中配置 Nacos Config 元数据 - - spring.application.name=nacos-config-example - spring.cloud.nacos.config.server-addr=127.0.0.1:8848 +```xml + + com.alibaba.cloud + spring-cloud-starter-alibaba-nacos-config + +``` + +2. 在应用的 /src/main/resources/application.yaml 配置文件中配置 Nacos Config 地址并引入服务配置 +```yaml +spring: + cloud: + nacos: + serverAddr: 127.0.0.1:8848 + config: + import: + - nacos:nacos-config-example.properties?refresh=true +``` 3. 完成上述两步后,应用会从 Nacos Config 中获取相应的配置,并添加在 Spring Environment 的 PropertySources 中。假设我们通过 Nacos 配置中心保存 Nacos 的部分配置,有以下四种例子: - BeanAutoRefreshConfigExample: 通过将配置信息配置为bean,支持配置变自动刷新的例子 - ConfigListenerExample: 监听配置信息的例子 - DockingInterfaceExample: 对接 nacos 接口,通过接口完成对配置信息增删改查的例子 - ValueAnnotationExample: 通过 @Value 注解进行配置信息获取的例子 -- SharedConfigExample: 共享配置的例子 -- ExtensionConfigExample: 扩展配置的例子 ### 启动 Nacos Server 并添加配置 @@ -64,48 +68,23 @@ spring.cloud.nacos.config.group=GROUP spring.cloud.nacos.config.namespace=NAMESPACE -4. 添加共享配置和扩展配置 - - 共享配置: - ``` - dataId为: data-source.yaml - group 为: DEFAULT_GROUP - - 内容如下: - - spring: - datasource: - name: datasource - url: jdbc:mysql://127.0.0.1:3306/nacos?characterEncoding=UTF-8&characterSetResults=UTF-8&zeroDateTimeBehavior=convertToNull&useDynamicCharsetInfo=false&useSSL=false - username: root - password: root - driverClassName: com.mysql.jdbc.Driver - ``` - 扩展配置: - > 可以使用扩展配置覆盖共享配置中的配置 - ``` - dataId为: ext-data-source.yaml - group 为: DEFAULT_GROUP - - 内容如下: - - spring: - datasource: - username: ext-root - password: ext-root - ``` ### 应用启动 -1. 增加配置,在应用的 /src/main/resources/application.properties 中添加基本配置信息 - - server.port=18084 - management.endpoints.web.exposure.include=* - +1. 增加配置,在应用的 /src/main/resources/application.yaml 中添加基本配置信息 +```yaml +server: + port: 18084 +management: + endpoints: + web: + exposure: + include: '*' +``` 2. 启动应用,支持 IDE 直接启动和编译打包后启动。 - 1. IDE直接启动:找到主类 `Application`,执行 main 方法启动应用。 + 1. IDE直接启动:找到主类 `NacosConfigApplication`,执行 main 方法启动应用。 2. 打包编译后启动:首先执行 `mvn clean package` 将工程编译打包,然后执行 `java -jar nacos-config-example.jar`启动应用。 ### 验证 diff --git a/spring-cloud-alibaba-examples/nacos-example/nacos-config-example/readme.md b/spring-cloud-alibaba-examples/nacos-example/nacos-config-example/readme.md index a6f12999c..77889a070 100644 --- a/spring-cloud-alibaba-examples/nacos-example/nacos-config-example/readme.md +++ b/spring-cloud-alibaba-examples/nacos-example/nacos-config-example/readme.md @@ -16,16 +16,23 @@ Before we start the demo, let's learn how to connect Nacos Config to a Spring Cl 1. Add dependency spring-cloud-starter-alibaba-nacos-config in the pom.xml file in your Spring Cloud project. - - - com.alibaba.cloud - spring-cloud-starter-alibaba-nacos-config - - -2. Add Nacos config metadata configurations to file /src/main/resources/bootstrap.properties - - spring.application.name=nacos-config-example - spring.cloud.nacos.config.server-addr=127.0.0.1:8848 +```xml + + com.alibaba.cloud + spring-cloud-starter-alibaba-nacos-config + +``` + +2. Add Nacos config metadata configurations to file /src/main/resources/application.yaml and import service config +```yaml +spring: + cloud: + nacos: + serverAddr: 127.0.0.1:8848 + config: + import: + - nacos:nacos-config-example.properties?refresh=true +``` 3. After completing the above two steps, the application will obtain the corresponding configuration from Nacos Config and add it to the PropertySources of Spring Environment. Suppose we save part of the configuration of Nacos through the Nacos configuration center, there are the following four examples: - BeanAutoRefreshConfigExample: An example that supports automatic refresh of configuration changes by configuring configuration information as beans @@ -66,44 +73,19 @@ Before we start the demo, let's learn how to connect Nacos Config to a Spring Cl spring.cloud.nacos.config.group=GROUP spring.cloud.nacos.config.namespace=NAMESPACE -4. Add shared configuration and extended configuration - - Shared configuration: - ``` - dataId is: data-source.yaml - group is: DEFAULT_GROUP - - content is: - - spring: - datasource: - name: datasource - url: jdbc:mysql://127.0.0.1:3306/nacos?characterEncoding=UTF-8&characterSetResults=UTF-8&zeroDateTimeBehavior=convertToNull&useDynamicCharsetInfo=false&useSSL=false - username: root - password: root - driverClassName: com.mysql.jdbc.Driver - ``` - Extended configuration: - > Configuration in shared configuration can be overridden with extended configuration - ``` - dataId is: ext-data-source.yaml - group is: DEFAULT_GROUP - - content is: - - spring: - datasource: - username: ext-root - password: ext-root - ``` - ### Start Application 1. Add necessary configurations to file /src/main/resources/application.properties - - server.port=18084 - management.endpoints.web.exposure.include=* +```yaml +server: + port: 18084 +management: + endpoints: + web: + exposure: + include: '*' +``` 2. Start the application in IDE or by building a fatjar. @@ -160,7 +142,7 @@ Currently only the `properties` type is supported. ### Automatic Injection -Nacos Config Starter implement `org.springframework.cloud.bootstrap.config.PropertySourceLocator` interface, and set order to 0. +Nacos Config Starter implement `org.springframework.boot.context.config.ConfigDataLoader` interface, and set order to 0. In the startup phase of the Spring Cloud application, the corresponding data is obtained from the Nacos Server side, and the acquired data is converted into a PropertySource and injected into the PropertySources property of the Spring Environment. so the @Value annotation can also directly obtain the configuration of the Nacos Server side. diff --git a/spring-cloud-alibaba-examples/nacos-example/nacos-config-example/src/main/java/com/alibaba/cloud/examples/Application.java b/spring-cloud-alibaba-examples/nacos-example/nacos-config-example/src/main/java/com/alibaba/cloud/examples/NacosConfigApplication.java similarity index 90% rename from spring-cloud-alibaba-examples/nacos-example/nacos-config-example/src/main/java/com/alibaba/cloud/examples/Application.java rename to spring-cloud-alibaba-examples/nacos-example/nacos-config-example/src/main/java/com/alibaba/cloud/examples/NacosConfigApplication.java index 5562810f4..de73bfe4b 100644 --- a/spring-cloud-alibaba-examples/nacos-example/nacos-config-example/src/main/java/com/alibaba/cloud/examples/Application.java +++ b/spring-cloud-alibaba-examples/nacos-example/nacos-config-example/src/main/java/com/alibaba/cloud/examples/NacosConfigApplication.java @@ -24,10 +24,10 @@ import org.springframework.boot.autoconfigure.SpringBootApplication; * @author xiaojing, Jianwei Mao */ @SpringBootApplication -public class Application { +public class NacosConfigApplication { public static void main(String[] args) { - SpringApplication.run(Application.class, args); + SpringApplication.run(NacosConfigApplication.class, args); } } diff --git a/spring-cloud-alibaba-examples/nacos-example/nacos-config-example/src/main/java/com/alibaba/cloud/examples/example/ExtensionConfigExample.java b/spring-cloud-alibaba-examples/nacos-example/nacos-config-example/src/main/java/com/alibaba/cloud/examples/example/ExtensionConfigExample.java deleted file mode 100644 index 5e801329c..000000000 --- a/spring-cloud-alibaba-examples/nacos-example/nacos-config-example/src/main/java/com/alibaba/cloud/examples/example/ExtensionConfigExample.java +++ /dev/null @@ -1,64 +0,0 @@ -/* - * Copyright 2013-2022 the original author or authors. - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * https://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -package com.alibaba.cloud.examples.example; - -import java.util.HashMap; -import java.util.Map; - -import org.springframework.beans.factory.annotation.Value; -import org.springframework.cloud.context.config.annotation.RefreshScope; -import org.springframework.web.bind.annotation.GetMapping; -import org.springframework.web.bind.annotation.RequestMapping; -import org.springframework.web.bind.annotation.RestController; - -/** - * Example of extended configuration. When a configuration in the shared configuration - * does not meet the requirements, the extended configuration can be used to override the - * shared configuration. Priority: Main Configuration > Extended Configuration > Shared - * Configuration. - * @author lixiaoshuang - */ -@RestController -@RequestMapping("/nacos/extension/config") -@RefreshScope -public class ExtensionConfigExample { - @Value("${spring.datasource.name:}") - private String name; - - @Value("${spring.datasource.url:}") - private String url; - - @Value("${spring.datasource.username:}") - private String username; - - @Value("${spring.datasource.password:}") - private String password; - - @Value("${spring.datasource.driverClassName:}") - private String driverClassName; - - @GetMapping - public Map getConfigInfo() { - Map result = new HashMap<>(4); - result.put("name", name); - result.put("url", url); - result.put("username", username); - result.put("password", password); - result.put("driverClassName", driverClassName); - return result; - } -} diff --git a/spring-cloud-alibaba-examples/nacos-example/nacos-config-example/src/main/java/com/alibaba/cloud/examples/example/SharedConfigExample.java b/spring-cloud-alibaba-examples/nacos-example/nacos-config-example/src/main/java/com/alibaba/cloud/examples/example/SharedConfigExample.java deleted file mode 100644 index 8a7409c99..000000000 --- a/spring-cloud-alibaba-examples/nacos-example/nacos-config-example/src/main/java/com/alibaba/cloud/examples/example/SharedConfigExample.java +++ /dev/null @@ -1,63 +0,0 @@ -/* - * Copyright 2013-2022 the original author or authors. - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * https://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -package com.alibaba.cloud.examples.example; - -import java.util.HashMap; -import java.util.Map; - -import org.springframework.beans.factory.annotation.Value; -import org.springframework.cloud.context.config.annotation.RefreshScope; -import org.springframework.web.bind.annotation.GetMapping; -import org.springframework.web.bind.annotation.RequestMapping; -import org.springframework.web.bind.annotation.RestController; - -/** - * Shared configuration example, Used to resolve multiple projects using the same - * configuration. - * @author lixiaoshuang - */ -@RestController -@RequestMapping("/nacos/shared/config") -@RefreshScope -public class SharedConfigExample { - - @Value("${spring.datasource.name:}") - private String name; - - @Value("${spring.datasource.url:}") - private String url; - - @Value("${spring.datasource.username:}") - private String username; - - @Value("${spring.datasource.password:}") - private String password; - - @Value("${spring.datasource.driverClassName:}") - private String driverClassName; - - @GetMapping - public Map getConfigInfo() { - Map result = new HashMap<>(4); - result.put("name", name); - result.put("url", url); - result.put("username", username); - result.put("password", password); - result.put("driverClassName", driverClassName); - return result; - } -} diff --git a/spring-cloud-alibaba-examples/nacos-example/nacos-config-example/src/main/resources/application.properties b/spring-cloud-alibaba-examples/nacos-example/nacos-config-example/src/main/resources/application.properties deleted file mode 100644 index 95efafd6c..000000000 --- a/spring-cloud-alibaba-examples/nacos-example/nacos-config-example/src/main/resources/application.properties +++ /dev/null @@ -1,3 +0,0 @@ -server.port=18084 -management.endpoints.web.exposure.include=* -management.endpoint.health.show-details=always diff --git a/spring-cloud-alibaba-examples/nacos-example/nacos-config-example/src/main/resources/application.yaml b/spring-cloud-alibaba-examples/nacos-example/nacos-config-example/src/main/resources/application.yaml new file mode 100644 index 000000000..31414e1d0 --- /dev/null +++ b/spring-cloud-alibaba-examples/nacos-example/nacos-config-example/src/main/resources/application.yaml @@ -0,0 +1,25 @@ +server: + port: 18084 + +spring: + application: + name: nacos-config-example + cloud: + nacos: + config: + serverAddr: 127.0.0.1:8848 + config: + import: + - nacos:nacos-config-example.properties?refresh=true +management: + endpoint: + health: + show-details: always + endpoints: + web: + exposure: + include: '*' +logging: + level: + com.alibaba.cloud.nacos.configdata: debug + diff --git a/spring-cloud-alibaba-examples/nacos-example/nacos-config-example/src/main/resources/bootstrap.properties b/spring-cloud-alibaba-examples/nacos-example/nacos-config-example/src/main/resources/bootstrap.properties deleted file mode 100644 index 2cff20a33..000000000 --- a/spring-cloud-alibaba-examples/nacos-example/nacos-config-example/src/main/resources/bootstrap.properties +++ /dev/null @@ -1,37 +0,0 @@ -spring.application.name=nacos-config-example -spring.cloud.nacos.config.server-addr=127.0.0.1:8848 - -#nacos certification information -spring.cloud.nacos.username=nacos -spring.cloud.nacos.password=nacos - -## nacos-namespace cannot user 'public',cause by 'public' has special handing inside. -#spring.cloud.nacos.config.namespace=public - -## you can specify a custom name if you don't want to use the application name. -#spring.cloud.nacos.config.name=test-aaa -#spring.cloud.nacos.config.file-extension=yaml - -## not recommended. -#spring.cloud.nacos.config.refreshable-dataids=common.properties -## not recommended. -#spring.cloud.nacos.config.shared-data-ids=common.properties,base-common.properties - -## recommended. -spring.cloud.nacos.config.shared-configs[0].data-id=data-source.yaml -spring.cloud.nacos.config.shared-configs[0].refresh=true -## the default value is 'DEFAULT_GROUP' , if not specified. -#spring.cloud.nacos.config.shared-configs[0].group=GROUP_APP1 - -## not recommended. -#spring.cloud.nacos.config.ext-config[0]=ext.properties -## recommended. -spring.cloud.nacos.config.extension-configs[0].data-id=ext-data-source.yaml -spring.cloud.nacos.config.extension-configs[0].refresh=true - -# the setting of reading config log print on stdout -logging.level.com.alibaba.cloud.nacos.client=debug - - -spring.cloud.nacos.config.refresh-enabled=true - diff --git a/spring-cloud-alibaba-examples/pom.xml b/spring-cloud-alibaba-examples/pom.xml index 0be9a3c1d..ec38eba79 100644 --- a/spring-cloud-alibaba-examples/pom.xml +++ b/spring-cloud-alibaba-examples/pom.xml @@ -25,7 +25,6 @@ sentinel-example/sentinel-spring-cloud-gateway-example nacos-example/nacos-discovery-example nacos-example/nacos-config-example - nacos-example/nacos-config-2.4.x-example nacos-example/nacos-gateway-example seata-example/business-service seata-example/order-service