我们有一个Java应用程序,该应用程序使用Spring(5.0.8)进行依赖项注入,但不受Spring Boot的管理。简单的@Value
注入是通过在我们的Java配置类中实现的
final PropertySourcesPlaceholderConfigurer propertySourcesPlaceholderConfigurer = new PropertySourcesPlaceholderConfigurer();
StandardEnvironment myEnv = new StandardEnvironment();
try {
MutablePropertySources propertySources = new MutablePropertySources();
propertySources.addFirst( new SystemEnvironmentPropertySource(StandardEnvironment.SYSTEM_PROPERTIES_PROPERTY_SOURCE_NAME,
myEnv.getSystemProperties()));
propertySourcesPlaceholderConfigurer.setPropertySources(propertySources);
}catch.....
ApplicationContext是由
启动的AnnotationConfigApplicationContext APPLICATION_CONTEXT =
new AnnotationConfigApplicationContext(MyConfig.class)
然后我可以开始将属性用作
@Component
public class MyService {
@Value( "${"myvalInSystemProperty"}")
private String myval;
........
}
现在我想像使用SpEL一样添加@Value
注入
@Component
public class MyService {
@Value("#{${usermap}}")
private Map<String, Map<String, String>> usermap;
........
}
相应的属性文件是
usermap = {
key1:{
subkey1:'subvalue1',
subkey2:'subvalue2'
},
key2:{
subkey3:'subvalue3',
subkey4:'subvalue4'
}
}
我已经将属性文件添加到了propertySources之类的
propertySources.addLast( new ResourcePropertySource( "classpath:myMap.properties"));
我遇到了
之类的错误Expression [#{{}] @0: No ending suffix '}' for expression starting at character 0: #{{}
无法识别我的@Value
注射
任何人都可以对此有所了解吗?
答案 0 :(得分:0)
我发现了问题。愚蠢。在行尾需要反斜杠