一、当我们以下面这种方式注入时,会把 IDemoService 的所有实现类注入到map中
@Autowired
private final Map<String, IDemoService> map = new HashMap<>();
package com.ceair.mutms.coupon.service;
import org.springframework.stereotype.Service;
/**
* @Description:
* @Auther: SUNXIULONG
* @Date: 2021/9/3 14:59
*/
@Service("demoServiceImpl2")
public class DemoServiceImpl2 implements IDemoService {
@Override
public void demo() {
}
}
package com.ceair.mutms.coupon.service;
import org.springframework.stereotype.Service;
/**
* @Description:
* @Auther: SUNXIULONG
* @Date: 2021/9/3 14:58
*/
@Service("demoServiceImpl")
public class IDemoServiceImpl implements IDemoService {
@Override
public void demo() {
System.out.println("哈哈哈哈");
}
}
看下图,会以service名称为 key 值,实现类为value注入到map中;
通过 key 值去获取实现类, 然后调用就可以了;
二、如果存在多个实现类, 注入时,引用名称不能随便命名了,不然报错,只能按照service注解的名称来写
@Autowired IDemoService demoServiceImpl;