集成SpringCloudAlibaba
一.Nacos注册中心
1.引入SpringCloudAlibaba依赖管理
<dependencyManagement>
<dependencies>
<dependency>
<groupId>com.alibaba.cloud</groupId>
<artifactId>spring-cloud-alibaba-dependencies</artifactId>
<version>2.1.0.RELEASE</version>
<type>pom</type>
<scope>import</scope>
</dependency>
</dependencies>
</dependencyManagement>
2.引入nacos注册中心
<!--nacos注册中心 -->
<dependency>
<groupId>com.alibaba.cloud</groupId>
<artifactId>spring-cloud-starter-alibaba-nacos-discovery</artifactId>
</dependency>
3.在应用的 /src/main/resources/application.properties 配置文件中配置 Nacos Server 地址
spring.cloud.nacos.discovery.server-addr=127.0.0.1:8848
4.使用 @EnableDiscoveryClient 注解开启服务注册与发现功能
@SpringBootApplication
@EnableDiscoveryClient
public class ProviderApplication {
public static void main(String[] args) {
SpringApplication.run(ProviderApplication.class, args);
}
@RestController
class EchoController {
@GetMapping(value = "/echo/{string}")
public String echo(@PathVariable String string) {
return string;
}
}
}
5.启动 Nacos Server
-
首先需要获取 Nacos Server,支持直接下载和源码构建两种方式。
- 直接下载:Nacos Server 下载页
- 源码构建:进入 Nacos Github 项目页面,将代码 git clone 到本地自行编译打包,参考此文档。推荐使用源码构建方式以获取最新版本
-
启动 Server,进入解压后文件夹或编译打包好的文件夹,找到如下相对文件夹 nacos/bin,并对照操作系统实际情况之下如下命令。
- Linux/Unix/Mac 操作系统,执行命令 sh startup.sh -m standalone
- Windows 操作系统,执行命令 cmd startup.cmd
6.应用启动
- 增加配置,在 nacos-discovery-provider-example 项目的 /src/main/resources/application.properties 中添加基本配置信息
spring.application.name=service-provider
server.port=18082
- 启动应用,支持 IDE 直接启动和编译打包后启动。
- IDE直接启动:找到 nacos-discovery-provider-example 项目的主类 ProviderApplication,执行 main 方法启动应用。
- 打包编译后启动:在 nacos-discovery-provider-example 项目中执行 mvn clean package 将工程编译打包,然后执行 java -jar nacos-discovery-provider-example.jar启动应用。
二.Nacos配置中心
1.应用配置
- 修改 pom.xml 文件,引入 Nacos Config Starter。
<!--nacos注册/发现-->
<dependency>
<groupId>com.alibaba.cloud</groupId>
<artifactId>spring-cloud-starter-alibaba-nacos-config</artifactId>
</dependency>
- 在应用的 /src/main/resources/bootstrap.properties 配置文件中配置 Nacos Config 元数据
#Springboot规定bootstrap.properties优先于application.properties加载
spring.application.name=nacos-config-example
spring.cloud.nacos.config.server-addr=127.0.0.1:8848
- 完成上述两步后,应用会从 Nacos Config 中获取相应的配置,并添加在 Spring Environment 的 PropertySources 中。这里我们使用 @Value 注解来将对应的配置注入到 SampleController 的 userName 和 age 字段,并添加 @RefreshScope 打开动态刷新功能
@RefreshScope
class SampleController {
@Value("${user.name}")
String userName;
@Value("${user.age}")
int age;
}
2.启动 Nacos Server 并添加配置
- 首先需要获取 Nacos Server,支持直接下载和源码构建两种方式。推荐使用最新版本 Nacos Server
1. 直接下载:[Nacos Server 下载页](https://github.com/alibaba/nacos/releases)
2.源码构建:进入 Nacos Github 项目页面,将代码 git clone 到本地自行编译打包,[参考此文档](https://nacos.io/zh-cn/docs/quick-start.html)。
- 启动 Server,进入下载到本地并解压完成后的文件夹(使用源码构建的方式则进入编译打包好的文件夹),再进去其相对文件夹 nacos/bin,并对照操作系统实际情况执行如下命令。详情参考此文档。
1. Linux/Unix/Mac 操作系统,执行命令 sh startup.sh -m standalone
2. Windows 操作系统,执行命令 cmd startup.cmd
- 在命令行执行如下命令,向 Nacos Server 中添加一条配置
curl -X POST "http://127.0.0.1:8848/nacos/v1/cs/configs?dataId=nacos-config-example.properties&group=DEFAULT_GROUP&content=user.id=1%0Auser.name=james%0Auser.age=17"
注:你也可以使用其他方式添加,遵循 HTTP API 规范即可,若您使用的 Nacos 版本自带控制台,建议直接使用控制台进行配置
添加的配置的详情如下
dataId 为 nacos-config-example.properties
group 为 DEFAULT_GROUP
内容如下
user.id=1
user.name=james
user.age=17
3.启动应用
- 增加配置,在应用的 /src/main/resources/application.properties 中添加基本配置信息
server.port=18084
management.endpoints.web.exposure.include=*
- 启动应用,支持 IDE 直接启动和编译打包后启动
- IDE直接启动:找到主类 Application,执行 main 方法启动应用。
- 包编译后启动:首先执行 mvn clean package 将工程编译打包,然后执行 java -jar nacos-config-example.jar启动应用。
验证
在浏览器地址栏输入 http://127.0.0.1:18084/user,并点击调转,可以看到成功从 Nacos Config Server 中获取了数据。
4.细节
1. 命名空间:配置隔离
默认: public(保留空间);默认新增的所有配置都在public空间
-1. 开发,测试,生产 利用命名空间来做环境隔离
注意: 在bootStrap.preoperties中需要指定使用哪个命名空间的配置
spring.cloud.nacos.config.namespace=命名空间ID
-2.每一个微服务之间互相配置隔离,每一个微服务都创建自己的命名空间,只加载自己命名空间下的所有配置
2. 配置集:所有的配置的集合
3. 配置集ID: 类似于配置文件名。
- DataId: 文件名
4. 配置分组:
默认所有的配置集都属于:DEFAULT_GROUP;
- 1111,618,1212
- spring.cloud.nacos.config.group=组名
每个微服务有自己的命名空间,使用配置分组区分环境,dev test, prod
5.同时加载多个配置集
1 .微服务任何配置信息,任何配置文件都可以放在配置中心中
spring.application.name=gulimall-coupon
spring.cloud.nacos.config.server-addr=127.0.0.1:8848
spring.cloud.nacos.config.namespace=9f65b21b-4569-4ff0-8752-2b3c3de8118a
#spring.cloud.nacos.config.group=dev
spring.cloud.nacos.config.ext-config[0].data-id=datasource.yml
spring.cloud.nacos.config.ext-config[0].group=dev
spring.cloud.nacos.config.ext-config[0].refresh=true
spring.cloud.nacos.config.ext-config[1].data-id=mybatis.yml
spring.cloud.nacos.config.ext-config[1].group=dev
spring.cloud.nacos.config.ext-config[1].refresh=true
spring.cloud.nacos.config.ext-config[2].data-id=other.yml
spring.cloud.nacos.config.ext-config[2].group=dev
spring.cloud.nacos.config.ext-config[2].refresh=true
-
只需要在bootstrap.properties说明加载配置中心中那些配置文件即可
-
@Value,@ConfigurationProoperties。。。以前springboot任何方法从配置文件中获取值,都能使用。