Galera to fazendo um sistema utilizando o vraptor 3. Iniciei com uma abordagem e agora estou pensando em mudar, pois não estou gostando do rumo que a atual está seguindo. Normalmente quando desenvolvo sistemas web eu penso basicamente nas seguintes camadas:
Controller --> Service --> DAO
Imagino esse controller como sendo uma espécie de façade, onde simplesmente recebo os dados que vieram da interface, monto os objetos e passo para o Service validar e chamar os DAOs necessários para persistir os dados. Na aplicação que eu criei inicialmente achei que não iria precisar do Service, então criei apenas o DAO, e o anotei como @Component do vraptor, daí injetava os DAOs que eu precisasse no meu controller.
Uma coisa que está me incomodando é que toda a validação está sendo feita no próprio controller (está certo isso?), outra coisa é que o construtor do meu controller está ficando cheio de DAOs
eu imagino que uma camada de serviço me permitiria injetar apenas 1 Serviço e este se encarregaria de ter os DAOs/repository que fossem necessários.
Minha dúvida nesse caso é: Eu posso anotar essa classe de serviço também com o @Component? Ou seja, eu injetaria os DAOs nela e injetaria ela no meu controller. Gostaria de saber como vocês normalmente constroem a arquitetura de aplicações com vraptor 3, especialmente para aplicações médio e grande porte, que é o meu caso. Agradeço desde já a contribuição de todos.