北京建设大学官方网站,广告设计公司宣传文案,东莞南城网站建设,wordpress开启xml-rpc概述
在项目部署时#xff0c;相关的生产环境和测试环境是分开的#xff0c;但是代码是同一套#xff1b; 所以一般会有多套变量#xff1b; 项目中默认变量#xff08;一般是测试环境#xff09; 线上变量#xff08;线上数据较敏感#xff0c;一般也不会放在代码中相关的生产环境和测试环境是分开的但是代码是同一套 所以一般会有多套变量 项目中默认变量一般是测试环境 线上变量线上数据较敏感一般也不会放在代码中 UAT变量
当前常用的springcloud中一般会把nacos配置放在pom.xml中利用maven-compiler-plugin插件在maven编译时替换变量达到切换nacos环境的作用其余的db配置等都在对应环境的nacos配置中.
线上的配置一般会放在代码中我是通过启动时注入的方式命令行具有最高优先级可以覆盖所有配置文件中的设置。
参数优先级总结
命令行参数具有最高优先级环境变量次之配置文件如 application.yml较低优先级默认值最低优先级
maven编译时替换变量
dependencies!-- 使bootstrap.yml配置文件可识别 --dependencygroupIdorg.springframework.cloud/groupIdartifactIdspring-cloud-starter-bootstrap/artifactId/dependency
/dependenciesprofilesprofileiddev/idproperties!-- 环境标识需要与配置文件的名称相对应 --profiles.activedev/profiles.activenacos.usernamexxx/nacos.usernamenacos.passwordxxx/nacos.passwordnacos.addressxxx.xxx.xxx.xxx:8848/nacos.addressnacos.namespacexxx-xxx-xxx-xxx-xxx/nacos.namespacesentinel.dashboard.addressxxx.xxx.xxx.xxx:8858/sentinel.dashboard.address/propertiesactivation!-- 默认环境 --activeByDefaulttrue/activeByDefault/activation/profileprofileidpro/idpropertiesprofiles.activepro/profiles.active/properties/profile
/profilesbuildpluginsplugingroupIdorg.apache.maven.plugins/groupIdartifactIdmaven-compiler-plugin/artifactIdversion3.10.1/versionconfigurationsource${java.version}/sourcetarget${java.version}/targetencodingUTF-8/encoding/configuration/plugin/pluginsresourcesresourcedirectorysrc/main/resources/directory!-- 关闭过滤 --filteringfalse/filtering/resourceresourcedirectorysrc/main/resources/directory!-- 引入所有 匹配文件进行过滤 --includesincludebootstrap*/include/includes!-- 启用过滤 即该资源中的变量将会被过滤器中的值替换 --filteringtrue/filtering/resource/resources
/buildmaven编译时替换的变量在bootstrap.yml中的使用;在maven编译时会替换掉变量中的参数通过切换生效的profile标签来达到切换环境的目的
# Spring
spring: profiles:# 环境配置active: profiles.activecloud:nacos:discovery:# 服务注册地址server-addr: ${nacos.address}namespace: ${nacos.namespace}group: xxxusername: ${nacos.username}password: ${nacos.password}JVM 参数、应用程序参数、命令行参数
在java -jar启动时可以注入参数
# JVM参数
JAVA_OPTS-Xms8192m -Xmx8192m -XX:MetaspaceSize256m -XX:MaxMetaspaceSize256m -XX:UseConcMarkSweepGC
# 应用程序参数
PARAMS--workerId2 --datacenterId2# PARAMS提前定义好的若干应用程序参数,会传递给main方法springboot做了封装可以注入相应的属性
java -jar $JAVA_OPTS xxx-xxx.jar $PARAMS后面的PARAMS参数主要依赖于org.springframework.boot.SpringApplication#run(java.lang.Class?, java.lang.String...)进行变量注入并且$PARAMS注入的值可以覆盖yml中的值
package com.example;import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;SpringBootApplication
public class MyApplication {public static void main(String[] args) {//这里的args就是注入的PARAMS变量SpringApplication.run(MyApplication.class, args);}
}