建立数据库
建立个用于存放配置的数据库名为nacos-config,nacos/conf下有一个nacos-mysql.sql,运行一下便可获得存放配置信息的表
配置数据源
修改nacos/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://xxxxxxx:3306/nacos_config?characterEncoding=utf8&connectTimeout=1000&socketTimeout=3000&autoReconnect=true&useUnicode=true&useSSL=false&serverTimezone=UTC
db.user=root
db.password=xxxxxxx
记得重启
应用接入配置中心
依赖
<!-- Spring Boot Web模块 -->
<dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-web</artifactId>
</dependency>
<!-- Nacos注册中心starter -->
<dependency>
    <groupId>com.alibaba.cloud</groupId>
    <artifactId>spring-cloud-starter-alibaba-nacos-discovery</artifactId>
</dependency>
<!-- Nacos配置中心starter -->
<dependency>
    <groupId>com.alibaba.cloud</groupId>
    <artifactId>spring-cloud-starter-alibaba-nacos-config</artifactId>
</dependency>
配置文件,我们把原来的application.yml删除了,我们不再需要本地配置
然后创建文件bootstrap.yml,注意名字要一模一样
spring:
  application:
    name: order-service #微服务id
  profiles:
    active: dev #环境名
  cloud:
    nacos:
      config: #Nacos配置中心配置
        file-extension: yml #文件扩展名
        server-addr: 192.168.31.10:8848
        username: nacos
        password: nacos
logging: #开启debug日志,仅为学习时使用
  level:
    root: debug
定义一份配置文件是用微服务id-环境名.文件扩展名 三部分组合为有效的 data id,比如上面的就是order-service-dev.yml
然后去Nacos把原来的那些应用配置给存到云端
点击➕ 号新建配置
注意data id 就是上面说的微服务id-环境名.文件扩展名 ,然后选择yaml格式,把我们以前写在本地的配置文件写到下面的配置内容中
此时新建的配置信息其实就是用我们之前配置的MySQL存的,你会发现这些配置信息存在config-info表中了
配置热加载技术
当我们突然修改配置文件后,为了生效我们必须重启一下应用,就有点麻烦,为了解决这个问题,我们用到了配置热加载技术
为了支持热加载,服务的程序针对热加载需要作出如下变动:
第一,配置数据必须被封装到单独的配置 Bean 中;
第二,这个配置 Bean 需要被 @Configuration 与 @RefreshScope 两个注解描述。
@Configuration
@RefreshScope
public class CustomConfig {
    @Value("${custom.flag}")
    private String flag;
    @Value("${custom.database}")
    private String database;
    public String getFlag() {
        return flag;
    }
    public void setFlag(String flag) {
        this.flag = flag;
    }
    public String getDatabase() {
        return database;
    }
    public void setDatabase(String database) {
        this.database = database;
    }
}
在配置处用@Resource 注入即可
@RestController
public class TestController {
    @Resource
    private CustomConfig customConfig;
    @GetMapping("/test")
    public String test(){
        return "flag:" + customConfig.getFlag() + "<br/> database:" + customConfig.getDatabase();
    }
}
现在我们需要变更配置文件时只需在Nacos中修改配置,它就会自动推送到应用而不需要每次都重启应用了。
分环境配置
这个其实和原来没有用配置中心的差不多,生产环境的配置就在文件名后加-prod ,配置环境就加-dev ,共用的基础全局配置就直接application.yml 什么也不用加。
对于现在微服务架构具体来说就是
- order-service-dev.yml 开发环境
- order-service-prod.yml 生产环境
- order-service.yml 共用
当然,如果要改变你要用的环境,还是需要改bootstrap.yml
spring:
  profiles:
    active: prod #环境名
 
                
             
	 
	