我有以下代码和问题。我正在运行一个Spring boot应用程序来测试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";
}
}现在,当我点击网址:http://localhost:8080/HelloWorldBoot/hello
使用@Value的地图详细信息打印成功,
myMapUsingValue : {key1=value1, key2=value2} 但我在使用Environment API访问同一地图时遇到如下错误,
No converter found capable of converting from type [java.lang.String] to type [java.util.HashMap<?, ?>]]我该如何解决这个问题?如何使用环境变量API直接从应用程序属性文件读取Map?
在这一点上任何帮助都是非常感谢的。提前谢谢。
发布于 2018-08-24 22:18:14
环境变量始终是字符串。Spring值注入器知道如何将它们转换为映射,这一点非常好,但在使用java环境api时,您必须自己解析该字符串并将其转换为Map。
像杰克逊这样的人可能会让这件事变得更容易。否则,您可能会编写一个执行此操作的实用程序方法。您可以查看spring源代码。
发布于 2019-06-25 14:48:39
不要想太多,只要检查你的pojo类就可以了。从数据库获取值不同,pojo类中的字段不同。
https://stackoverflow.com/questions/52005993
复制相似问题