Eu achei muito interessante a parte conceitual da arquitetura limpa. Agora uma coisa que achei ruim no conceito é a de desacoplamento de framework. Por que ao longo do tempo o java evoluiu para melhorar o desenvolvimento e aumentar a produtividade. Fugir dos famigerados XML de configuração e o surgimento das anotações foi um avanço muito bom.
Seguindo o conceito da arquitetura limpa por exemplo, numa aplicação spring-boot, eu não iria usar o javax.validations, nem tao pouco as anotações do jpa, teria que voltar aos arquivos xml, a criação dos objetos por fabricas quando o framework ja seta pra nos automaticamente, uso do lombok para evitar codigo excessivo.
Eu vi outra abordagem que as classes sao interfaces, com o metodo get(), com fabricas para criar os objetos onde existe a implementacao da fabrica e a interface da mesma. Se nesse exemplo ficou com muita classe, nesse outro ficaria com mais classe ainda.
Como foi citado no curso devemos adaptar e escolher a melhor forma que nos atende. Mas o ponto é que na essencia, acaba sendo uma coisa puramente academica e nao comercial.
Mas dentro da minha realidade vou adotar esse conceito. Eu ja utilizo dessa forma na divisao de pacotes. Mas foi comecar a quebrar em modulos, pois tenho uma aplicacao spring-boot mvc com thymeleaf, que vou precisar criar um modulo rest api + jwt ou oauth2. entao o dominio que é onde estao as entidades, repositorios e o service, precisaram virar modulo.