Nacos 配置中心作用以及使用
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 配置中心作用以及使用相关推荐
- 阿里面试这样问:Nacos配置中心交互模型是 push 还是 pull ?(原理+源码分析)...
本文来源:公众号「 程序员内点事」 对于Nacos大家应该都不太陌生,出身阿里名声在外,能做动态服务发现.配置管理,非常好用的一个工具.然而这样的技术用的人越多面试被问的概率也就越大,如果只停留在使用 ...
- Alibaba Nacos配置中心功能介绍与不同命名空间、分组等配置
概述:我们前面介绍过 Nacos 可以为我们提供服务注册与发现,以及实现了配置中心功能,本章将介绍nacos 配置中心的使用方法,以及其不同场景下的配置方式.在前面我们介绍过nacos的领域模型(下图 ...
- 【第四阶段 day24】Nacos配置中心
文章目录 1.配置中心 1.1 概述 * 1.2 面试题 2.Nacos配置入门案例 2.1 创建ProviderLogController对象 2.2 在已有的sca-provider项目中添加配置 ...
- Nacos配置中心用法详细介绍
上篇文章介绍了 Nacos 作为注册中心的用法,除此之外,Nacos 还能作为配置中心使用,那这篇文章就介绍下 Nacos 作为配置中心的基本用法,首先我们先了解下为什么需要使用配置中心. 一.为什么 ...
- Nacos配置中心介绍
配置中心介绍 1.Spring Cloud Config Spring Cloud Config 为分布式系统的外部配置提供了服务端和客户端的支持方案.在配置的服务端您可以在所有环境中为应用程序管理外 ...
- Linux启动nacos成功日志_微服务系列之Nacos配置中心
Nacos 介绍 Nacos 是 Alibaba 公司推出的开源工具,用于实现分布式系统的服务发现与配置管理.英文全称 Dynamic Naming and Configuration Service ...
- easyconnect获取服务端配置信息失败_图文解析 Nacos 配置中心的实现
本文不会贴太多源码,基本靠图片和文字叙述 全文共 2582 字,预计阅读时间 12 分钟 什么是 Nacos 配置中心的架构 Nacos 使用示例 官方代码示例 Properties 解读 配置项的层 ...
- 基于Nacos配置中心实现Spring Cloud Gateway的动态路由管理
前面我们了解过了Sentinel 网关流量控制之Spring Cloud Gateway实战,今天带给大家是基于Nacos配置中心实现Spring Cloud Gateway的动态路由管理. 1.为什 ...
- 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 ...
- Nacos配置中心实战,盘古开发框架标配组件
配置中心作为分布式微服务开发的标配组件,业界已有很多成功的典型应用,如:携程 Apollo 分布式配置中心.百度 Disconf 分布式配置中心等.盘古开发框架配置中心基于阿里的 Nacos 提供动态 ...
最新文章
- foreach循环怎么获取全部返回值_jmeter基础逻辑控制器之ForEach控制器
- Winform打砖块游戏制作step by step第5节---重构代码,利用继承多态
- PHP-代码审计-文件读取(下载)
- Linux Shell脚本入门教程系列之(九)Shell判断 if else 用法
- 入选 CVPR 2020的旷视论文,到底写了啥?
- html dom之iframe对象
- python_datetime
- 计算机专业认识实习目的,计算机专业实习目的及意义
- Laravel 框架 - 模板继承
- 案例分析:传统媒体如何借力微信平台推广
- bzoj1488 图的同构
- 渗透技巧总结、渗透技巧
- 全球计算机科学和电子,科学网—[转载]【喜报】祝贺IEEE TCSS入选全球计算机与电子领域Top 1000期刊 - 王飞跃的博文...
- CMS企业建站的经验
- 金仓数据库 KingbaseES 客户端编程接口指南 - ODBC 驱动使用
- Abbkine ExKine 胞浆蛋白提取试剂盒
- cdn perl_菜鸟教程perl总结
- 长沙:胆大、心细、眼疾手快的“复苏先锋”
- pyTorch入门(四)——导出Minist模型,C++ OpenCV DNN进行识别
- 基于java的毕业论文在线选题指导系统