日常开发中,或取同类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}