失眠网,内容丰富有趣,生活中的好帮手!
失眠网 > 如何使用Java Spring Boot实现业务逻辑层和存储库层?

如何使用Java Spring Boot实现业务逻辑层和存储库层?

时间:2023-12-27 10:33:17

相关推荐

如何使用Java Spring Boot实现业务逻辑层和存储库层?

我正在尝试为我的应用程序创建业务逻辑(服务)和存储库(数据访问)层.我想正确地做,但是我不是专家.

目前,对于存储库层,我创建了一个接口IMainDao,它扩展了JpaRepository:

import org.springframework.data.jpa.repository.JpaRepository;import org.springframework.stereotype.Repository;@Repositorypublic interface IMainDao extends JpaRepository<Object, Integer>{}

因此,我所有的存储库接口都可以扩展IMainDao:

import org.springframework.stereotype.Repository;@Repositorypublic interface IUserDao extends IMainDao{}

我还创建了业务逻辑层.接口IMainService:

import java.util.List;import org.springframework.stereotype.Service;@Servicepublic interface IMainService { Object getById(int id); List<Object> getAll(); Object create(Object o); Object update(Object o); void delete(int id);}

该接口实现MainService

@Servicepublic class MainService implements IMainService{ @Autowired private IMainDao mainDao; @Override public Object getById(int id) { return mainDao.findById(id); } @Override public List<Object> getAll() { return mainDao.findAll(); } @Override public Object create(Object o) { Object obj = mainDao.save(o); return obj; }//Other methods...

以及其他类似IUserService的接口,这些接口扩展了IMainService:

import org.springframework.stereotype.Service;@Servicepublic interface IUserService extends IMainService{}

使用它们的实现:

public abstract class UserService implements IUserService{}

我做得对吗?如果没有,您对我有什么建议,我可以在哪里进行优化?

谢谢!

解决方法:

您的IMainDao似乎不必要.您可以根据需要为实体定义接口,例如:用户,订单

@Repositoryinterface UserRepository extends JpaRepository<User, Long> {}@Repositoryinterface OrderRepository extends JpaRepository<Order, Long> {}

并且,在业务逻辑层中,您可以具有服务接口及其实现,例如:

@Serviceinterface UserService{ ... method declarations goes here} class UserServiceImpl implements UserService { @Autowired UserRepository userRepository; ... implement interface methods }

如果在多个服务类中具有通用方法,则可以具有通用服务接口,否则IMainService没有任何意义.

==== [编辑]通用服务接口简介====

假设UserService和OrderService都具有通用的搜索方法.然后,我们可以有一个通用的服务接口(SearchService)并将其实现在所需的服务实现类中.

interface SearchService<T, I> { T findLatestOne(){} T lastEditedOne(){} List<T> searchByKeywords{} }class UserService implements SerchService<User, Long> { User findLatestOne(){ ... implementation } User lastEditedOne(){ ... implementation } List<User> searchByKeywords{ ... implementation }}class OrderService implements SerchService<Order, Long> { Order findLatestOne(){ ... implementation } Order lastEditedOne(){ ... implementation } List<Order> searchByKeywords{ ... implementation }}来源:/content-1-519201.html

如果觉得《如何使用Java Spring Boot实现业务逻辑层和存储库层?》对你有帮助,请点赞、收藏,并留下你的观点哦!

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。