当前位置: 首页 > news >正文

做理财的网站有哪些内容长春一般建一个网站需要多少钱

做理财的网站有哪些内容,长春一般建一个网站需要多少钱,申请专利的网站,宁波seo外包公司目录 一、导入依赖 二、配置文件 三、测试调用配置文件 四、配置文件是否实时更新 4.1 引入演示 4.2 实现热更新 Value(${xx}) RefreshScope ConfigurationProperties 无感自动刷新 五、配置监听 六、配置文件的加载顺序 七、数据隔离⭐ 7.1 需求描述 7.2 难点 …

目录

一、导入依赖

二、配置文件

三、测试调用配置文件

四、配置文件是否实时更新

4.1 引入演示

4.2 实现热更新

@Value(${xx}) + @RefreshScope

@ConfigurationProperties 无感自动刷新

五、配置监听

六、配置文件的加载顺序

七、数据隔离⭐

7.1 需求描述

7.2 难点

7.3 案例说明

7.4 操作演示

7.4.1 配置中心创建

7.4.2 修改本地application.yml文件

7.4.3 切换不同运行环境测试

八、总结


🐟 建议从SpringCloud系列教程的第一篇开始系统学习。部分知识点若在前文已详细讲解,后续教程可能仅会简要提及。

一、导入依赖

在service公共父模块下的pom文件中,导入nacos作为配置中心的依赖:

<!-- 配置中心 -->
<dependency><groupId>com.alibaba.cloud</groupId><artifactId>spring-cloud-starter-alibaba-nacos-config</artifactId>
</dependency>

二、配置文件

此时如果直接启动项目,是会启动失败的,提示如下:

表示需要添加spring.cofig.import配置,如果不需要配置,必须将配置导入检查功能禁用。

话不多说,在application.yml配置文件中添加上该配置项

server:port: 8000
spring:application:name: service-eduprofiles:active: devcloud:nacos:server-addr: localhost:8848config:import: nacos:server-edu.properties

解释 

spring.cofig.import 后面支持的类型

  • 本地文件​​:file:/path/to/file.properties
  • 类路径文件​​:classpath:/config/default.yml
  • 配置服务器​​:configserver:http://configserver.example.com
  • ConfigTree(树形目录)​​:configtree:/etc/app/config/
  • Nacos 配置中心​​:optional:nacos:config-name.yaml

配置完成后,此时项目就能正常启动起来!

接下来我们浏览器访问nacos的客户端,在配置管理中新建一个配置

此时配置列表中就出现了刚刚配置的文件了。

三、测试调用配置文件

接下来,我们通过代码测试,观察是否能调用的到这个配置文件。

@RestController
@RequestMapping("/edu/test")
public class TestController {@Value("${customer.api.enable}")private Boolean enable;@Value("${customer.api.host}")private String host;@GetMapping("/config")public String config(){return "enable = " +  enable + ", host = " + host;}
}

 

我们发现是能正常调用的到的!

所以调用方式跟以前一样,以前怎么调用现在依旧可以怎么调用。 

四、配置文件是否实时更新

4.1 引入演示

演示

接下来在nacos中修改该配置文件

重新调用该接口,查看是否能够实时感知到配置文件的更新。

发现配置并没有生效,看样子只能项目重启才重新加载?

错!这并不意味着配置文件不能实时更新,通过一些简单的配置依旧可以实现配置文件的热更新

4.2 实现热更新

@Value(${xx}) + @RefreshScope

在需要进行热更新的类或者方法上,加上该注解即可!

@RefreshScope
@RestController
@RequestMapping("/edu/test")
public class TestController {@Value("${customer.api.enable}")private Boolean enable;@Value("${customer.api.host}")private String host;@GetMapping("/config")public String config(){return "enable = " +  enable + ", host = " + host;}
}

修改代码重新启动项目后,然后在配置中心多次修改配置,调用接口发现到是能及时更新的。这里就不一一演示了,感兴趣可以自行尝试。

@ConfigurationProperties 无感自动刷新

