是否可以在Spring Boot中创建通用CRUD

时间:2018-07-26 09:51:30

标签: java spring spring-boot

我遇到的情况是必须为五个以上的实体创建CRUD。因此,我在考虑是否有可能创建通用CRUD,以便我可以使用更少的代码,而不是为每个实体创建单独的CRUD。 我想创建一个通用的CRUDUtility,可以从每个实体控制器方法中调用它,而从该实用程序中,我想调用通用的Service类和通用的Repository接口。

这就是我想要的。

我可以从每个实体控制器调用的实用程序:

@Component
public class CRUDUtility<T> {

    @Autowired
    private CRUDService<T> crudService;

}

要从CRUDUtility类调用的服务类。

@Service
public class CRUDService<T> {
    @Autowired
    private CRUDRepository<T> crudRepository;

    public T createEntity(T entityTypeParam) {

        return crudRepository.save(entityTypeParam);
    }

}

要从CRUDService调用的存储库:

@Repository
public interface CRUDRepository<T> extends JpaRepository<T, Number> {


}

谢谢。

1 个答案:

答案 0 :(得分:2)

是的,您可以创建一个通用CRUD

从Spring 4开始,您可以按通用类型进行自动布线。

public interface CRUDService<T> {
    List<T> listAll();

    T getById(Long id);

    T saveOrUpdate(T domainObject);

    void delete(Long id);
}

@Service
public FirstService implements CRUDService<First>{
.........................
}

@Service
public SecondService implements CRUDService<Second>{
.........................
}

@RestController
public MyController {
    @Autowired
    private CRUDService<First> firstService;

    @Autowired
    private CRUDService<Second> secondService;

}