前言
目前测试成功的是SpringBoot 2.3.12.RELEASE 版本,更高的版本还不行。
现在IDEA创建项目默认的是2.6.3版本,还未找到对应的Nacos版本
服务器
下载地址:https://github.com/alibaba/nacos/releases/tag/1.4.0
服务端是使用Java开发的,同时支持Linux和Windows
环境要求
- 64 bit OS,支持 Linux/Unix/Mac/Windows,推荐选用 Linux/Unix/Mac。
- 64 bit JDK 1.8 。
注意
- 必须配置
JAVA_HOME
- 路径中不能包含中文和数字,否则会报错
此时不应有 nacos"logsjava_heapdump.hprof -XX:-UseLargePages"
安装
使用本地数据库不用配置 直接运行即可,使用MySQL就要修改一下配置文件,推荐使用MySQL方式。
使用本地数据库
Linux/Unix/Mac
启动命令(standalone代表着单机模式运行,非集群模式):
代码语言:javascript复制sh startup.sh -m standalone
如果您使用的是ubuntu系统,或者运行脚本报错提示[[符号找不到,可尝试如下运行:
代码语言:javascript复制bash startup.sh -m standalone
Windows
启动命令(standalone代表着单机模式运行,非集群模式):
代码语言:javascript复制startup.cmd -m standalone
使用MySQL
新建一个实例名为nacos
的数据库,并执行nacos/conf
下的nacos-mysql.sql
文件创建表
修改数据库配置
打开conf下的application.properties
文件,修改以下配置
### If use MySQL as datasource:
spring.datasource.platform=mysql
### Count of DB:
db.num=1
### Connect URL of DB:
db.url.0=jdbc:mysql://dbtest.xhkjedu.com:13306/wn_nacos?characterEncoding=utf8&connectTimeout=1000&socketTimeout=3000&autoReconnect=true&useUnicode=true&useSSL=false&serverTimezone=UTC
db.user.0=root
db.password.0=_xhkjedu!@#07
修改为单机模式
如果不是部署nacos集群,则将模式修改为单机模式
打开bin/startup.cmd
文件,将MODE
从cluster
改为standalone
修改完后双击bin/startup.cmd
文件,启动成功,推荐在CMD中运行startup.cmd
文件,这样如果报错能看到错误信息。
访问
打开浏览器访问:
http://localhost:8848/nacos/index.html
输入用户名/密码访问 nacos
/nacos
登录nacos
添加配置
启动好Nacos之后,在Nacos添加如下的配置:
Data ID:nacos-config.properties
Group:DEFAULT_GROUP
配置格式:Properties
配置内容:
user.name=小明
user.age=18
客户端
依赖
注意Spring Boot和Nacos版本必须匹配
代码语言:javascript复制<parent>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-parent</artifactId>
<version>2.3.12.RELEASE</version>
<relativePath/>
</parent>
<dependencies>
<dependency>
<groupId>com.alibaba.cloud</groupId>
<artifactId>spring-cloud-starter-alibaba-nacos-config</artifactId>
<version>2.2.5.RELEASE</version>
</dependency>
</dependencies>
项目下添加配置文件bootstrap.properties
代码语言:javascript复制spring.application.name=nacos-config
spring.cloud.nacos.config.server-addr=127.0.0.1:8848
这样Application中就能取到值了
代码语言:javascript复制import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.context.ConfigurableApplicationContext;
@SpringBootApplication
public class SConfigApplication {
public static void main(String[] args) {
ConfigurableApplicationContext applicationContext = SpringApplication.run(SConfigApplication.class, args);
String userName = applicationContext.getEnvironment().getProperty("user.name");
String userAge = applicationContext.getEnvironment().getProperty("user.age");
System.err.println("user name :" userName "; age: " userAge);
}
}
运行就会打印
user name :小明; age: 18