@Component
@ConfigurationProperties(prefix = "customer")
@Data
public class EduProperties {private Api api;private String username;@Datapublic static class Api {private Boolean enable;private String host;}
}

说明

为了方便快速生成getter、setter,我们在servie服务下引入lombok作为公共依赖。

<!-- lombok -->
<dependency><groupId>org.projectlombok</groupId><artifactId>lombok</artifactId>
</dependency>

然后接口中就可以去掉@RefreshScope注解了,直接引用这个配置类。

@RestController
@RequestMapping("/edu/test")
public class TestController {@Resourceprivate EduProperties eduProperties;@GetMapping("/config")public String config(){return "enable = " +  eduProperties.getApi().getEnable() +", host = " + eduProperties.getApi().getHost() +", username = " + eduProperties.getUsername();}
}

 

成功了,从配置中心修改配置内容也能及时更新过来!

这种方式,个人认为比@RefreshScope注解好,不用每次使用都要@Value再加上这个注解,只需在配置类中全部定义好,用的时候直接注入这个bean对象就行了。👍🏼

 

五、配置监听

如果配置文件一旦发生变化,想要立马通知下游处理事情或者发送短信邮件,应该怎么办?

当然,你也可能选择编写一个定时任务,每秒执行一次,每次都去拿配置,判断是否和当前值一致。

这种办法也不是不可以,但是不推荐,Nacos本身就为我们提供了配置监听功能!NacosConfigManager

    @BeanApplicationRunner applicationRunner(NacosConfigManager nacosConfigManager) {return new ApplicationRunner() {@Overridepublic void run(ApplicationArguments args) throws Exception {System.out.println("edu service start success");ConfigService configService = nacosConfigManager.getConfigService();configService.addListener("server-edu.properties", "DEFAULT_GROUP", new Listener() {@Overridepublic Executor getExecutor() {return Executors.newFixedThreadPool(4);}@Overridepublic void receiveConfigInfo(String configInfo) {System.out.println("配置文件发生变化: ");System.out.println(configInfo);System.out.println("正在处理中, 即将发送短信、邮件通知");}});}};}

这样项目一启动起来,只要配置文件发生变化,就会实时进行感知处理。

六、配置文件的加载顺序

提问:

Nacos中的数据集 和 application.properties 有相同的 配置项,哪个生效?

从业务设计的角度讲,引入nacos肯定是希望当我们通过配置中心修改配置时,能够替换掉之前的配置,所以肯定是Nacos生效。

而实际的亦是如此。具体的Springboot的配置文件生效规则大致如下:

  1. 优先级高的与优先级低会合并称为一个配置文件,在把这些配置加载到环境变量中。
  2. 外部优先
server:port: 8000
spring:application:name: service-eduprofiles:active: devcloud:nacos:server-addr: localhost:8848config:import: nacos:server-edu.properties,nacos:bootstrap.properties,nacos:common.yml

 

另外要说明的是:

不同的springBoot版本配置加载顺序可能还会存在不同,具体要以版本为准。

bootstrap的配置文件和application的配置文件同时存在时,bootstrap早于application配置文件加载。

properties和yaml文件同时存在时,properties要优先加载。

像这里导入nacos的配置文件,排在前面的先加载。

配置文件生效顺序和加载顺序是没有必然联系的。先加载的属性未必生效,后加载的属性也未必会覆盖先加载的属性值。

有些属性也不是修改了就一定会生效,比如端口号这些。

所以,配置文件不是乱写乱配,掌握清楚基本的规则,开发的时候按照规范进行配置才是可取的。

七、数据隔离⭐

7.1 需求描述

  • 项目有多套环境:dev,test,prod
  • 每个微服务,同一种配置,在每套环境的值都不一样。
    • 如:database.properties、common.properties
  • 项目可以通过切换环境,加载指定环境下的配置

7.2 难点

  • 区分多套环境
  • 区分多种微服务
  • 区分多种配置
  • 按需加载配置

7.3 案例说明

