Nacos配置中心

  • 前言
  • 1 Nacos 配置中心实战
    • 1.1 Nacos 准备工作
      • 1.1.1 创建Nacos服务
      • 1.1.2 初始化MySql数据库
    • 1.2 Nacos 实战
      • 1.2.1 Swagger测试项目
      • 1.2.2 nacos服务中配置信息

前言

本文要带你们体验一把配置中心在项目中的作用


提示:以下是本篇文章正文内容,下面案例可供参考

1 Nacos 配置中心实战

1.1 Nacos 准备工作

1.1.1 创建Nacos服务

  • 创建父项目,并导入以下坐标
    <!-- 1 确定spring boot的版本--><parent><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-parent</artifactId><version>2.2.5.RELEASE</version></parent><!--2  确定版本--><properties><project.build.sourceEncoding>UTF-8</project.build.sourceEncoding><java.version>1.8</java.version><spring-cloud-release.version>Hoxton.SR3</spring-cloud-release.version><nacos.version>1.1.0</nacos.version><alibaba.cloud.version>2.2.1.RELEASE</alibaba.cloud.version><mysql.version>5.1.32</mysql.version><mybatis.plus.version>3.4.0</mybatis.plus.version><jwt.jjwt.version>0.9.0</jwt.jjwt.version><jwt.joda.version>2.9.7</jwt.joda.version><swagger.version>2.7.0</swagger.version></properties><!-- 3 锁定版本--><dependencyManagement><dependencies><!-- sprig cloud--><dependency><groupId>org.springframework.cloud</groupId><artifactId>spring-cloud-dependencies</artifactId><version>${spring-cloud-release.version}</version><type>pom</type><scope>import</scope></dependency><!--nacos --><dependency><groupId>com.alibaba.nacos</groupId><artifactId>nacos-client</artifactId><version>${nacos.version}</version></dependency><!--nacos cloud 发现 --><dependency><groupId>com.alibaba.cloud</groupId><artifactId>spring-cloud-starter-alibaba-nacos-discovery</artifactId><version>${alibaba.cloud.version}</version></dependency><!--nacos cloud 配置 --><dependency><groupId>com.alibaba.cloud</groupId><artifactId>spring-cloud-starter-alibaba-nacos-config</artifactId><version>${alibaba.cloud.version}</version></dependency><!-- https://mvnrepository.com/artifact/com.alibaba.cloud/spring-cloud-starter-alibaba-sentinel --><dependency><groupId>com.alibaba.cloud</groupId><artifactId>spring-cloud-starter-alibaba-sentinel</artifactId><version>${alibaba.cloud.version}</version></dependency><!-- mybatis plus--><dependency><groupId>com.baomidou</groupId><artifactId>mybatis-plus-boot-starter</artifactId><version>${mybatis.plus.version}</version></dependency><dependency><groupId>com.baomidou</groupId><artifactId>mybatis-plus-annotation</artifactId><version>${mybatis.plus.version}</version></dependency><!-- mysql驱动 --><dependency><groupId>mysql</groupId><artifactId>mysql-connector-java</artifactId><version>${mysql.version}</version></dependency><!--swagger2--><dependency><groupId>io.springfox</groupId><artifactId>springfox-swagger2</artifactId><version>${swagger.version}</version></dependency><dependency><groupId>io.springfox</groupId><artifactId>springfox-swagger-ui</artifactId><version>${swagger.version}</version></dependency></dependencies></dependencyManagement>
  • 创建user服务,并导入以下坐标
    <dependencies><!-- web 启动器 --><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><!--swagger2--><dependency><groupId>io.springfox</groupId><artifactId>springfox-swagger2</artifactId></dependency><dependency><groupId>io.springfox</groupId><artifactId>springfox-swagger-ui</artifactId></dependency><!-- mybatis plus--><dependency><groupId>com.baomidou</groupId><artifactId>mybatis-plus-boot-starter</artifactId></dependency><!-- mysql驱动 --><dependency><groupId>mysql</groupId><artifactId>mysql-connector-java</artifactId></dependency><!--lombok , @Data 等--><dependency><groupId>org.projectlombok</groupId><artifactId>lombok</artifactId></dependency></dependencies><build><plugins><plugin><groupId>org.springframework.boot</groupId><artifactId>spring-boot-maven-plugin</artifactId><configuration><!--启动类--><mainClass>com.czxy.changgou4.user.ServiceUserApplication</mainClass></configuration></plugin></plugins></build>
  • 在user服务下创建Java bean,mapper,service,controller还有swagger配置类
  • 创建启动类
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.cloud.client.discovery.EnableDiscoveryClient;/*** @Author: Kj* @Date: 2021/4/21 11:18*/
@SpringBootApplication
@EnableDiscoveryClient
public class ServiceUserApplication {public static void main(String[] args) {SpringApplication.run(ServiceUserApplication.class,args);}
}
  • 创建user java bean
