Solucionado (ver solução)
Solucionado
(ver solução)
9
respostas

Deixar com que o Spring identifique sozinho as annotations de @Controller

Olá, senti falta da data em que o video foi gravado, pois hoje podemos fazer da seguinte forma (gostaria que fizessem apontamentos sobre o que acham):

@EnableWebMvc
@SpringBootApplication
public class CDCApp{

    public static void main(String[] args) {
        SpringApplication.run(CDCApp.class, args);
    }
}

Dessa forma, o spring se encarrega de buscar todas as classes que tiverem a annotation @Controller, como por exemplo a classe:

@Controller
public class TesteController {

    @RequestMapping("/teste")
    public void index(){
        System.out.println("entrei aqui!!!");
    }

}

O que acham? Existe um motivo de não fazer dessa forma?

9 respostas

Boa noite Brenno, você está certo, atualmente as configurações do Spring podem ser feita através do SpringBoot. Agora só para explicar:

O Spring é um ecossistema composto de vários módulos, onde o boot é um deles usado para auxiliar na configuração inicial do seu projeto! Porém ainda existem projetos por ai(os legados) que utilizam tanto a configuração programática tanto declarativa(via mxl) sem a utilização do springboot.

Na minha opinião é bom usar o SpringBoot mesmo porém é legal saber o que ele faz por de trás sabe, pra entendermos tudo o que está sendo configurado!

Obrigado pela contribuição e bons estudos!

Olá guilherme! Obrigado pelo seu apontamento e estava pensando por esse lado mesmo!

Uma dúvida que eu tenho: dessa forma que eu fiz, somente reconheceu os controllers que estavam no mesmo pacote. Existe alguma outra forma que ele reconheça controllers de outro pacote sem que eu precise passar o pacote por meio do @ComponentScan?

Obrigado.

Nesse caso seria pelo @ComponentScan mesmo, mas é uma boa prática criar um pacote de controller e escanea-lo

Fiquei confuso... A forma que eu fiz:

@ComponentScan({"com.teste.controllers.*"})

É a melhor forma?

Mas voce tem outros diretórios depois de controller? Porque geralmente temos com.teste.controllers.ProdutoController com.teste.controllers.PessoaController

Dai nesse caso só precisa scanear o pacote:

@ComponentScan({"com.teste.controllers"})

Outros diretórios não, somente classes, como você usou no exemplo: com.teste.controllers.ProdutoController com.teste.controllers.PessoaController

Pensei que atualmente existiria alguma forma mais prática e que ele buscasse meus controllers...

solução!

Ah sim, seria dessa forma mesmo, coloca todos teus controlles no pacote controllers e escaneia só esse pacote!

Mas se conseguiu entender direitinho ?

Sim, foi o que eu fiz... Já estruturo meu projeto da seguinte forma:

  • main e configuraçoes

  • controllers

  • repositories

  • util e etc.

Bacana Brenno! precisando é só postar no forum!

Abraços e bons estudos