文章目录
- 1. 变量类型
- 2. 获取变量
- 2.1 获取方式
- 2.2 获取方法
- 2.2.1 通过@Value注入获取变量值
- 2.2.2 System.genenv 获取变量值
- 2.2.3 System.getProperty 获取变量值
- 2.2.4 Environment 获取变量值
- 2.2.5 @ConfigurationProperties 获取变量值
- 2.2.6 SpringApplication.run 程序启动参数中获取变量值
1. 变量类型
- 操作系统环境变量
- JVM环境变量
- 配置文件变量
- 程序启动参数变量
2. 获取变量
2.1 获取方式
- @Value 注入获取变量值
- System.genenv 获取变量值
- System.getProperty 获取变量值
- Environment 获取变量值
- @ConfigurationProperties 获取变量
- args 程序参数变量
2.2 获取方法
2.2.1 通过@Value注入获取变量值
@Value注入变量用于从SpringBoot项目Environment对象中获取变量值,Environment 对象中的变量来源于配置文件,程序启动参数、JVM环境变量、操作系统环境变量。程序启动参数与配置文件中定义了相同的变量时,程序启动参数将会覆盖配置文件中变量的值。
@Value("${gateway.whitelist}") private String[] whiteList;
从配置文件中获取变量值,如在 application.properties、bootstrap.yml 等定义好环境变量后,程序中可通过 @Value 注入变量的方式获取变量值。例如在 application.properties 中定义变量:
gateway.whitelist=/abc,/def
如果在JVM环境变量、操作系统环境变量、配置文件,程序启动参数中定义了相同的变量名,变量值的优先级是:JVM环境变量 > 程序启动参数 > 操作系统环境变量 > 配置文件参数
2.2.2 System.genenv 获取变量值
System.getenv() 是 Java 内置方法,用于获取操作系统环境变量。
String password = System.getProperty("jasypt_encryptor_password");
获取操作系统环境变量,采用这种方式获取 jasypt_encryptor_password 变量的值,一定要将这个变量在操作系统环境变量中定义,如果这个变量在 application.properties、bootstrap.yml 中定义则将无法被获取。
在操作系统中定义环境变量时,变量名中不能有 . 号,例如 jasypt.encryptor.password 不能设置成操作系统的环境变量。可以使用 _ 来代替 . 号。
2.2.3 System.getProperty 获取变量值
System.getProperty() 是Java 内置方法,用于获取JVM环境变量。
String password = System.getProperty("jasypt.encryptor.password");
获取JVM环境中的变量值,需要在JVM环境中定义 jasypt.encryptor.password 。通过 java -jar 启动 spring boot 程序时,可通过使用 -Djasypt.encryptor.password=xxx 的方式设置JVM环境中的变量,示例如下:
java -jar -Djasypt.encryptor.password=xxx demo.jar
2.2.4 Environment 获取变量值
从SpringBoot项目Environment对象中获取变量值,Environment 对象中的变量来源于配置文件,程序启动参数、JVM环境变量、操作系统环境变量。程序启动参数与配置文件中定义了相同的变量时,程序启动参数将会覆盖配置文件中变量的值。
@Autowired private Environment environment; String password = environment.getProperty("jasypt.encryptor.password");
如果操作系统环境变量中定义了 jasypt_encryptor_password 变量,则变量值为操作系统环境变量中的值,如果操作系统环境变量中未定义这个变量,则从配置文件(application.properties、bootstrap.yml)中获取变量值。假设 bootstrap.yml 中定义了
jasypt: encryptor: password: 123456789
通过 environment.getProperty("jasypt.encryptor.password") 将会获取到变量的值为 123456789。
如果在JVM环境变量、操作系统环境变量、配置文件,程序启动参数中定义了相同的变量名,变量值的优先级是:JVM环境变量 > 程序启动参数 > 操作系统环境变量 > 配置文件参数
2.2.5 @ConfigurationProperties 获取变量值
@Configuration @ConfigurationProperties(prefix = "demo.kv") @Data public class AppSecurity { private Map
apps; } 从配置文件(application.properties、bootstrap.yml)中获取变量。在 bootstrap.yml 中定义变量:
demo: kv: apps: key111: 1230678913234 key112: 12306789fdfdf4
2.2.6 SpringApplication.run 程序启动参数中获取变量值
public static void main(String[] args) { SpringApplication.run(BootstrapApplication.class, args); for (String arg : args) { System.out.println(arg); } } // output: --demo.name=abc
程序启动参数变量是程序启动时传入的变量. java -jar 启动程序时使用 -- 传入程序启动参数变量。例如在程序启动时,传入 demo.name 的变量:
java -jar demo.jar --demo.name=abc
采用这种方式定义变量后,这些参数会被添加到 Environment 环境变量中,如果在配置文件中已经定义了 demo.name 变量,则通过 --demo.name 变量将会覆盖之前在配置文件中定义的变量值。例如:application.properties 中配置信息是:
demo.name=hello
程序启动时使用 java -jar demo.jar --demo.name=abc 启动程序,在程序中使用 Environment 对象获取 demo.name 变量时,获取到的值是:abc
猜你喜欢
- 11天前(大理悦云雅阁酒店电话)雅阁酒店集团|端午佳节礼遇,大理悦云雅阁度假酒店
- 11天前(2020海丝之路文化博览会)2023海丝之路文化和旅游博览会开幕
- 11天前(安徽民宿发展报告)首届安徽省乡村民宿创意设计大赛启动
- 11天前(哈弗h9优惠9万是真的吗)热浪来袭,哈弗H9超值补贴火热加码
- 11天前(七尚酒店百度百科)Lohkah七尚酒店首度开创充满新知的闽地研学旅程
- 11天前(福朋喜来登酒店宴会厅)福朋喜来登品牌亮相北部湾城市群 阳江中心福朋喜来登酒店开业
- 11天前(河南省文旅大会精神)2025河南省文化旅游发展大会新闻发布会在郑州召开
- 11天前(曼谷丽思卡尔顿公寓价格)在曼谷丽思卡尔顿酒店CALEŌ 邂逅鸡尾酒的浪漫艺术
- 11天前(新西兰旅游局×时差岛:黄觉的“长白云之乡”奇遇)新西兰旅游局×时差岛:黄觉的“长白云之乡”奇遇
- 11天前(海南航空现况怎样)用一场直播找到市场扩张新渠道,海南航空做对了什么?
网友评论
- 搜索
- 最新文章
- (2020广州车展哈弗)你的猛龙 独一无二 哈弗猛龙广州车展闪耀登场
- (哈弗新能源suv2019款)智能科技颠覆出行体验 哈弗重塑新能源越野SUV价值认知
- (2021款全新哈弗h5自动四驱报价)新哈弗H5再赴保障之旅,无惧冰雪护航哈弗全民电四驱挑战赛
- (海南航空现况怎样)用一场直播找到市场扩张新渠道,海南航空做对了什么?
- (visa jcb 日本)优惠面面俱到 JCB信用卡邀您畅玩日本冰雪季
- (第三届“堡里有年味·回村过大年”民俗花灯会活动)第三届“堡里有年味·回村过大年”民俗花灯会活动
- (展示非遗魅力 长安启源助力铜梁龙舞出征)展示非遗魅力 长安启源助力铜梁龙舞出征
- (阿斯塔纳航空公司)阿斯塔纳航空机队飞机数量增至50架
- (北京香港航班动态查询)香港快运航空北京大兴新航线今日首航
- (我在港航“呵护”飞机 每一次安全着陆就是最好的荣誉)我在港航“呵护”飞机 每一次安全着陆就是最好的荣誉
- 热门文章