热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

nacos替代configserver和Euraka

按照NacosSpringCloud快速开始、NacosSpringBoot快速开始,将我之前项目依赖的config-server和Euraka替换过来,

按照Nacos Spring Cloud 快速开始、Nacos Spring Boot 快速开始,将我之前项目依赖的config-server和Euraka替换过来,过程并不是那么顺利
提示找不到配置

org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'scopedTarget.druidConfig': Injection of autowired dependencies failed; nested exception is java.lang.IllegalArgumentException: Could not resolve placeholder 'spring.datasource.url' in value "${spring.datasource.url}"

1 spring boot
版本 0.2.x.RELEASE 对应的是 Spring Boot 2.x 版本,版本 0.1.x.RELEASE 对应的是 Spring Boot 1.x 版本,这个官方有说明

<version.nacos.springboot>0.2.1version.nacos.springboot>
<dependency><groupId>com.alibaba.bootgroupId><artifactId>nacos-config-spring-boot-starterartifactId><version>${version.nacos.springboot}version>
dependency>

application.properties如下

nacos.config.server-addr&#61;10.101.5.147:8847

按照下图配置&#xff0c;我的疑问是&#64;NacosPropertySource写死dataId&#xff0c;如果更改环境呢&#xff1f;另外获取配置的中的值要使用com.alibaba.nacos.api.config.annotation.NacosValue&#xff0c;而不是org.springframework.beans.factory.annotation.Value
1
如果按照下图注释掉NacosPropertySource,则需要在启动的时候增加Active profilesbdo-test切换过去了。但这样并不完美。

1
1
因为还是有问题&#xff1a;
问题一&#xff1a;&#64;NacosValue中autoRefreshed默认值为false&#xff0c;那么是否每一个配置变量都夭加上autoRefreshed &#61; true呢&#xff1f;而&#64;NacosPropertySource(dataId &#61; "bdo-dev", autoRefreshed &#61; true)是全部默认的
问题二&#xff1a;部署到测试环境怎么切换这边配置的环境呢&#xff1f;
2 spring cloud
上线的springboot遇到一些疑问&#xff0c;springcloud使用nacos就相对容易很多&#xff0c;可是springboot与springcloud之前差距真的很大吗&#xff1f;
pom.xml中

<version.nacos>2.0.1.RELEASEversion.nacos>
<dependency><groupId>com.alibaba.cloudgroupId><artifactId>spring-cloud-starter-alibaba-nacos-configartifactId><version>${version.nacos}version>
dependency><dependency><groupId>com.alibaba.cloudgroupId><artifactId>spring-cloud-starter-alibaba-nacos-discoveryartifactId><version>${version.nacos}version>
dependency>

在使用到配置的程序中需要使用org.springframework.cloud.context.config.annotation.RefreshScope即可&#xff0c;org.springframework.beans.factory.annotation.Value则不用改变。
1
把nacos作为注册中心&#xff0c;增加&#64;EnableDiscoveryClient

import lombok.extern.slf4j.Slf4j;
import org.mybatis.spring.annotation.MapperScan;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.cache.annotation.EnableCaching;
import org.springframework.cloud.client.discovery.EnableDiscoveryClient;
import org.springframework.cloud.openfeign.EnableFeignClients;
import org.springframework.context.annotation.ComponentScan;
import org.springframework.scheduling.annotation.EnableScheduling;&#64;Slf4j
&#64;SpringBootApplication
&#64;ComponentScan(basePackages &#61; { "com.test.*" })
&#64;MapperScan("com.test.**.dao")
&#64;EnableScheduling
&#64;EnableFeignClients(basePackages &#61; { "com.test.*" })
&#64;EnableCaching
&#64;EnableDiscoveryClient
public class BdoParentApplication {public static void main(String[] args) {try {System.setProperty("es.set.netty.runtime.available.processors", "false");SpringApplication.run(BdoParentApplication.class, args);} finally {log.info("server start finish");}}
}

bootstrap.yml如下,这里通过命令空间id来判断是属于哪个环境

spring:application:name: bdocloud:nacos:discovery:server-addr: 10.101.5.147:8847namespace: 012e6aa3-a6d6-4a6c-9cfb-93f5e4d76667config:server-addr: 10.101.5.147:8847file-extension: ymlnamespace: 012e6aa3-a6d6-4a6c-9cfb-93f5e4d76667