import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableName;
import lombok.Data;/*** @Author: Kj* @Date: 2021/4/21 11:20*/
@TableName("t_user")
@Data
public class User {@TableId(type = IdType.AUTO)private Integer id;private String username;}
  • 创建mapper
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.czxy.changgou4.user.domain.User;
import org.apache.ibatis.annotations.Mapper;/*** @Author: Kj* @Date: 2021/4/21 11:25*/
@Mapper
public interface UserMapper extends BaseMapper<User> {}
  • 创建service和seviceimpl
import com.baomidou.mybatisplus.extension.service.IService;
import com.czxy.changgou4.user.domain.User;/*** @Author: Kj* @Date: 2021/4/21 11:26*/
public interface UserService extends IService<User> {}
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.czxy.changgou4.user.domain.User;
import com.czxy.changgou4.user.mapper.UserMapper;
import com.czxy.changgou4.user.service.UserService;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;/*** @Author: Kj* @Date: 2021/4/21 11:27*/
@Service
@Transactional
public class UserServiceImpl extends ServiceImpl<UserMapper, User> implements UserService {}
  • 创建controller
import com.czxy.changgou4.user.domain.User;
import com.czxy.changgou4.user.service.UserService;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;import javax.annotation.Resource;/*** @Author: Kj* @Date: 2021/4/21 11:28*/
@RestController
@RequestMapping("/user")
public class UserController {@Resourceprivate UserService userService;@PostMapping("/save")public String save(@RequestBody User user){boolean b = userService.save(user);if (b){return "添加成功";}return "添加失败";}}
  • 导入swagger配置类
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import springfox.documentation.builders.ApiInfoBuilder;
import springfox.documentation.builders.PathSelectors;
import springfox.documentation.builders.RequestHandlerSelectors;
import springfox.documentation.service.*;
import springfox.documentation.spi.DocumentationType;
import springfox.documentation.spi.service.contexts.SecurityContext;
import springfox.documentation.spring.web.plugins.Docket;
import springfox.documentation.swagger2.annotations.EnableSwagger2;import java.util.ArrayList;
import java.util.List;/*** Swagger2 配置类,* 访问路径:swagger-ui.html*/
@Configuration
@EnableSwagger2
public class Swagger2Configuration {@Beanpublic Docket createRestApi() {// 1 确定文档Swagger版本Docket docket = new Docket(DocumentationType.SWAGGER_2);// 2 设置 api基本信息docket.apiInfo(apiInfo());// 3 设置自定义加载路径docket = docket.select().apis(RequestHandlerSelectors.basePackage("com.czxy")).paths(PathSelectors.any()).build();//4 设置权限docket.securitySchemes(securitySchemes());docket.securityContexts(securityContexts());return docket;}private ApiInfo apiInfo() {return new ApiInfoBuilder().title("API").description("基于swagger接口文档").contact(new Contact("梁桐","http://www.javaliang.com","liangtong@itcast.cn")).version("1.0").build();}private List<ApiKey> securitySchemes() {List<ApiKey> list = new ArrayList<>();// name 为参数名  keyname是页面传值显示的 keyname, name在swagger鉴权中使用list.add(new ApiKey("Authorization", "Authorization", "header"));return list;}private List<SecurityContext> securityContexts() {List<SecurityContext> list = new ArrayList<>();list.add(SecurityContext.builder().securityReferences(defaultAuth()).forPaths(PathSelectors.regex("^(?!auth).*$")).build());return list;}private List<SecurityReference> defaultAuth() {AuthorizationScope authorizationScope = new AuthorizationScope("global", "accessEverything");AuthorizationScope[] authorizationScopes = new AuthorizationScope[1];authorizationScopes[0] = authorizationScope;List<SecurityReference> list = new ArrayList();list.add(new SecurityReference("Authorization", authorizationScopes));return list;}}
  • 编写bootstrap.yml文件
# 服务端口号
server:port: 7777
# 服务名
spring:application:name: user-servicedatasource:driverClassName: com.mysql.jdbc.Driverurl: jdbc:mysql://127.0.0.1:3306/cloud_db5?useUnicode=true&characterEncoding=utf8username: rootpassword: rootcloud:nacos:config:server-addr: 127.0.0.1:8848     # nacos 服务地址prefix: user                   # 3.1 前缀,默认 ${spring.application.name}file-extension: yaml            # 3.2 后缀 , user.yamlgroup: DEFAULT_GROUP            # 3.3 组名#开启log4j打印SQL语句
logging:level:com:czxy:changgou4:mapper: debug# mp日志打印
mybatis-plus:configuration:log-impl: org.apache.ibatis.logging.stdout.StdOutImpl
  • 到此环境就创建好了

1.1.2 初始化MySql数据库

