spring map获取同类型的bean
今天看博客怎么减少if else 方法, 才发现spring 还有很多功能我没有用到,以后真的得花时间学学spring,今天学到的东西如下:
1.定义一个接口 store
public interface Store { void handle(); }
2.定义两个类
@Service("storeA")
public class StoreA implements Store {
@Override
public void handle() {
}
@Override
public String toString() {
return "StoreA []";
}
}
@Service("storeB")
public class StoreB implements Store {
@Override
public void handle() {
}
@Override
public String toString() {
return "StoreB []";
}
}
3.在factory类中的map类型直接注入即可
@Service public class StoreFactory { @Autowired @Qualifier("storeA") private StoreA storeA; @Autowired @Qualifier("storeB") private StoreB storeB; @Autowired private Map<String, Store> map = new HashMap<>();//直接对map注入 public void getStore() { System.out.println(storeA); System.out.println(storeB); System.out.println(map); } }
4.测试
@Test public void testStoreFactory() { storeFactory.getStore(); }
结果 为 :
StoreA []
StoreB []
{storeA=StoreA [], storeB=StoreB []}
5.总结
spring直接可以把同类型的类注入到map中,就可以不用定义工厂类根据需要来进行返回,直接通过map的get方法可以获取需要的类,可以说完美契合策略模式.

浙公网安备 33010602011771号