spring boot集成nacos以及安装配置

注册中心与配置中心

✔️本地安装:

https://github.com/alibaba/nacos/releases
下载2.1.1版本,本地startup.cmd启动,窗口闪退,打开cmd文件末尾加入
pause
endlocal
重新启动查看报错信息:

 "nacos is starting with cluster"
Error occurred during initialization of VM
Could not reserve enough space for 2097152KB object heap
Press any key to continue . . .

没有足够的内存就离谱,猜想一下是之前调整jvm的缘故, tomcat的目录/bin/catalina.bat,
删掉set CATALINA_OPTS=-Xmx1024M -Xms1024M -XX:+HeapDumpOnOutOfMemoryError -XX:PermSize=256M,改回默认jvm大小,重新启动。
没用。。
啊第一句nacos is starting with cluster,以集群方式启动,设置修改一下
cmd文件里set MODE="cluster"改成set MODE="standalone"然后启动
又报错。。。

陷入了沉思,报错信息:

Caused by: java.lang.UnsupportedOperationException: Cannot determine JNI library name for ARCH='x86' OS='windows 10' name='rocksdb'

我的jdk不是64的吗,打开用了半年的jdk,jdk-8u321-windows-i586.exe,32位的。。。害挺牛用这么久
重装jdk,重新启动,启动成功
输入网址查看http://localhost:8848/nacos/#/login 用户密码默认nacos

✔️数据库配置

nacos默认conf文件夹下有sql文件,nacos-mysql.sql,数据库执行该文件
修改完成在同文件夹下找到application.properties,修改db连接,取消注释,修改登录账户密码

✔️spring boot集成nacos

pom文件增加依赖
<dependency>
<groupId>com.alibaba.cloud</groupId>
<artifactId>spring-cloud-starter-alibaba-nacos-config</artifactId>
<version>2.2.1.RELEASE</version>
</dependency>
<dependency>
<groupId>com.alibaba.cloud</groupId>
    <artifactId>spring-cloud-starter-alibaba-nacos-discovery</artifactId>
    <version>2.2.1.RELEASE</version>
</dependency>
创建bootstrap.properties或bootstrap.yml文件加入配置
spring.application.name=test-nacos
spring.cloud.nacos.username=nacos
spring.cloud.nacos.password=nacos
spring.cloud.nacos.server-addr=127.0.0.1:8848

spring.cloud.nacos.discovery.namespace=PROD
spring.cloud.nacos.config.namespace=PROD
spring.cloud.nacos.config.timeout=3000
spring.cloud.nacos.config.refresh-enabled=true

spring.cloud.nacos.config.group=apm
spring.cloud.nacos.config.prefix=${spring.application.name}
spring.cloud.nacos.config.file-extension=properties

spring.cloud.nacos.config.shared-configs[0].group=apm
spring.cloud.nacos.config.shared-configs[0].data-id=apm-mobile-android.properties
spring.cloud.nacos.config.shared-configs[0].refresh=true

spring.liquibase.enabled=false
spring boot的启动类加入注解
@EnableDiscoveryClient

启动,好成功报错

Failed to configure a DataSource: 'url' attribute is not specified and no embedded datasource could be configured.

很明显,新建项目没有连接数据库,pom文件加入一系列mysql依赖,顺手再加个mybatis-plus依赖,yml文件加入配置,重新启动
good,,启动成功👍

数据源

既然使用了nacos就不用spring 配置数据源的操作了,上nacos动态配置数据源,注掉application.yml的数据源配置,bootstrap.properties中nacos的配置,创建bootstrap.yml文件
注:spring中yml文件的优先级是高于properties的

spring:
  application:
    name: demo
  cloud:
    nacos:
      username: nacos
      password: nacos
      config:
        server-addr: 127.0.0.1:8848
        file-extension: properties

在nacos客户端配置好配置内容properties文件,dataid为demo.properties

management.health.defaults.enabled=false
spring.cloud.nacos.discovery.server-addr=127.0.0.1:8848
server.port = 8080

jdbc.driver=com.mysql.cj.jdbc.Driver
spring.datasource.url=jdbc:mysql://localhost:3306/test?useUnicode=true&characterEncoding=utf-8&useSSL=true&serverTimezone=Asia/Shanghai
spring.datasource.username=root
spring.datasource.password=root

management.health.defaults.enabled=false,关闭健康检查
重新启动,启动成功
ok开始写个测试类康康是否获取到了nacos配置的数据库连接

@Component
@RefreshScope
@Data
public class TestValue {
    @Value("${spring.datasource.username}$")
    private String user;

    @Value("${spring.datasource.password}$")
    private String passWord;
}

@RestController
@RequestMapping("/config")
public class ConfigController {
    @Autowired
    private TestValue testValue;


    @GetMapping("/getUser")
    public Object getValue(){
        Map<String,Object> map = new HashMap<>();
        map.put("user",testValue.getUser());
        map.put("password",testValue.getPassWord());
        return map;
    }
}

postman调用,成功打印

引用nacos里的配置连接mysql

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值