  • 初始化数据库 sql 语句
create database cloud_db5;
use cloud_db5;
CREATE TABLE t_user(id INT PRIMARY KEY AUTO_INCREMENT,username VARCHAR(50)
);create database cloud_db6;
use cloud_db6;
CREATE TABLE t_user(id INT PRIMARY KEY AUTO_INCREMENT,username VARCHAR(50)
);
  • 打开nacos服务,然后点击package打包user服务
  • 打开此jar包所在的文件夹
  • 打开cmd命令窗口
  • 在命令框输入java -jar test-nacos-cloud-config-mysql-1.0-SNAPSHOT.jar,然后回车来启动user服务

1.2 Nacos 实战

1.2.1 Swagger测试项目

  • 在浏览器打开此路径:http://localhost:7777/swagger-ui.html进行测试

  • 点击后看到添加成功,去数据库里查看数据

1.2.2 nacos服务中配置信息

  • 打开nacos配置中心,路径:http://192.168.98.227:8848/nacos/index.html#/login
  • 在配置中心新增配置,来控制user服务的路径,和数据库的更换
  • 新增配置信息
server.port: 7778
spring.datasource.url: jdbc:mysql://127.0.0.1:3306/cloud_db6?useUnicode=true&characterEncoding=utf8
  • 点击发布,发布成功后,打开刚刚启动user服务的cmd窗口,按住ctrl+c键来停止运行,然后在按之前的方法运行一遍user服务jar包

  • 现在打开路径 :http://localhost:7778/swagger-ui.html#/进行测试,和之前测试在swagger测试方法一样,添加成功后去数据库db6查看数据

Nacos 配置中心作用以及使用相关推荐

  1. 阿里面试这样问:Nacos配置中心交互模型是 push 还是 pull ?(原理+源码分析)...

    本文来源:公众号「 程序员内点事」 对于Nacos大家应该都不太陌生,出身阿里名声在外,能做动态服务发现.配置管理,非常好用的一个工具.然而这样的技术用的人越多面试被问的概率也就越大,如果只停留在使用 ...

  2. Alibaba Nacos配置中心功能介绍与不同命名空间、分组等配置