1
可以在浏览器中通过http://10.101.5.147:8847/nacos/v1/cs/configs?dataId&#61;bdo&group&#61;DEFAULT_GROUP&tenant&#61;012e6aa3-a6d6-4a6c-9cfb-93f5e4d76667看看是否能获取到配置&#xff0c;参数根据自己的调整.
在服务管理中服务列表中发现有些问题&#xff0c;因为服务注册到public下面了&#xff0c;正确的是应该是在DEV下面&#xff0c;怎么解决这个问题呢&#xff1f;那是因为spring.cloud.nacos.discovery.namespace没有配置导致的
1
如果把nacos当成注册中心又当成配置中心&#xff0c;则bootstrap.yml中设置这样就可以了。

nacos:server-addr: 10.101.5.147:8847namespace: 012e6aa3-a6d6-4a6c-9cfb-93f5e4d76667
spring:application:name: bdocloud:nacos:discovery:server-addr: ${nacos.server-addr}namespace: ${nacos.namespace}config:server-addr: ${nacos.server-addr}file-extension: ymlnamespace: ${nacos.namespace}

可以在com.alibaba.nacos.client.config.http.ServerHttpAgenthttpGet方法中设置断点&#xff0c;注意如果server-addr是域名&#xff0c;则需要hs.nacos.com:80,添加上80端口.
3 springmvc
按照下面的配置固然可以加载进来&#xff0c;但是缺点就是nacos自身的配置也写在xml里面&#xff0c;如果想properties和xml分离&#xff0c;就有些困难了。
nacos中Properties中如果有中文&#xff0c;直接发包会报js错误&#xff0c;如果先发布不带中文&#xff0c;然后编辑后再写入中文&#xff0c;提示语法错误&#xff0c;但是可以发布

<dependency><groupId>com.alibaba.nacosgroupId><artifactId>nacos-spring-contextartifactId><version>0.3.1version>dependency>


<beans xmlns&#61;"http://www.springframework.org/schema/beans" xmlns:nacos&#61;"http://nacos.io/schema/nacos"xmlns:xsi&#61;"http://www.w3.org/2001/XMLSchema-instance"xsi:schemaLocation&#61;"http://nacos.io/schema/nacos http://nacos.io/schema/nacos.xsd
http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd"
>
<nacos:annotation-driven>nacos:annotation-driven><nacos:global-properties server-addr&#61;"hs.nacos.com:80" namespace&#61;"f730605f-e19a-4207-82d4-3b76e8d1e54f"/><nacos:property-source data-id&#61;"peb-web" group-id&#61;"DEFAULT_GROUP" auto-refreshed&#61;"true" />beans>

1
4 问题清单
4.1 数字问题
连接mysql访问拒绝&#xff0c;一开始以为是配置的问题&#xff0c;发现好像没什么错。原始yml将000000当成了数字&#xff0c;故这类字符&#xff0c;应该加上引号

02:00:33.873 ERROR com.alibaba.druid.pool.DruidDataSource - create connection SQLException, url: jdbc:mysql://10.101.100.30:3306/peb?characterEncoding&#61;UTF-8, errorCode 1045, state 28000
java.sql.SQLException: Access denied for user &#39;root&#39;&#64;&#39;10.101.10.99&#39; (using password: YES)at com.mysql.jdbc.SQLError.createSQLException(SQLError.java:996)at com.mysql.jdbc.MysqlIO.checkErrorPacket(MysqlIO.java:3887)at com.mysql.jdbc.MysqlIO.checkErrorPacket(MysqlIO.java:3823)at com.mysql.jdbc.MysqlIO.checkErrorPacket(MysqlIO.java:870)at com.mysql.jdbc.MysqlIO.proceedHandshakeWithPluggableAuthentication(MysqlIO.java:1659)

1
出现下面的问题&#xff0c;在yml中增加spring.main.allow-bean-definition-overriding&#61;true

The bean &#39;dataSource&#39;, defined in class path resource [org/springframework/boot/autoconfigure/jdbc/DataSourceConfiguration$Hikari.class], could not be registered. A bean with that name has already been defined in class path resource [com/dzmsoft/ucs/user/server/config/DruidConfig.class] and overriding is disabled.Action:Consider renaming one of the beans or enabling overriding by setting spring.main.allow-bean-definition-overriding&#61;true

如果要关掉nacos配置

spring:cloud:nacos:config:enabled: falsediscovery:enabled: false


