Spring Boot application.yml双反斜杠字面解释

时间:2018-01-11 11:24:09

标签: java spring spring-boot yaml

我正在使用Spring Boot 1.5.8

我的application.yml有以下属性:

my:
  path: \\\\hostname\\dir

根据我对YAML spec 5.7. Escaped Characters的理解,双反斜杠\\是单个反斜杠的有效转义序列,因此上述配置应该产生my.path: \\hostname\dir的值。

但是,在我的应用程序中,我可以看到该属性的值包含加倍的反斜杠:

@RunWith(SpringRunner.class)
@SpringBootTest
public class PropTest {

    @Getter
    @Setter
    public static class MyProp {
        private String path;
    }

    @Autowired
    private MyProp my;

    @Test
    public void testProp() {
        System.out.println(my.path);
    }

    @Configuration
    @EnableConfigurationProperties
    public static class Config {
        @Bean
        @ConfigurationProperties("my")
        public MyProp my() {
            return new MyProp();
        }
    }
}

打印:

\\\\host\\dir

我无法将application.yml中的值放在引号中,因为该文件是由配置系统(SaltStack)生成的,并且它有自己的Yaml渲染库。

它是Spring Boot / Spring Boot使用的Yaml库中的错误吗?有没有办法强制Spring Boot在Yaml中处理双反斜杠作为单个反斜杠的转义?

1 个答案:

答案 0 :(得分:2)

引用您链接的规范部分:

  

请注意,转义序列仅在双引号标量中解释。在所有其他标量样式中,“\”字符没有特殊含义,并且不可打印的字符不可用。

因此,如果你没有引用标量,#list from column 15 L3 = df['15'].tolist() print (L3) [0.4, 1.3, 2.5, 3.7, 5.2, 6.9, 9.0, 11.5, 14.7, 19.5, 28.9, 125.8, 1669.0, 3142.0, 4560.0, 5950.0, 7320.0, 8670.0, 0.0, 0.0, 0.0] 是一个像其他人一样的普通字符,你可以写

\