概要
nacos 可以作为服务注册发现中心,也可以作为配置中心,作为配置中心的时候,系统的配置可以做到自动刷新,即当配置服务器的数据发生更改时,客户端的配置会进行自动的更新。
实现步骤
1.修改maven 配置
<dependency> <groupId>com.alibaba.cloud</groupId> <artifactId>spring-cloud-starter-alibaba-nacos-config</artifactId> </dependency>
2.增加bootstrap.properties
这个是文件是启用nacos作为配置中心的文件。
图标有朵云,表示启用nacos 作为配置中心。
//配置nacos作为配置服务器
spring.cloud.nacos.config.server-addr=127.0.0.1:8848
//配置模式为开发模式
spring.profiles.active=dev
//nacos配资使用yml 作为扩展名
spring.cloud.nacos.config.file-extension=yml
//下面的配置时公共配置,即可以在不同应用之间进行共享。
spring.cloud.nacos.config.shared-dataids=common.yml
spring.cloud.nacos.config.refreshable-dataids=common.yml
springcloud 是使用配置优先的。
比如我现在有一个应用为:
jpaas-form
系统会按照如下的配置进行查找
1.先找 jpaas-form-dev.yml,如果找到了则返回,如果找不到则进行下一步。
2.查找 jpaas-form.yml 如果找不到,则查找共享的配置,根据上面的配置他会查找common.yml
这里配置格式,可以是 yaml 或者 properties
3.在程序中使用
@RefreshScope public class SysSeqIdController extends BaseController<SysSeqId> { @Value( value = "${user.name}") private String username=""; @Value( value = "${sys.name}" ) private String uploaddir=""; @Autowired private User user;
@RefreshScope 是实现自动刷新配置。
user.name,sys.name 是配置的参数
可以使用 yml 的格式进行配置。
我们还可以配置对象的方式进行参数进行注入,使用相当方便。
比如:
user:
name: ray
address: guangzhou
编写用户代码如下:
@Data @Component @ConfigurationProperties(prefix = "user") public class User { private String name=""; private String address=""; }
这样 数据就会自动配置好用户对象,使用下面的代码进行注入。
@Autowired private User user;
同样,这个对象在配置中心修改后也能进行自动刷新。
4.将数据库配置放到nacos 配置中心。
我们一般将数据库配置,配置到 application.properties 文件中,这有个坏处,当我需要打包时,需要在启动时,指定这些配置,配置会太多。
因此,我们需要将这些配置放置到 nacos ,在启动应用的时候,我们只需要指定 nacos 的地址,这样我们 就可以启动微服务应用。
当数据库配置等需要修改时,我们只需修改naocs的配置即可,不需要修改程序包。
nacos配置如下:
程序配置中心配置如下:
在bootstrap-dev.properties 指定 nacos的配置 nacos-config-dev.properties
在 IDEA 中指定 配置 nacos.address
使用命令行启动微服务
java -jar jpaas-user.jar --nacos.address=192.168.1.10:8848 指定配置中心地址。