如何使用spring-boot仅注入Map <object,list <object =“” >>?

时间:2018-11-29 14:11:11

标签: java spring spring-boot autowired

我有以下课程:

@Configuration
public class ActionsConfig {

  private Map<ObjectType, List<Action>> map = new HashMap<>();

  @Bean
  public Action1 action1() {

    return new Action1();
  }


  @Bean
  public Action2 action2(){

    return new Action2();
  }

  @Bean
  public Action3 action3(){

    return new Action3();
  }

  private void fillMap(){
     //here I am filling my map
  }

  public Map<ObjectType, List<Action>> getMap(){
    return this.map;
  }
}

Action1Action2Action3实现公共的Action接口。 然后,在我的服务中,我自动为ActionsConfig类布线并获得了地图。

@Service
public class BasketService {
     @Autowired
     private ActionsConfig actionsConfig;
     ...
     public void doSomething(){
        ...
        actionsConfig.getMap()...
        ...
     }
}

有没有一种方法可以自动装配地图,从而直接使用地图中的值?

1 个答案:

答案 0 :(得分:1)

您可以创建一个使用@Bean注释的方法。

  @Bean
  public Map<ObjectType, List<Action>> getMap() {

    Map<ObjectType, List<Action>> map = new HashMap<>();
    fillMap()

    return map;
  }

然后您可以使用@Autowired来自动装配地图。

@Autowired
private Map<ObjectType, List<Action>> myMap;