@Value注释用于从属性文件中读取Map

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了@Value注释用于从属性文件中读取Map相关的知识,希望对你有一定的参考价值。

我的Java有这个

@Value("#{${validators}}")
private Map<String,String> validators;

属性文件有这个

validators={AlphabetValidator:'AlphabetValidator',NumberValidator:'NumberValidator'AlphaNumericValidator:'AlphaNumericValidator',DateValidator:'DateValidator', FixedLengthValidator:'FixedLengthValidator',MinimumLengthValidator:'MinimumLengthValidator',MaximumLengthValidator:'MaximumLengthValidator',CustomValidator:'CustomValidator' MandatoryFieldValidator: 'MandatoryFieldValidator',TimeValidator:'TimeValidator'}

当我运行应用程序..我收到此错误

线程“main”中的异常org.springframework.beans.factory.UnsatisfiedDependencyException:创建名为'validatorProperties'的bean时出错:通过字段'validators'表示的不满意的依赖关系;嵌套异常是org.springframework.beans.factory.BeanExpressionException:表达式解析失败;嵌套异常是org.springframework.expression.spel.SpelParseException:EL1041E:(pos 1):解析有效表达式后,表达式中还有更多数据:'lcurly({)'

答案

您错过了在属性中指定一些逗号。试试以下内容:

validators={AlphabetValidator:'AlphabetValidator',NumberValidator:'NumberValidator',AlphaNumericValidator:'AlphaNumericValidator',DateValidator:'DateValidator',FixedLengthValidator:'FixedLengthValidator',MinimumLengthValidator:'MinimumLengthValidator',MaximumLengthValidator:'MaximumLengthValidator',CustomValidator:'CustomValidator',MandatoryFieldValidator:'MandatoryFieldValidator',TimeValidator:'TimeValidator'}
另一答案

在属性文件中查看逗号','。

属性文件:

validators={AlphabetValidator:'AlphabetValidator',NumberValidator:'NumberValidator',AlphaNumericValidator:'AlphaNumericValidator',DateValidator:'DateValidator',FixedLengthValidator:'FixedLengthValidator',MinimumLengthValidator:'MinimumLengthValidator',MaximumLengthValidator:'MaximumLengthValidator',CustomValidator:'CustomValidator',MandatoryFieldValidator:'MandatoryFieldValidator',TimeValidator:'TimeValidator'}

Java代码:

@Value("#{${validators}}")
private Map<String,String> validators;

以上是关于@Value注释用于从属性文件中读取Map的主要内容,如果未能解决你的问题,请参考以下文章

从属性文件中读取列表并使用弹簧注释@Value 加载

从属性文件中读取List并使用spring注释加载@Value

是否可以使用 Spring 和 @Value 注释将 YAML 属性读入 Map

如何使用@Value Spring Annotation 注入 Map?

是否可以使用 Spring Boot 注释 @Value 从 application.properties 文件中获取 Map 值 [重复]

Spring读取外部的资源配置文件—@PropertySource和@Value实现资源文件配置