首页天道酬勤springboot获取文件路径(springboot默认配置文件)

springboot获取文件路径(springboot默认配置文件)

admin 12-01 06:42 448次浏览

欢迎关注头条:快速纸鹤聊天技术。

原创技术分享,知识汇编

目录

前言外部配置多模块共享配置动态刷新日志级多环境配置总结

前言

快手纸鹤介绍了如何为多个子项目设计配置文件,如何在多环境下配置文件;仔细想想,上一篇文章的解决方法还是有一些问题的。

第一,配置多个环境还是比较麻烦,Maven插件配置比较麻烦。

第二,配置信息向开发人员公开。

第三,配置内容不能动态改变。比如生成环境中的日志级别一般是warn,但如果在线报告有误,则需要检查问题,有时需要调整日志级别;一般需要在启动应用服务之前,先停止应用服务,更改日志级别;这样比较麻烦。您可以在不重新启动服务的情况下更改日志级别吗?

00-1010快速纸鹤在这里,我们使用的是之前介绍的nacos配置中心方案,朋友们也会一步一步跟着这款快速纸鹤的思路走。首先,能否用nacos解决配置信息暴露的问题?

首先,我们需要在POM文件中引入nacos的配置依赖包。

属国

groupIdcom.alibaba.cloud/groupId

artifactIdspring-cloud-starter-Alibaba-nacos-config/artifactId

/dependency然后我们在项目配置文件bootstrap.yml中,它必须是bootstrap.yml文件。

弹簧:

应用程序:

名称:配置服务

cloud:

#nacos相关配置

nacos:

#注册表服务地址

发现:

register-enabled: true

服务器地址1270 . 0 . 0 . 12770 . 128888888816

#配置中心服务地址

config:

服务器地址1270 . 0 . 0 . 12770 . 128888888816

我们的常规项目将在application.yml中配置数据源的数据源信息和redis分布式缓存的配置信息,例如:

弹簧:

数据源:

名称:彩虹

URL : JDBC : MySQL ://localhost :3306/rainbow

用户名:根

密码: 123456

redis:

数据库: 0

主机:本地主机

密码:

Port: 6379我们会发现一些重要的配置信息暴露出来,比如url链接地址、用户名和密码。

如果我们通过application-dev.yml、application-sit.yml、application-UAT.yml、application-prod.yml实现多环境;

然后将暴露开发环境、sit环境、uat环境和产品环境。

有没有什么办法可以防止开发者轻易找到信息,或者配置信息是外部的?我们通过nacos的加载配置文件机制来解决这个问题。

nacos将自动加载$ { prefix }-$ { spring . profile . active }。$ {文件扩展名}配置文件信息。

1.前缀默认为spring.application.name的值,也可以通过配置项spring . cloud . nacos . config . prefix进行配置。

2.spring.profile.active是对应于当前环境的配置文件,可以通过配置项spring.profile.active进行配置。

3.file-exe张力是配置内容的数据格式,可以通过配置项spring . cloud . nacos . config . file-extension进行配置。目前只支持属性和yaml类型。

注意:当spring.profile.active为空时,相应的连接器-也将不存在。

dataId的拼接格式变成前缀。{文件扩展名}

然后我们可以使用spring.profile.active属性来设置db和redis配置信息。

弹簧:

应用程序:

名称:配置服务

cloud:

#nacos相关配置

nacos:

#注册表服务地址

发现:

register-enabled: true

服务器地址1270 . 0 . 0 . 12770 . 128888888816

#配置中心服务地址

config: server-addr: 127.0.0.1:8848 file-extension: yml profiles: active: - db - redis

我们需要在nacos配置中心新建文件

这样的配置后,就无须在application.yml中配置db和redis配置信息了,启动时nacos客户端先去nacos配置中心读取配置,并加载初始化一些Bean。

这样就很好的起到了配置信息外置的方式,而且我们可以很方便的修改信息。

多模块共享配置

因为很多子模块都会需要链接数据库以及redis,而且他们的配置信息是一样的,那我们就不需要每个模块都要配置一次,我们只要利用nacos的共享配置机制

spring: application: name: config-service cloud: #nacos相关配置 nacos: #注册中心服务 discovery: register-enabled: true server-addr: 127.0.0.1:8848 #配置中心服务 config: server-addr: 127.0.0.1:8848 file-extension: yml shared-configs: - db.yml - redis.yml

这样每个子模块都这样配置,就只需要共享此配置文件。

用了shared-configs属性

动态刷新日志级别

那我们如何在线刷新日志级别呢?其实也很简单

spring: application: name: config-service cloud: #nacos相关配置 nacos: #注册中心服务 discovery: register-enabled: true server-addr: 127.0.0.1:8848 #配置中心服务 config: server-addr: 127.0.0.1:8848 file-extension: yml shared-configs: - db.yml - redis.yml profiles: active: - log

