Lui*_*man 3 java spring spring-data spring-data-jpa spring-boot
我有许多具有重复代码的服务,并且我想知道如何实现通用服务,以便我所有的服务都可以对其进行扩展。
服务接口示例(重复的代码):
@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();
}
Run Code Online (Sandbox Code Playgroud)
@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();
}
Run Code Online (Sandbox Code Playgroud)
及其实现(现在,我在所有实现中都有相同的代码):
@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...
}
Run Code Online (Sandbox Code Playgroud)
@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...
}
Run Code Online (Sandbox Code Playgroud)
使用Java泛型非常简单。您可以替换的实际类User,Event与一类参数等。
public interface IGenericService<T> {
List<T> findAll();
T save(T entity);
T findById(long id);
void delete(T entity);
void deleteById(long id);
long count();
}
Run Code Online (Sandbox Code Playgroud)
然后对实现执行相同操作:
public class GenericService<T> implements IGenericService<T> {
// The DAO class will also need to be generic,
// so that it can use the right class types
@Autowired
private IDao<T> dao;
@Override
public List<T> findAll() {
return dao.findAll();
}
@Override
public T save(T entity) {
return dao.save(entity);
}
// Other CRUD methods...
}
Run Code Online (Sandbox Code Playgroud)
更进一步,您还可以按照以下方式创建实际服务:
@Service
class UserService extends GenericService<User> { }
@Service
class EventService extends GenericService<Event> { }
Run Code Online (Sandbox Code Playgroud)
这是Java文档中的一个很好的教程:学习Java语言:泛型
另一个具有良好示例的示例:Java泛型基础知识
| 归档时间: |
|
| 查看次数: |
5012 次 |
| 最近记录: |