无法从 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 的字段是不同的。
我有以下代码和问题。我是 运行 一个 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 的字段是不同的。