参考:https://blog.csdn.net/qq_33591903/article/details/104813512
接口:
public interface UserService {
void task();
}
实现类1:
//获取实现类通过Service注解的value来进行区分,因此使用时接口的每个实现类都需要进行唯一标记value
@Service("student")
public class StudentServiceImpl implements UserService {
@Override
public String task() {
return "学习";
}
}
实现类2:
@Service("teacher")
public class TeacherServiceImpl implements UserService {
@Override
public String task() {
return "教书";
}
}
实现动态调用的核心类:
@Service
public class UserContext {
@Autowired
private Map<String,UserService> users;
public UserService getUser(String userName){
return users.get(userName);
}
}
测试:
@RunWith(SpringRunner.class)
@SpringBootTest
class DingDingSdkTestApplicationTests {
@Autowired
UserContext context;
@Test
void contextLoads() {
System.out.println("测试1:"+ context.getUser("student").task());
System.out.println("测试2:"+ context.getUser("teacher").task());
}
}
结果: