和SpringCloud Config类似,我们必需要在 bootstrap.yml
配置文件中进行配置,在application.yml
中无效,bootstrap.yml
优先级高于application.yml
。
spring:
application:
name: user-service # 应用名称
profiles:
active: dev # 当前环境对应的 profile
cloud:
nacos:
config:
enabled: true # 如果不想使用 Nacos 进行配置管理,设置为 false 即可
server-addr: 127.0.0.1:8848 # Nacos Server 地址
group: DEFAULT_GROUP # 组,默认为 DEFAULT_GROUP
file-extension: yaml # 配置内容的数据格式,默认为 properties
说明:之所以需要配置
spring.application.name
,是因为它是构成 Nacos 配置管理dataId
字段的一部分。
在 Nacos Spring Cloud 中,dataId
的完整格式如下:
${prefix}-${spring.profile.active}.${file-extension}
-
prefix
默认为spring.application.name
的值,也可以通过配置项spring.cloud.nacos.config.prefix
来配置。 -
spring.profile.active
即为当前环境对应的 profile。注意:当spring.profile.active
为空时,对应的连接符-
也将不存在,dataId 的拼接格式将变成${prefix}.${file-extension}
-
file-exetension
为配置内容的数据格式,可以通过配置项spring.cloud.nacos.config.file-extension
来配置。目前只支持properties
和yaml
类型,默认为properties
。
我们在Nacos Server的配置列表中新建一个配置。
Data Id
为 user-service.yaml
,组使用默认组,并添加 yaml
格式的配置信息。
project:
name: e-shop-userservice
author: fighter3
使用 Spring 的 @Value
注解来获取配置信息,${}
中对应 Nacos 配置中心配置内容的 key,:
后跟默认值。
并且通过 Spring Cloud 原生注解 @RefreshScope
实现配置自动更新。
/**
-
@Author: 三分恶
-
@Date: 2021/5/30
-
@Description: Nacos配置项获取
**/
@RefreshScope
@RestController
@RequestMapping(“/shop-user”)
@Api(value = “配置信息接口”, tags = “配置信息接口”)
public class NacosConfigController {
@Value(“${project.name:}”)
private String projectName;
@Value(“${project.author:}”)
private String projectAuthor;
@GetMapping(“/config”)
@ApiOperation(value = “获取Nacos配置项”)
public Map<String, Object> getConfig() {
Map<String, Object> configMap = new HashMap();
configMap.put(“projectName”, projectName);
configMap.put(“projectAuthor”, projectAuthor);
return configMap;
}
}
启动user-service
服务。
访问knife4j接口地址:http://localhost:8080/doc.html ,调用获取Nacos配置项接口:
接下来,我们修改一下配置项,并发布:
可以看到控制台打印输出:
再次访问获取配置接口:
OK,到这我们已经成功地读取了Nacos配置中心的配置,接下来,我们尝试将服务的配置,例如数据源来进行统一的集中配置。
========================================================================
好,我们开始进行Nacos集中配置的实战:
我们之前用的是默认的命名空间,接下来我们创建一个新的命名空间,用于我们开发环境的配置。我们给它命名为dev_space
:
这里使用了命名空间来隔离配置,如果我们想要一个测试环境的配置,如法炮制,建一个新的空间就行了。
接下来我们在dev_space
下创建一个新的配置user-service-dev.yaml
project:
name: e-shop-userservice
author: fighter3
数据源配置
spring:
datasource:
driver-class-name: com.mysql.cj.jdbc.Driver
url: jdbc:mysql://localhost:3306/shop_user?characterEncoding=utf-8&allowMultiQueries=true&serverTimezone=GMT%2B8
username: root
password: root
我们在bootstrap.yml中指定命名空间,完整bootstrap.yml如下:
spring:
application:
name: user-service # 应用名称
profiles:
active: dev # 当前环境对应的 profile
cloud:
nacos:
config:
enabled: true # 如果不想使用 Nacos 进行配置管理,设置为 false 即可
server-addr: 127.0.0.1:8848 # Nacos Server 地址
group: DEFAULT_GROUP # 组,默认为 DEFAULT_GROUP
file-extension: yaml # 配置内容的数据格式,默认为 properties
namespace: dev_space # 指定命名空间,默认为public
修改application.yml,注释掉数据源相关配置:
启动用户服务,服务正常启动以后,我们分别调试获取用户信息接口和获取配置接口。
OK,获取到了预期的结果。
自我介绍一下,小编13年上海交大毕业,曾经在小公司待过,也去过华为、OPPO等大厂,18年进入阿里一直到现在。
深知大多数Java工程师,想要提升技能,往往是自己摸索成长或者是报班学习,但对于培训机构动则几千的学费,着实压力不小。自己不成体系的自学效果低效又漫长,而且极易碰到天花板技术停滞不前!
因此收集整理了一份《2024年Java开发全套学习资料》,初衷也很简单,就是希望能够帮助到想自学提升又不知道该从何学起的朋友,同时减轻大家的负担。
既有适合小白学习的零基础资料,也有适合3年以上经验的小伙伴深入学习提升的进阶课程,基本涵盖了95%以上Java开发知识点,真正体系化!
由于文件比较大,这里只是将部分目录截图出来,每个节点里面都包含大厂面经、学习笔记、源码讲义、实战项目、讲解视频,并且会持续更新!
如果你觉得这些内容对你有帮助,可以扫码获取!!(备注Java获取)
总结
面试难免让人焦虑不安。经历过的人都懂的。但是如果你提前预测面试官要问你的问题并想出得体的回答方式,就会容易很多。
此外,都说“面试造火箭,工作拧螺丝”,那对于准备面试的朋友,你只需懂一个字:刷!
给我刷刷刷刷,使劲儿刷刷刷刷刷!今天既是来谈面试的,那就必须得来整点面试真题,这不花了我整28天,做了份“Java一线大厂高岗面试题解析合集:JAVA基础-中级-高级面试+SSM框架+分布式+性能调优+微服务+并发编程+网络+设计模式+数据结构与算法等”
且除了单纯的刷题,也得需准备一本【JAVA进阶核心知识手册】:JVM、JAVA集合、JAVA多线程并发、JAVA基础、Spring 原理、微服务、Netty与RPC、网络、日志、Zookeeper、Kafka、RabbitMQ、Hbase、MongoDB、Cassandra、设计模式、负载均衡、数据库、一致性算法、JAVA算法、数据结构、加密算法、分布式缓存、Hadoop、Spark、Storm、YARN、机器学习、云计算,用来查漏补缺最好不过。
《互联网大厂面试真题解析、进阶开发核心学习笔记、全套讲解视频、实战项目源码讲义》点击传送门即可获取!
488)]
且除了单纯的刷题,也得需准备一本【JAVA进阶核心知识手册】:JVM、JAVA集合、JAVA多线程并发、JAVA基础、Spring 原理、微服务、Netty与RPC、网络、日志、Zookeeper、Kafka、RabbitMQ、Hbase、MongoDB、Cassandra、设计模式、负载均衡、数据库、一致性算法、JAVA算法、数据结构、加密算法、分布式缓存、Hadoop、Spark、Storm、YARN、机器学习、云计算,用来查漏补缺最好不过。
[外链图片转存中…(img-k3FPAhCo-1713416589489)]
《互联网大厂面试真题解析、进阶开发核心学习笔记、全套讲解视频、实战项目源码讲义》点击传送门即可获取!