【发布时间】:2019-01-08 12:07:41
【问题描述】:
我有许多具有重复代码的服务,我想知道如何实现一个通用服务,以便我的所有服务都可以扩展它。
服务接口示例(重复代码):
@Service
public interface IUserService{
List<User> findAll();
User save(User entity);
User findById(long id);
void delete(User entity);
void deleteById(long id);
long count();
}
@Service
public interface IEventService{
List<Event> findAll();
Event save(Event entity);
Event findById(long id);
void delete(Event entity);
void deleteById(long id);
long count();
}
以及它们的实现(现在,我在所有实现中都有相同的代码):
@Service
public class EventService implements IEventService{
@Autowired
private IEventDao dao;
@Override
public List<Event> findAll() {
return dao.findAll();
}
@Override
public Event save(Event entity) {
return dao.save(entity);
}
Other CRUD methods...
}
@Service
public class UserService implements IUserService{
@Autowired
private IUserDao dao;
@Override
public List<User> findAll() {
return dao.findAll();
}
@Override
public User save(User entity) {
return dao.save(entity);
}
Other CRUD methods...
}
【问题讨论】:
-
@ChrisTurner,这意味着 DAO 也需要是通用的。更新了示例。
-
服务是否只是暴露了底层的dao,方法对方法,没有其他业务逻辑等?如果是这样,那何必呢?
-
@RobertMoskal,我敢肯定真正的实现要复杂得多:)
-
是的,真正的实现更复杂。这只是一个例子。
-
@metacubed 如何实现通用 DAO?
标签: java spring spring-boot spring-data-jpa spring-data