首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >无法将字符串转换为HashMap Spring Boot应用程序

无法将字符串转换为HashMap Spring Boot应用程序
EN

Stack Overflow用户
提问于 2018-08-24 21:54:01
回答 2查看 1.1K关注 0票数 1

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

application.properties文件,

代码语言:javascript
复制
server.port=8080
server.servlet.context-path=/HelloWorldBoot

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

下面的控制器代码,

代码语言:javascript
复制
@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";
    }
}

现在,当我点击网址:http://localhost:8080/HelloWorldBoot/hello

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

代码语言:javascript
复制
myMapUsingValue : {key1=value1, key2=value2} 

但我在使用Environment API访问同一地图时遇到如下错误,

代码语言:javascript
复制
No converter found capable of converting from type [java.lang.String] to type [java.util.HashMap<?, ?>]]

我该如何解决这个问题?如何使用环境变量API直接从应用程序属性文件读取Map?

在这一点上任何帮助都是非常感谢的。提前谢谢。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2018-08-24 22:18:14

环境变量始终是字符串。Spring值注入器知道如何将它们转换为映射,这一点非常好,但在使用java环境api时,您必须自己解析该字符串并将其转换为Map。

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

票数 2
EN

Stack Overflow用户

发布于 2019-06-25 14:48:39

不要想太多,只要检查你的pojo类就可以了。从数据库获取值不同,pojo类中的字段不同。

票数 -1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/52005993

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档