Spring can't autowire Map bean

前端 未结 3 1738
无人及你
无人及你 2020-11-29 02:03

I\'ve defined a map in spring as such:



        
3条回答
  •  旧巷少年郎
    2020-11-29 02:57

    Starting with Spring 4.3, @Autowired can inject lists and maps and the given code in the question would work:

    That said, as of 4.3, collection/map and array types can be matched through Spring’s @Autowired type matching algorithm as well, as long as the element type information is preserved in @Bean return type signatures or collection inheritance hierarchies.

    But with a lower Spring version, you can't autowire a collection like that. However, you can do the following:

    @Resource(name="AdditionalParams")
    private Map additionalParams;
    

    or even:

    @Value("#{AdditionalParams}")
    private Map additionalParams;
    

    Check the spring docs, the tips section:

    beans that are themselves defined as a collection or map type cannot be injected through @Autowired, because type matching is not properly applicable to them. Use @Resource for such beans

提交回复
热议问题