springcloud项⽬的启动顺序_Nacos(四):SpringCloud项⽬
中接⼊N。。。
前⾔
通过前两篇⽂章:
相信⼤家已经对nacos作为注册中⼼的基本使⽤已经有了⼀定的了解。
然⽽,nacos远远不⽌于此,本⽂我们来看⼀下nacos作为配置中⼼在springcloud中的使⽤
我的环境
windows10
jdk8
springcloud:lease
springboot:2.lease
spring-cloud-alibaba-dependencies:0.lease
nacos-server:1.0.1
本⽂的项⽬demo继续沿⽤之前⽂章中的聚合⼯程nacos,若⼩伙伴还没有之前的环境,可⾄源码地址中下载
启动nacos-server
进⼊bin⽂件夹(⽬录:nacos-server-1.0.1\nacos\bin),直接双击执⾏d⽂件,这⾥具体的启动细节就不再说明
新建配置
在nacos-server中新建配置,其中data id它的定义规则是:${prefix}-${spring.profile.active}.${file-extension}
prefix 默认为 spring.application.name 的值,也可以通过配置项 spring.fig.prefix 来配置。
spring.profile.active 即为当前环境对应的 profile,可以通过配置项 spring.profile.active 来配置。
file-exetension 为配置内容的数据格式,可以通过配置项 spring.fig.file-extension 来配置。⽬前只⽀持 properties
和 yaml 类型。
注意:当 spring.profile.active 为空时,对应的连接符 - 也将不存在,dataid 的拼接格式变成 ${prefix}.${file-extension}
这⾥我创建data id 为l的配置⽂件,其中group为默认的default_group,配置⽂件的格式也相应的选择yaml,其内添加配置fig=hello_nacos,如图所⽰
创建应⽤
1、在聚合⼯程nacos下新建module,创建⼀个名为nacos-config的⼦⼯程,其l⽂件内容如下
xsi:schemalocation="/pom/4.0.0 /xsd/maven-4.0.0.xsd">
4.0.0
nacos
com.study.www
0.0.1-snapshot
com.larscheng.www
nacos-config
0.0.1-snapshot
nacos-config
demo project for spring boot
1.8
org.springframework.cloud
spring-cloud-starter-alibaba-nacos-discovery
org.springframework.cloud
bootstrap项目spring-cloud-starter-alibaba-nacos-config
org.springframework.boot
spring-boot-maven-plugin
2、创建配置⽂件名为l,注意是====,⽽不是application或者其他。原因如下
nacos同springcloud-config⼀样,在项⽬初始化时,要保证先从配置中⼼进⾏配置拉取,拉取配置之后,才能保证项⽬的正常启动。springboot中配置⽂件的加载是存在优先级顺序的,bootstrap优先级⾼于application
这⾥的配置⽂件类型可以根据个⼈习惯选择,我这⾥⽤的时yml类型,配置内容如下
spring:
application:
name: nacos-config
cloud:
nacos:
discovery:
server-addr: 127.0.0.1:8848
config:
server-addr: 127.0.0.1:8848
file-extension: yml
可以看到必须可少的配置项spring.application.name
spring.cloud.nacos.discovery.server-addr指定注册中⼼的地址,如果你不需要注册该服务,也可以去掉该项,并删除discovery依赖
spring.fig.server-addr指定配置中⼼的地址
file-extension指定配置中⼼中配置⽂件的格式
上⾯的配置是为了保证服务的正常注册和配置获取,以及配置dataid的正确性
3、创建对外接⼝来从nacos中读取配置,nacosconfigapplication.java修改如下
@springbootapplication
@enablediscoveryclient
@restcontroller
@refreshscope
public class nacosconfigapplication {
public static void main(string[] args) {
springapplication.run(nacosconfigapplication.class, args);
}
@value("${fig}")
private string config;
@requestmapping("/getvalue")
public string getvalue() {
return config;
}
}
其中通过@value注解,去读取key为nacosconfig的配置的值,并通过/getvalue接⼝返回。
加⼊@refreshscope注解,可以使当前类下的配置⽀持动态更新。
到此代码部分的⼯作已经完成
启动测试
保证nacos-server已经启动
检查配置⽂件是否已经添加
启动nacos-config项⽬
启动成功后在nacos控制台中可以看到我们注册的服务
此时调⽤接⼝进⾏测试 127.0.0.1:8080/getvalue ,可以看到返回结果
hello_nacos
此时说明已经成功读取到配置,下⾯我将nacos-server上的配置修改为hello_lars,看看能否动态更新
调⽤接⼝进⾏测试 127.0.0.1:8080/getvalue ,返回结果如下
hello_lars
可以看到我通过nacos-server的控制台进⾏配置的修改,客户端服务nacos-config也相应的进⾏热更新。
总结
通过上⾯的测试,可见nacos做配置中⼼,在springcloud项⽬中,也可以做到⽆缝衔接,切换到nacos可以说知识修改配置的问题,成本也很低
项⽬的其他配置不变,只需要指定配置中⼼地址,同时将配置⽂件外部管理。
本⽂源码:github/larscheng/larscheng-learning-demo/tree/master/nacos
参考
⽂章链接: 本⽂⾸发于个⼈博客:www.larscheng/nacos-namespace/
版权声明: 本博客所有⽂章除特别声明外,均采⽤ cc by-nc-sa 4.0 许可协议。转载请注明来⾃ larscheng's blog!
如您对本⽂有疑问或者有任何想说的,请点击进⾏留⾔回复,万千⽹友为您解惑!
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论