动态指定 Spring Boot 服务的名字
🏷️ Spring Boot
同一个服务需要使用多个不同的服务名发布时,可以通过环境变量的方式指定服务的名字(环境变量可以通过启动命令指定,也可以通过配置 docker 镜像的环境变量指定)。
另外,服务配置是在 Nacos 中配置的,同样的需要通过环境变量指定配置文件的名字。
示例文件 bootstrap.yml 如下:
yaml
spring:
application:
name: ${application.name:App-A}
cloud:
nacos:
config:
namespace: ${nacos.namespace:}
server-addr: ${nacos.url}:8001
group: DEFAULT_GROUP
prefix: ${nacos.config.prefix:app-config-a}
file-extension: yaml
refreshable-dataids:
discovery:
namespace: ${nacos.namespace:}
server-addr: ${nacos.url}:8001
可以看到上面的配置文件中通过 ${application.name:App-A}
的方式来设置 spring.application.name 属性的值。
:
前面的 application.name 是环境变量名,:
后面的 App-A 是默认值。
在 IDEA 中可以通过在配置界面的 Environment variables 中指定环境变量,格式如下:
shell
application.name=App-B;nacos.config.prefix=app-config-b
在 k8s 中,可以在 docker 容器配置文件的 env 项中设置环境变量,格式如下:
yaml
containers:
- env:
- name: application.name
value: App-B
- name: nacos.config.prefix
value: app-config-b