最近想搞一套自己的微服务架构,引入自己感兴趣的技术, 敲定注册中心nacos,下面就是nacos整合代码笔记记录一下:
首先idea创建一个Maven模块(父model):确定springcloud以及对应springboot版本、nacos版本,下面直接上pom.xml
<?xml version="1.0" encoding="UTF-8"?> <project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"> <modelVersion>4.0.0</modelVersion> <parent> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-parent</artifactId> <version>2.2.2.RELEASE</version> </parent> <groupId>com.dream.blog</groupId> <artifactId>yunblog</artifactId> <packaging>pom</packaging> <version>1.0-SNAPSHOT</version> <modules> <module>config</module> </modules> <properties> <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding> <java.version>1.8</java.version> <spring-cloud-release.version>Greenwich.RELEASE</spring-cloud-release.version> <spring-cloud-alibaba.version>2.2.4.RELEASE</spring-cloud-alibaba.version> </properties> <dependencyManagement> <dependencies> <dependency> <groupId>org.springframework.cloud</groupId> <artifactId>spring-cloud-dependencies</artifactId> <version>Hoxton.RELEASE</version> <type>pom</type> <scope>import</scope> </dependency> <dependency> <groupId>com.alibaba.cloud</groupId> <artifactId>spring-cloud-alibaba-dependencies</artifactId> <version>${spring-cloud-alibaba.version}</version> <type>pom</type> <scope>import</scope> </dependency> </dependencies> </dependencyManagement> </project>
------父级依赖引入后,创建子模块
<?xml version="1.0" encoding="UTF-8"?> <project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"> <parent> <artifactId>yunblog</artifactId> <groupId>com.dream.blog</groupId> <version>1.0-SNAPSHOT</version> </parent> <modelVersion>4.0.0</modelVersion> <artifactId>config</artifactId> <dependencies> <dependency> <groupId>com.alibaba.cloud</groupId> <artifactId>spring-cloud-starter-alibaba-nacos-config</artifactId> </dependency> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-web</artifactId> </dependency> <!--nacos配置中心--> <dependency> <groupId>com.alibaba.cloud</groupId> <artifactId>spring-cloud-starter-alibaba-nacos-config</artifactId> </dependency> <!--nacos注册中心--> <dependency> <groupId>com.alibaba.cloud</groupId> <artifactId>spring-cloud-starter-alibaba-nacos-discovery</artifactId> </dependency> </dependencies> </project>
--------bootstrap.yml配置文件
server: port: 8083 spring: application: # 会自动根据服务名拉取data-id对应的配置文件.如果data-id跟服务名不一致 就需要手动指定data-id # 跟服务名相同的data-id的配置文件,称之为默认的配置文件 # 除了默认的配置文件,其他配置文件必须写上后缀 name: config-client cloud: nacos: discovery: #注册中心 server-addr: 127.0.0.1:8848 username: nacos password: nacos config: #配置中心 #服务注册名 prefix: ${spring.application.name} #指定nacos配置中心地址 server-addr: 127.0.0.1:8848 file-extension: yml # 使用的 nacos 配置集的 dataId 的文件拓展名,同时也是 # Nacos 配置集的配置格式,默认为 properties #namespace: f2f00535-7396-4e22-a9c8-a2b9e957a66d # 使用的 nacos 的命名空间,默认为 null group: DEFAULT_GROUP # 使用的 Nacos 配置分组,默认为 DEFAULT_GROUP共享配置集数组 # 共享配置集数组 shared-configs: - data-id: config-redis.yml group: DEFAULT_GROUP # 使用的 Nacos 配置分组,默认为 DEFAULT_GROUP refresh: true # 是否自动刷新配置,默认为 false@RefreshScope 实现配置实时更新
--------------测试代码----创建一个controller写个测试方法
@Autowired private DiscoveryClient discoveryClient; @GetMapping("/getServiceList") public List<ServiceInstance> getServiceList() { List<ServiceInstance> serviceInstanceList = discoveryClient.getInstances("config-client"); return serviceInstanceList; }