//接口
public interface BaseService {
void say(String str);
}
//A实现类
@Service
public class AService implements BaseService{
@Override
public void say(String str) {
System.out.println("AService "+str);
}
}
//B实现类
@Service
public class BService implements BaseService {
@Override
public void say(String str) {
System.out.println("BService "+str);
}
}
//测试controller
@RestController
@RequestMapping("/demo/test")
public class TestController {
@Autowired
private Map<String,BaseService> map;
@Autowired
private List<BaseService> list;
@GetMapping("/")
public void test(){
System.out.println(map);
System.out.println(list);
}
}
先说注入的map,它是以注入进Spring容器的Bean名称作为key,类作为value,并且可以根据key获取需要的Bean实例, 而list,是实现了BaseService接口的且注入Spring容器的Bean的集合。
输出结果:
{AService=com.wojiushiwo.webdemo.mapAutoWired.AService@205b132e, BService=com.wojiushiwo.webdemo.mapAutoWired.BService@3cbcd8f3}
[ com.wojiushiwo.webdemo.mapAutoWired.AService@205b132e, com.wojiushiwo.webdemo.mapAutoWired.BService@3cbcd8f3]
如果对Bean手动设置了名称,那么map里的key就是设置的名称