日志配置内容

业务中的日志代码

log.error("这是一条error");

log.warn("这是一条warn");

log.info("这是一条info");

log.debug("这是一条debug");

直接通过nacos的配置,动态可以更新应用服务的日志级别

多环境配置

多环境配置推荐利用nacos的命名空间方案,可以很好的实现。

可以在外部启动jar时,通过外部参数传入

java -jar config-server.jar --spring.cloud.config.namespace=a1a8bb58-18a6-4e3e-a584-6adb109d7a85

总结

以上就是利用配置中心实现多项目模块,配置外置的方法,也能够实时刷新日志级别。

---End---


迅速的纸鹤的微服务网关分享课程,请大家多多支持

推荐阅读

a、dubbo如何处理业务异常,这个一定要知道哦!

b、企业级SpringBoot应用多个子项目配置文件规划、多环境支持(一)

c、企业级SpringBoot应用多个子项目配置文件规划、多环境支持(二)

1、基于RocketMq的SpringCloud Stream框架实战入门

2、如何搭建消息中间件应用框架之SpringCloud Stream

3、面试必备:网关异常了怎么办?如何做全局异常处理?

4、Gateway网关系列(二):SpringCloud Gateway入门实战,路由规则

5、Gateway网关系列开篇:SpringCloud的官方网关Gateway介绍

6、API网关在微服务架构中的应用,这一篇就够了

7、学习Lambda表达式看这篇就够了,不会让你失望的哦(续篇)

8、Lambda用在哪里?几种场景?

9、为什么会出现Lambda表达式,你知道吗?

10、不说“分布式事务”理论,直接上大厂阿里的解决方案,绝对实用

11、女程序员问到这个问题,让我思考了半天,Mysql的“三高”架构

12、大厂二面:CAP原则为什么只能满足其中两项?而不能同时满足

13、阿里P7二面:聊聊零拷贝的原理

14、秒杀系统的核心点都在这里,快来取

15、你了解如何利用token方式实现分布式Session吗?

16、Mysql索引结构演变,为什么最终会是那个结构呢?让你一看就懂

17、一场比赛涉及到的知识,用通俗易通的方式介绍并发协调

18、企业实战Redis全方面思考,你思考了吗?

19、面试题:Thread的start和run的区别

20、面试题:什么是CAS?CAS的作用以及缺点

21、如何访问redis中的海量数据?避免事故产生

22、如何解决Redis热点问题?以及如何发现热点?

23、如何设计API接口,实现统一格式返回?

24、你真的知道在生产环境下如何部署tomcat吗?

25、分享一线互联网大厂分布式唯一ID设计 之 snowflake方案

26、分享大厂分布式唯一ID设计方案,快来围观

27、你想了解一线大厂的分布式唯一ID生成方案吗?

28、你知道如何处理大数据量吗?(数据拆分篇)

29、如何永不迁移数据和避免热点? 根据服务器指标分配数据量(揭秘篇)

30、你知道怎么分库分表吗?如何做到永不迁移数据和避免热点吗?

31、你了解大型网站的页面静态化吗?

32、你知道如何更新缓存吗?如何保证缓存和数据库双写一致性?

33、你知道怎么解决DB读写分离,导致数据不一致问题吗?

34、DB读写分离情况下,如何解决缓存和数据库不一致性问题?

35、你真的知道怎么使用缓存吗?

36、如何利用锁,防止缓存击穿?重构思想的重要性

37、海量订单产生的业务高峰期,如何避免消息的重复消费?

38、你知道如何保障生产端100%消息投递成功吗?

39、微服务下的分布式session该如何管理?

40、阿里二面:filter、interceptor、aspect应如何选择?很多人中招

41、互联网架构重要组员CDN,很多高级开发都没有实操过,来看这里

42、阿里二面:CDN缓存控制原理,看看能不能难住你

43、SpringCloud Alibaba之Nacos多环境多项目管理

44、SpringCloud Alibaba系列之Nacos配置中心玩法

45、SpringCloud Alibaba之Nacos注册中心

46、SpringCloud Plus版本之SpringCloud Alibaba

47、SpringCloud Alibaba之Nacos集群、持久化

48、SpringCloud Alibaba之Nacos共享配置、灰度配置

49、SpringCloud Alibaba之Sentinel工作原理

50、SpringCloud Alibaba之Sentinel流控管理

51、SpringCloud Alibaba之Sentinel降级管理

52、SpringCloud Alibaba之Sentinel热点参数限流

53、SpringCloud Alibaba之Sentinel的API实战

但用17ce去get这个页面【Java 框架学习】自学笔记(更新至 类与对象)
干货业务员年度总结(超市春节干货工作总结) 穷这个拼音怎么拼(一起怎么拼)
相关内容