本文转载自微信公众号「Java极客技术」,作者鸭血粉丝。转载本文请联系Java极客技术公众号。
公司主营业务:成都网站建设、成都网站制作、移动网站开发等业务。帮助企业客户真正实现互联网宣传,提高企业的竞争能力。创新互联是一支青春激扬、勤奋敬业、活力青春激扬、勤奋敬业、活力澎湃、和谐高效的团队。公司秉承以“开放、自由、严谨、自律”为核心的企业文化,感谢他们对我们的高要求,感谢他们从不同领域给我们带来的挑战,让我们激情的团队有机会用头脑与智慧不断的给客户带来惊喜。创新互联推出新会免费做网站回馈大家。
Hello 大家好,我是阿粉,前面的文章给大家介绍了一下如何在本地搭建微服务环境下的服务注册中心和配置管理中心 Nacos,今天通过
我们通过使用 SpringBoot 项目集成 Nacos 来给大家演示一下是如何使用 Nacos 来实现服务发现和配置管理的。
启动完本地搭建的 Nacos 服务后,我们可以看到,目前的服务管理下面的服务列表里面在三个命名空间下都没有服务,这是正常的,因为目前我们还没有服务接入Nacos。
Nacos 服务启动成功后,我们再创建两个 SpringBoot 项目,一个用于接入 Nacos 服务注册与发现和配置中心作为服务提供者 Producer,另一个只接入 Nacos的服务注册与发现,调用 Producer 获取配置中心的参数,我们叫做Consumer。
1.我们首先创建一个 SpringBoot 的项目,bootstrap.properties 文件内容如下:
- spring.application.name=producer
- #######################配置中心配置#################################
- # 指定的命名空间,只会在对应的命名空间下查找对应的配置文件
- spring.cloud.nacos.config.namespace=caeser-adsys-naming
- spring.cloud.nacos.config.file-extension=properties
- # 配置的分组名称
- spring.cloud.nacos.config.group=TEST1
- # 配置文件,数组形式,可以多个,依次递增
- spring.cloud.nacos.config.ext-config[0].data-id=com.example.properties
- spring.cloud.nacos.config.ext-config[0].group=TEST1
- # 配置中心的地址
- spring.cloud.nacos.config.server-addr=127.0.0.1:8848
- #启用自动刷新对应的配置文件
- spring.cloud.nacos.config.ext-config[0].refresh=true
- ######################服务注册发现配置##################################
- # 服务集群名称
- spring.cloud.nacos.discovery.cluster-name=TEST1_GROUP
- # 服务注册中心的地址
- spring.cloud.nacos.discovery.server-addr=127.0.0.1:8848
- # 服务的命名空间
- spring.cloud.nacos.discovery.namespace=caeser-adsys-naming
2.application.properties 的文件内容如下,主要就是一个端口,其他配置根据情况自行添加或删除就好:
- # 服务启动的端口
- server.port=8080
- spring.main.allow-bean-definition-overriding=true
- # tomcat 配置
- server.tomcat.max-threads=500
- spring.mvc.servlet.load-on-startup=1
- spring.servlet.multipart.max-file-size=40MB
- spring.servlet.multipart.max-request-size=100MB
- # 日志配置
- logging.level.root=info
- logging.level.com.alibaba=error
- logging.pattern.console=%clr{[%level]}{green} [%d{yyyy-MM-dd HH:mm:ss}] %clr{[${PID:-}]}{faint} %clr{[%thread]}{magenta} %clr{[%-40.40logger{80}:%line]}{cyan} %msg%n
3.在启动类上面增加如下注解
- package com.ziyou.nacos.demo.producer;
- import org.springframework.boot.SpringApplication;
- import org.springframework.boot.autoconfigure.SpringBootApplication;
- import org.springframework.cache.annotation.EnableCaching;
- import org.springframework.cloud.client.discovery.EnableDiscoveryClient;
- @SpringBootApplication(scanBasePackages = "com.ziyou.nacos")
- @EnableDiscoveryClient
- @EnableCaching
- public class ProducerApplication {
- public static void main(String[] args) {
- SpringApplication.run(ProducerApplication.class, args);
- }
- }
4.pom.xml 文件内容如下:
- xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
4.0.0 org.example nacos-demo 1.0-SNAPSHOT producer 1.0-SNAPSHOT producer Maven Webapp http://www.example.com UTF-8 1.7 1.7 2.2.2.RELEASE org.springframework.boot spring-boot-starter org.springframework.boot spring-boot-starter-logging org.springframework.boot spring-boot-starter-log4j2 org.springframework.boot spring-boot-starter-web com.alibaba.cloud spring-cloud-starter-alibaba-nacos-config com.alibaba.cloud spring-cloud-starter-alibaba-nacos-discovery src/main/resources true **/** producer org.springframework.boot spring-boot-maven-plugin ${spring.maven.plugin.version} repackage
5.在 Producer 侧提供一个获取配置里面内容的接口,代码如下:
- package com.ziyou.nacos.demo.producer.controller;
- import com.ziyou.nacos.demo.producer.config.UserConfig;
- import org.springframework.beans.factory.annotation.Autowired;
- import org.springframework.web.bind.annotation.GetMapping;
- import org.springframework.web.bind.annotation.RequestMapping;
- import org.springframework.web.bind.annotation.RestController;
- /**
- *
- * Function:
- * Author:@author ziyou
- * Date:2021-04-11 19:59
- * Desc:无
- */
- @RestController
- @RequestMapping(value = "producer")
- public class ProducerController {
- private UserConfig userConfig;
- @GetMapping("/getUsername")
- private String getUsername() {
- String result = userConfig.getUsername() + "-" + userConfig.getPassword();
- System.out.println(result);
- return result;
- }
- @Autowired
- public void setUserConfig(UserConfig userConfig) {
- this.userConfig = userConfig;
- }
- }
- package com.ziyou.nacos.demo.producer.config;
- import org.springframework.beans.factory.annotation.Value;
- import org.springframework.cloud.context.config.annotation.RefreshScope;
- import org.springframework.stereotype.Component;
- /**
- *
- * Function:
- * Author:@author ziyou
- * Date:2021-04-11 20:39
- * Desc:无
- */
- @RefreshScope
- @Component
- public class UserConfig {
- @Value("${username}")
- private String username;
- @Value("${password}")
- private String password;
- public String getUsername() {
- return username;
- }
- public void setUsername(String username) {
- this.username = username;
- }
- public String getPassword() {
- return password;
- }
- public void setPassword(String password) {
- this.password = password;
- }
- }
6.启动 Producer,并且手动调用接口,启动 Producer 过后,我们在 Nacos 的服务注册列表可以看如下所示的内容,在 test1 的命名空间下,已经有了我们创建的 Producer 服务。
7.通过手动调用 Producer 的接口 http://127.0.0.1:8080/producer/getUsername 显示如下内容
并且我们看下此时 Nacos 的配置中心里面配置文件com.example.properties 里面的内容正是这个,这个时候我们手动把配置里面password 参数的值改成JavaGeek666,再次访问接口,我们会发现接口的输出也自动改变了。
修改配置内容如下:
再次访问结果如下:
前面我们已经完成了Producer 的服务注册与配置动态生效的功能,这个时候基本已经可以使用了,不过我们还需要更进一步通过 Nacos 来实现服务发现,接下来我们创建 Consumer 的 SpringBoot 的项目,配置文件和pom.xml 文件基本一致,只要修改端口以及对应地方,下面贴一下不一样的地方
1.boostrap.properties 内容如下,因为这里我们只调用Producer 的接口,不需要接入 Nacos 的配置中心,所以这里只配置发服务注册与发现
- spring.application.name=consumer
- ######################服务注册发现配置##################################
- spring.cloud.nacos.discovery.cluster-name=TEST1_GROUP
- spring.cloud.nacos.discovery.server-addr=127.0.0.1:8848
- spring.cloud.nacos.discovery.namespace=caeser-adsys-naming
2.启动类,配置上 feignClient 需要扫描的包路径
- package com.ziyou.nacos.demo.consumer;
- import org.springframework.boot.SpringApplication;
- import org.springframework.boot.autoconfigure.SpringBootApplication;
- import org.springframework.cache.annotation.EnableCaching;
- import org.springframework.cloud.openfeign.EnableFeignClients;
- /**
- *
- * Function:
- * Author:@author ziyou
- * Date:2021-04-11 17:07
- * Desc:无
- */
- @SpringBootApplication(scanBasePackages = "com.ziyou.nacos")
- @EnableFeignClients(basePackages = {"com.ziyou.nacos.demo.consumer.rpc"})
- @EnableCaching
- public class ConsumerApplication {
- public static void main(String[] args) {
- SpringApplication.run(ConsumerApplication.class, args);
- }
- }
3.编写调用 Producer 的接口,FeignClient 里面的 value 就是 Producer 的应用名称
- package com.ziyou.nacos.demo.consumer.rpc;
- import org.springframework.cloud.openfeign.FeignClient;
- import org.springframework.stereotype.Component;
- import org.springframework.web.bind.annotation.GetMapping;
- /**
- *
- * Function:
- * Author:@author ziyou
- * Date:2021-04-11 20:01
- * Desc:无
- */
- @FeignClient(value = "producer")
- @Component
- public interface IProducerFeign {
- /**
- * 获取生产者名称接口
- *
- * @return
- */
- @GetMapping("/producer/getUsername")
- String getUsername();
- }
- package com.ziyou.nacos.demo.consumer.controller;
- import com.ziyou.nacos.demo.consumer.rpc.IProducerFeign;
- import org.springframework.beans.factory.annotation.Autowired;
- import org.springframework.web.bind.annotation.GetMapping;
- import org.springframework.web.bind.annotation.RequestMapping;
- import org.springframework.web.bind.annotation.RestController;
- /**
- *
- * Function:
- * Author:@author ziyou
- * Date:2021-04-11 19:59
- * Desc:无
- */
- @RestController
- @RequestMapping(value = "consumer")
- public class TestNacosController {
- private IProducerFeign iProducerFeign;
- @GetMapping("/testNacos")
- private String testNacos() {
- return iProducerFeign.getUsername();
- }
- @Autowired
- public void setiProducerFeign(IProducerFeign iProducerFeign) {
- this.iProducerFeign = iProducerFeign;
- }
- }
4.启动Consumer,我们可以看到在 Nacos 如下图所示
5.调用 Consumer 的接口consumer/testNacos,结果如下图所示,同样的如果此时更改了 Nacos 配置文件中的内容,Consumer 这边也是可以实时更新的,感兴趣的小伙伴可以自己试试。
今天主要给大家介绍了一下如何通过 SpringBoot 项目来接入 Naocs 实现服务注册与发现,以及配置管理和动态刷新,相关的代码已经上传到 GitHub 了。
分享文章:Springboot 项目集成 Nacos 实现服务注册发现与配置管理
文章分享:http://www.shufengxianlan.com/qtweb/news3/93153.html
网站建设、网络推广公司-创新互联,是专注品牌与效果的网站制作,网络营销seo公司;服务项目有等
声明:本网站发布的内容(图片、视频和文字)以用户投稿、用户转载内容为主,如果涉及侵权请尽快告知,我们将会在第一时间删除。文章观点不代表本网站立场,如需处理请联系客服。电话:028-86922220;邮箱:631063699@qq.com。内容未经允许不得转载,或转载时需注明来源: 创新互联