1. 什么是Namespace?
Namespace是配置项的集合,类似于一个配置文件的概念。
2. 什么是“application”的Namespace?
Apollo在创建项目的时候,都会默认创建一个“application”的Namespace,我们也可以自己添加不同格式的配置Namespace
3. Namespace的格式有哪些?
配置文件有多种格式,例如:properties、xml、yml、yaml、json等。同样Namespace也具有这些格式。在Portal UI中可以看到“application”的Namespace上有一个“properties”标签,表明“application”是properties格式的。
4、Namespace的获取权限分类,Namespace的获取权限分为两种:
- private (私有的)
- public (公共的)
这里的获取权限是相对于Apollo客户端来说的。
4.1 private权限
private权限的Namespace,只能被所属的应用获取到。一个应用尝试获取其它应用private的Namespace,Apollo会报“404”异常。
4.2 public权限
public权限的Namespace,能被任何应用获取。
5、项目中如何使用?
项目中会遇到很多配置,但是都是有集合概念的,比如Redis的配置,RabbitMQ的配置,数据库的配置,日志的配置,那么这些集合,就可以用Namespace来划分,如果Redis是公用的,那么这个配置就是公共配置,数据库配置是这个项目独有的,那么就是私有配置,就是这样
6、优先级
看以上的配置,我每个Namespace中,都有HOST这个配置项,而且appsettings.json文件也配置了HOST节点
那么谁的优先级高?
public static IHostBuilder CreateHostBuilder(string[] args) => Host.CreateDefaultBuilder(args) .ConfigureAppConfiguration((hostingContext, builder) => { LogManager.UseConsoleLogging(LogLevel.Trace); builder.AddApollo(builder.Build().GetSection("Apollo")) .AddDefault() .AddNamespace("TEST1.RabbitMQ") .AddNamespace("TEST1.redis") .AddNamespace("MPHIS",ConfigFileFormat.Json); }) .ConfigureWebHostDefaults(webBuilder => { webBuilder.UseStartup<Startup>(); });
以上代码中,注入的先后顺序,那么优先级如下:
appsettings.json < application < TEST1.RebbitMQ < TEST1.redis < MPHIS
所以最后获取到的配置是MPHIS里面的。
留下您的脚步
最近评论