    概述:我们前面介绍过 Nacos 可以为我们提供服务注册与发现,以及实现了配置中心功能,本章将介绍nacos 配置中心的使用方法,以及其不同场景下的配置方式.在前面我们介绍过nacos的领域模型(下图 ...

  3. 【第四阶段 day24】Nacos配置中心

    文章目录 1.配置中心 1.1 概述 * 1.2 面试题 2.Nacos配置入门案例 2.1 创建ProviderLogController对象 2.2 在已有的sca-provider项目中添加配置 ...

  4. Nacos配置中心用法详细介绍

    上篇文章介绍了 Nacos 作为注册中心的用法,除此之外,Nacos 还能作为配置中心使用,那这篇文章就介绍下 Nacos 作为配置中心的基本用法,首先我们先了解下为什么需要使用配置中心. 一.为什么 ...

  5. Nacos配置中心介绍

    配置中心介绍 1.Spring Cloud Config Spring Cloud Config 为分布式系统的外部配置提供了服务端和客户端的支持方案.在配置的服务端您可以在所有环境中为应用程序管理外 ...

  6. Linux启动nacos成功日志_微服务系列之Nacos配置中心

    Nacos 介绍 Nacos 是 Alibaba 公司推出的开源工具,用于实现分布式系统的服务发现与配置管理.英文全称 Dynamic Naming and Configuration Service ...

  7. easyconnect获取服务端配置信息失败_图文解析 Nacos 配置中心的实现

    本文不会贴太多源码,基本靠图片和文字叙述 全文共 2582 字,预计阅读时间 12 分钟 什么是 Nacos 配置中心的架构 Nacos 使用示例 官方代码示例 Properties 解读 配置项的层 ...

  8. 基于Nacos配置中心实现Spring Cloud Gateway的动态路由管理

    前面我们了解过了Sentinel 网关流量控制之Spring Cloud Gateway实战,今天带给大家是基于Nacos配置中心实现Spring Cloud Gateway的动态路由管理. 1.为什 ...

  9. nacos配置中心[NACOS HTTP-GET] The maximum number of tolerable server reconnection errors has been reache

    nacos使用配置中心,启动项目控制台报错: [NACOS HTTP-GET] The maximum number of tolerable server reconnection errors h ...

  10. Nacos配置中心实战,盘古开发框架标配组件

    配置中心作为分布式微服务开发的标配组件,业界已有很多成功的典型应用,如:携程 Apollo 分布式配置中心.百度 Disconf 分布式配置中心等.盘古开发框架配置中心基于阿里的 Nacos 提供动态 ...

最新文章

  1. foreach循环怎么获取全部返回值_jmeter基础逻辑控制器之ForEach控制器
  2. Winform打砖块游戏制作step by step第5节---重构代码,利用继承多态
  3. PHP-代码审计-文件读取(下载)
  4. Linux Shell脚本入门教程系列之(九)Shell判断 if else 用法
  5. 入选 CVPR 2020的旷视论文,到底写了啥?
  6. html dom之iframe对象
  7. python_datetime
  8. 计算机专业认识实习目的,计算机专业实习目的及意义
  9. Laravel 框架 - 模板继承
  10. 案例分析:传统媒体如何借力微信平台推广
  11. bzoj1488 图的同构
  12. 渗透技巧总结、渗透技巧
  13. 全球计算机科学和电子,科学网—[转载]【喜报】祝贺IEEE TCSS入选全球计算机与电子领域Top 1000期刊 - 王飞跃的博文...
  14. CMS企业建站的经验
  15. 金仓数据库 KingbaseES 客户端编程接口指南 - ODBC 驱动使用
  16. Abbkine ExKine 胞浆蛋白提取试剂盒
  17. cdn perl_菜鸟教程perl总结
  18. 长沙:胆大、心细、眼疾手快的“复苏先锋”
  19. pyTorch入门(四)——导出Minist模型,C++ OpenCV DNN进行识别
  20. 基于java的毕业论文在线选题指导系统

热门文章

  1. 2的6次方怎么用计算机,2的6次方是多少(进制转换计算器)
  2. 企业外贸出口业务流程图 进出口贸易流程细节
  3. 【经典递归问题 汉诺塔 求解】
  4. dns被劫持怎么办,电信dns劫持解决办法
  5. 揭秘win10系统CPU占用100%的真正原因/找出那些罪魁祸首
  6. 如何使用chevereto自建图床
  7. 不用管别人怎么评论自己_不要管别人怎样评价你,做好自己就行了
  8. 电子商城战略分析(采用定性与定量分析方法)
  9. c语言谷歌坐标转百度坐标,百度经纬度和google经纬度转换测试
  10. 7-5 分段函数计算 (15 分)