Spring map 注入同类型bean

日常开发中,或取同类bean,我们一般通过SpringApplicationContext的方式获取同类型bean,但这样每次都要折腾一大堆代码,其实spring已经完成了这一操作。

1.定义顶层接口

public interface Handler {
    void test();
}

2.实现顶层接口

@Service("Huawei")
public class Huawei implements Handler {
    @Override
    public void test() {

    }
}
@Service("Tencent")
public class Tencent implements Handler {
    @Override
    public void test() {

    }
}

3.注入,通过handlerMap接收

@Service
public class Business {
    @Autowired
    private Map<String, Handler> handlerMap;

    public void print(){
        System.out.println(handlerMap);
    }
}

4.测试

@SpringBootTest
class DemoApplicationTests {

    @Autowired
    private Business business;

    @Test
    void contextLoads() {
        business.print();
    }

}

5.输出结果

{Huawei=com.example.demo.service.impl.Huawei@39c385d6, 
Tencent=com.example.demo.service.impl.Tencent@1cec219f}