我设置了环境变量
MY_APP_MY_MAP_A1=a
MY_APP_MY_MAP_A2=b
MY_APP_JUSTMAP_A1=a
MY_APP_JUSTMAP_A2=b
Run Code Online (Sandbox Code Playgroud)
通过以下方式配置我的 Spring Boot (2.1.7.RELEASE) 应用程序@ConfigurationProperties:
@SpringBootApplication
@EnableConfigurationProperties(MyApp.MyProperties.class)
public class MyApp {
public static void main(String[] args) {
SpringApplication.run(MyApp.class, args);
}
@Bean
public CommandLineRunner cmd(MyProperties props) {
return args -> {
System.out.println("myMap: " + props.getMyMap());
System.out.println("justmap: " + props.getJustmap());
};
}
@ConfigurationProperties(prefix = "my.app")
@Getter
@Setter
static class MyProperties {
private Map<String, String> myMap;
private Map<String, String> justmap;
}
}
Run Code Online (Sandbox Code Playgroud)
当变量名包含大写字母(驼峰式)时,设置 aMap<String,String>不起作用,否则一切正常:
myMap: null
justmap: {a1=a, a2=b}
Run Code Online (Sandbox Code Playgroud)
有办法怎么做吗?
如果您有以下环境。传递的变量
MY_APP_MYMAP_A1=a
MY_APP_MYMAP_A2=b
MY_APP_JUSTMAP_A1=a
MY_APP_JUSTMAP_A2=b
Run Code Online (Sandbox Code Playgroud)
下面的代码打印您所期望的内容
@SpringBootApplication
@EnableConfigurationProperties(TestSpringBootApplication.MyProperties.class)
public class TestSpringBootApplication {
public static void main(String[] args) {
SpringApplication.run(TestSpringBootApplication.class, args);
}
@Bean
public CommandLineRunner cmd(MyProperties props) {
return args -> {
System.out.println("myMap: " + props.getMyMap());
System.out.println("justmap: " + props.getJustmap());
};
}
@ConfigurationProperties(prefix = "my.app")
static class MyProperties {
private Map<String, String> myMap;
private Map<String, String> justmap;
public Map<String, String> getMyMap() {
return myMap;
}
public void setMyMap(Map<String, String> myMap) {
this.myMap = myMap;
}
public Map<String, String> getJustmap() {
return justmap;
}
public void setJustmap(Map<String, String> justmap) {
this.justmap = justmap;
}
}
}
Run Code Online (Sandbox Code Playgroud)
输出如下
2019-09-04 16:00:07.336 INFO 21204 --- [ main] c.e.demo.TestSpringBootApplication : Started TestSpringBootApplication in 1.012 seconds (JVM running for 2.219)
myMap: {a1=a, a2=b}
justmap: {a1=a, a2=b}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
1938 次 |
| 最近记录: |