无法从 String 转换为 HashMap Spring 启动应用程序

cannot convert from String to HashMap Spring Boot application

我有以下代码和问题。我是 运行 一个 Spring 启动应用程序来测试 application.properties 文件使用情况。

application.properties 文件,

server.port=8080
server.servlet.context-path=/HelloWorldBoot

myMap={key1:'value1',key2:'value2'}

控制器代码如下,

@RestController
public class MyController {

    @Autowired
    Environment env;

    @Value("#{${myMap}}")  
    private HashMap<String,String> myMapUsingValue;

    @GetMapping("/hello")
    public String hello() {
        System.out.println("myMapUsingValue : "+myMapUsingValue);

        HashMap<String, String> myMapUsingEnv = env.getProperty("myMap", HashMap.class);
        System.out.println("myMapUsingEnv : "+myMapUsingEnv);

        return "Hello World";
    }
}

现在当我点击 URL 时:http://localhost:8080/HelloWorldBoot/hello

成功打印使用@Value 的地图详细信息,

myMapUsingValue : {key1=value1, key2=value2} 

但是在使用环境 API、

访问同一个地图时出现如下错误
No converter found capable of converting from type [java.lang.String] to type [java.util.HashMap<?, ?>]]

我该如何解决这个问题?如何使用环境变量 API?

直接从应用程序属性文件中读取地图

感谢任何帮助。提前致谢。

环境变量总是字符串。 Spring 值注入器知道如何将它们转换为映射这一事实非常好,但是当使用 java 环境时 api 你将不得不自己解析该字符串并转换它变成一个地图。

像杰克逊这样的人可能会让这更容易。否则,您可能会编写一个实用程序方法来执行此操作。您可能会查看 spring 来源。

别想太多,看看你的 pojo class。 从数据库获取价值是不同的,从 pojo class 的字段是不同的。