推荐阅读
  • 本文介绍了使用Spark实现低配版高斯朴素贝叶斯模型的原因和原理。随着数据量的增大,单机上运行高斯朴素贝叶斯模型会变得很慢,因此考虑使用Spark来加速运行。然而,Spark的MLlib并没有实现高斯朴素贝叶斯模型,因此需要自己动手实现。文章还介绍了朴素贝叶斯的原理和公式,并对具有多个特征和类别的模型进行了讨论。最后,作者总结了实现低配版高斯朴素贝叶斯模型的步骤。 ... [详细]
  • 如何在服务器主机上实现文件共享的方法和工具
    本文介绍了在服务器主机上实现文件共享的方法和工具,包括Linux主机和Windows主机的文件传输方式,Web运维和FTP/SFTP客户端运维两种方式,以及使用WinSCP工具将文件上传至Linux云服务器的操作方法。此外,还介绍了在迁移过程中需要安装迁移Agent并输入目的端服务器所在华为云的AK/SK,以及主机迁移服务会收集的源端服务器信息。 ... [详细]
  • 解决Sharepoint 2013运行状况分析出现的“一个或多个服务器未响应”问题的方法
    本文介绍了解决Sharepoint 2013运行状况分析中出现的“一个或多个服务器未响应”问题的方法。对于有高要求的客户来说,系统检测问题的存在是不可接受的。文章详细描述了解决该问题的步骤,包括删除服务器、处理分布式缓存留下的记录以及使用代码等方法。同时还提供了相关关键词和错误提示信息,以帮助读者更好地理解和解决该问题。 ... [详细]
  • Spring框架《一》简介
    Spring框架《一》1.Spring概述1.1简介1.2Spring模板二、IOC容器和Bean1.IOC和DI简介2.三种通过类型获取bean3.给bean的属性赋值3.1依赖 ... [详细]
  • Android Studio Bumblebee | 2021.1.1(大黄蜂版本使用介绍)
    本文介绍了Android Studio Bumblebee | 2021.1.1(大黄蜂版本)的使用方法和相关知识,包括Gradle的介绍、设备管理器的配置、无线调试、新版本问题等内容。同时还提供了更新版本的下载地址和启动页面截图。 ... [详细]
  • 展开全部下面的代码是创建一个立方体Thisexamplescreatesanddisplaysasimplebox.#Thefirstlineloadstheinit_disp ... [详细]
  • Java学习笔记之面向对象编程(OOP)
    本文介绍了Java学习笔记中的面向对象编程(OOP)内容,包括OOP的三大特性(封装、继承、多态)和五大原则(单一职责原则、开放封闭原则、里式替换原则、依赖倒置原则)。通过学习OOP,可以提高代码复用性、拓展性和安全性。 ... [详细]
  • C++字符字符串处理及字符集编码方案
    本文介绍了C++中字符字符串处理的问题,并详细解释了字符集编码方案,包括UNICODE、Windows apps采用的UTF-16编码、ASCII、SBCS和DBCS编码方案。同时说明了ANSI C标准和Windows中的字符/字符串数据类型实现。文章还提到了在编译时需要定义UNICODE宏以支持unicode编码,否则将使用windows code page编译。最后,给出了相关的头文件和数据类型定义。 ... [详细]
  • r2dbc配置多数据源
    R2dbc配置多数据源问题根据官网配置r2dbc连接mysql多数据源所遇到的问题pom配置可以参考官网,不过我这样配置会报错我并没有这样配置将以下内容添加到pom.xml文件d ... [详细]
  • 服务器上的操作系统有哪些,如何选择适合的操作系统?
    本文介绍了服务器上常见的操作系统,包括系统盘镜像、数据盘镜像和整机镜像的数量。同时,还介绍了共享镜像的限制和使用方法。此外,还提供了关于华为云服务的帮助中心,其中包括产品简介、价格说明、购买指南、用户指南、API参考、最佳实践、常见问题和视频帮助等技术文档。对于裸金属服务器的远程登录,本文介绍了使用密钥对登录的方法,并提供了部分操作系统配置示例。最后,还提到了SUSE云耀云服务器的特点和快速搭建方法。 ... [详细]
  • Vagrant虚拟化工具的安装和使用教程
    本文介绍了Vagrant虚拟化工具的安装和使用教程。首先介绍了安装virtualBox和Vagrant的步骤。然后详细说明了Vagrant的安装和使用方法,包括如何检查安装是否成功。最后介绍了下载虚拟机镜像的步骤,以及Vagrant镜像网站的相关信息。 ... [详细]
  • Todayatworksomeonetriedtoconvincemethat:今天在工作中有人试图说服我:{$obj->getTableInfo()}isfine ... [详细]
  • PatchODAX8: ... [详细]
  • CISCO ASA防火墙Failover+multiple context详细部署By 年糕泰迪[操作系统入门]
    一.文章概述本文主要就CISCOASA防火墙的高可用和扩张性进行阐述和部署。再cisco防火墙系列中主要有3种技术来实现高可用和扩张性。分别是Failover,multiplese ... [详细]
  • 问题描述:域名已经备案,我全部都有,也在后台配置了,但是手机预览,还是请求失败,PC端是可以请求 ... [详细]
author-avatar
手机用户2502939977
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有