1
resposta

(Spring Boot Data) Dúvidas sobre utilização de interface

Pessoal, Estou fazendo um projeto para estudar mais sobre Spring boot data, Para não ficar repetindo alguns CRUDS, eu resolvi criar uma classe genérica que, irá receber qualquer repository para fazer a persistencia, código abaixo :

 //INTERFACE IGenericService
    public interface IGenericService<E> {
        public E save(E entity);
    }

    //IMPLEMENTAÇÃO GenericService
    public class GenericService<E, T extends CrudRepository> implements IGenericService<E>, Serializable {
        //implementações
    }

E um exemple de um service seria a da classe User :

 //INTERFACE IUserService
    public interface IUserService extends IGenericService<User> {
    }

    //IMPLEMENTAÇÃO UserService
    @Service
    public class UserService extends GenericService<User, UserRepository> implements IUserService {
    }

Note que a minha Interface IUserService esta extendendo a interface genérica que eu criei(IGenericService) e a implementação da classe IUserService(UserService) extende a minha classe genérica(GenericService). O problema é que, a minha classe UserService está implementando duas vezes a interface IUserService, uma através da minha classe genérica(GenericService) e a outra através da própria interface dela(IUserService), minha dúvida é, isso é correto fazer ? Estou extendendo a interface IGenericService na minha IUserService pois para utilizar o meu serviço eu estou injetando a minha interface no meu controller. Se não ficou claro aqui vai um exemplo :

public class UserController {

        //INJEÇÃO DA MINHA INTERFACE IUserService PARA A UTILIZAÇÃO DOS CRUDS
        @Autowired
        private IUserService userService;
    }

espero que tenham etendido e possam me ajudar, desde já agradeço :D

1 resposta

Fala ai Bruno, tudo bem ?

Da forma que está fazendo, ao meu ver parece que você terá um pouco mais de trabalho para manter operacional o seu sistema.

Na minha opnião criar uma interface para cada DAO se torna um pouco melhor, já que assim você evitaria essa quantidade de herança, fora que por trás dos panos você teria menos trabalho do que está tendo agora.