DAO 層針對不同資料庫有不同實現,定義介面易理解。但 Service 層業務邏輯通常唯一,為何也要介面?
UserService,而非具體 UserServiceImpl。便於替換實現(如切換緩存策略、引入 AOP 代理)。UserServiceV1、UserServiceV2 並行灰度發布,介面使切換無感。mock(UserService.class)),不需啟動完整 Spring 上下文。UserDaoMySQL、UserDaoOracle、UserDaoRedis 實現同一 UserDao。UserService,實現類 UserServiceImpl。@Autowired UserService userService;