背景
Spring Boot 为了提高业务逻辑的可扩展性, 特意把 Service 层分为了 Service 接口层 与 ServiceImpl 实现层.
原因是在某些场景中, 业务接口不变, 业务逻辑可能会根据不同的用户环境发生改变.
用法
接口层
首先需要定义一个 Service 接口.
public interface TextService {
String doSomeLogic();
}
实现 A
在 @Service 中提供唯一标志 A.
@Service("A")
public class TextServiceAImpl implements TextService {
@Override
public String doSomeLogic() {
return "Text From A";
}
}
实现 B
在 @Service 中提供唯一标志 B, 提供第二个实现.
@Service("B")
public class TextServiceBImpl implements TextService {
@Override
public String doSomeLogic() {
return "Text From B";
}
}
调用
通过 @Qualifier 引入实现的版本.
@RestController
public class DemoController {
@Autowired
@Qualifier("A")
TextService textService;
@GetMapping("/text")
String getText() {
return textService.doSomeLogic(); // "Text From A"
}
}