Nacos的配置中心,引入了Namespace、Group、DataID的概念,即名称空间、分组、数据集。

一个名称空间下,可以有多个分组,一个分组下又可以有多个数据集。

所以,根据提供的这种层级菜单,我们可以这样设计:

用不同的名称空间定义不同的环境,如dev、test、prod。

用不同的分组定义不同的微服务,如edu、order、user等。

用不同的数据集定义不同的配置文件,如common.properties、database.properties。

 namespace、dataId、group 配合 spring.config.activate.on-profile 实现配置环境隔离

7.4 操作演示

7.4.1 配置中心创建

创建名称空间

在不同名称空间下,创建各个服务的数据集

为了快速生成其它环境的,这里选择克隆到其他几个命名空间。当然你也可以通过导入导出的方式。

 当然了,为了演示出区别,这边建议不同环境再修改以下数据值。

7.4.2 修改本地application.yml文件

以edu服务为例,修改本地application.yml文件

server:port: 8000
spring:application:name: service-eduprofiles:active: devcloud:nacos:server-addr: localhost:8848config:namespace: ${spring.profiles.active:public}---
spring:config:import:- nacos:common.yaml?group=eduactivate:on-profile: dev---
spring:config:import:- nacos:common.yaml?group=eduactivate:on-profile: test---
spring:config:import:- nacos:common.yaml?group=eduactivate:on-profile: prod

7.4.3 切换不同运行环境测试

切换spring.pprofiles.active=dev,启动项目,调用之前写好的接口

 切换spring.pprofiles.active=test,重启项目,调用之前写好的接口

生产环境

至此,数据隔离就介绍完了,今后可以参照这种模式来构建不同的环境配置。

八、总结

1. 引入 spring-cloud-starter-alibaba-nacos-config 依赖,配置Nacos地址

2. 添加数据集(data-id),使用spring.config.import导入数据集

3. @Value + @RefreshSscop自动刷新

4. @ConfigurationProperties批量绑定自动刷新

5. NacosConfigManager监听配置变化

扩展:namespace区分环境、group区分微服务、data-id区分配置,实现 数据隔离 + 环境切换。

 

http://www.dtcms.com/a/531789.html

相关文章:

  • C#开发后端:API 控制器(Controller)
  • 建湖人才网招工湛江怎么做网站关键词优化
  • 深入理解 Flink SQL 状态:原理、应用与优化
  • Product Hunt 每日热榜 | 2025-10-26
  • Java的语法与Python进行对比学习
  • 【MCAL实战】CanTrcv模块配置实践
  • coco 可视化 txt版
  • idea字体的问题(idea应用本身的字体问题)
  • 计算机操作系统 — 链接
  • 网站图片加altwordpress前端库加速
  • 在linux上使用docker搭建ELK日志框架
  • Docker 应该如何学习 分四个阶段
  • 面试过程中的扣分项,你踩过几个?
  • 中牟高端网站建设专做户外装备测评视频网站
  • CSS属性(二)
  • 2011年下半年试题四:论软件需求获取技术及应用
  • Mujoco 仿真 PPO 强化学习机械臂末端路径规划到达指定位置(代码讲解)
  • 【C#】EventHandler的使用
  • C++ 实际应用系列(第六部分):并发系统的性能优化与工程实践(完)
  • 上市公司网站建设分析wordpress 转 app
  • Prometheus+Grafana 智能监控告警系统(服务器指标采集、mysql指标采集)
  • html5电影网站如何做企业网站流量怎么做
  • <数据集>yolo煤矿安全帽识别数据集<目标检测>
  • excel中加载数据分析工具的步骤
  • 一文厘清:文库 vs 知识库、核心功能清单、开源方案对比
  • 图片转excel vlm 提取手写清单信息 Qwen/Qwen3-VL-235B-A22B-Instruct
  • webrtc代码走读(七)-QOS-FEC-ulpfec rfc5109
  • 第十五章认识Ajax(六)
  • 逻辑回归解释
  • B038基于博途西门子1200PLC物料分拣控制系统仿真