如何修复Java Spring bean Autowire无法处理(123)'{'

时间:2019-06-15 08:10:00

标签: spring autowired spring-framework-beans

我想插入Spring基础知识:使用Spring的@Value动态注入值。我该怎么办?

我尝试使用代码

@Value("#{{2: 'Catch22', 22: '1984', 32: 'Pride and Prejudice'}}")

但我有例外

private Map <Integer,String>studentTeacherMap;
@Value("#{{2: 'Catch22', 22: '1984', 32: 'Pride and Prejudice'}}")
public Map<Integer, String> loki()
return studentTeacherMap;

我希望输出是

2= Catch22, 22= 1984, 32= Pride and Prejudice 

但最终还是例外:

Cannot handle (123) '{'

1 个答案:

答案 0 :(得分:1)

如果您想将此地图注册为Bean,请考虑将其放入@Configuration带注释的类中:

@Configuration
public class AppConfiguration {
    @Value("#{{2: 'Catch22', 22: '1984', 32: 'Pride and Prejudice'}}")
    private Map<Integer, String> lokiMap;

    @Bean
    public Map<Integer, String> lokiMap() {
        return lokiMap;
    }
}

然后将此bean注入您要使用的类中:

@Autowired
private Map<Integer, String> lokiMap;

或者您可以直接使用该地图而无需将其声明为Bean,但是在这种情况下,您不需要@Autowired批注,只需将@Value放在地图下:

@Value("#{{2: 'Catch22', 22: '1984', 32: 'Pride and Prejudice'}}")
private Map<Integer, String> lokiMap;