关于?:符号的含义理解问题请指教

项目的logback.groovy配置文件有一行代码如下:
def env = System.properties['spring.profiles.active'] ?: 'production'
啥意思啊搞不懂。。

3个回答

System.properties['spring.profiles.active']如果不为空,那么返回 System.properties['spring.profiles.active']否则返回'production'

caozhy
贵阳马善福 C#也有类似的简化语法:System.properties['spring.profiles.active'] ?? "production"
大约一年之前 回复
caozhy
贵阳马善福 回复u010287873: groovy的语法。java/c++的话,是System.properties['spring.profiles.active'] != null ? System.properties['spring.profiles.active'] : "production"
大约一年之前 回复
u010287873
点滴记录,是前进的脚步 这是什么语言的语法?(如果不为空......)
大约一年之前 回复

你这是springboot支持多环境配置的问题,其实就是简单的三目运算符啦!
如果从application.properties属性文件中读取到的spring.profiles.active属性值为dev,即激活了为某个指定环境,比如开发环境,那么真正的起作用的配置就是spring.profiles.active=dev所对应的项目中的配置文件:application-dev.properties文件,否则就是application-production.properties这个文件了

?:
即三目运算符,例如(a<b)?a:b;

 String name;
String uzi = "uzi";
name = (name == null) ? "" : uzi;
条件表达式 ? (条件为真时赋值) : (条件为假时赋值)
name == null为true,则name = "";
name == null为false,则name = uzi;
Csdn user default icon
上传中...
上传图片
插入图片
抄袭、复制答案,以达到刷声望分或其他目的的行为,在CSDN问答是严格禁止的,一经发现立刻封号。是时候展现真正的技术了!