2
respostas

Como se define quem são os arquivo de configuração do Spring.

Eu gostaria de entender bem a definição do papel de cada classe de configuração do Spring. O curso usa: - um arquivo chamado AppWebConfiguration, anotado com @EnableWebMvc e @ComponentScan - um arquivo chamado ServletSpringMVC, com extends AbstractAnnotationConfigDispatcherServletInitializer.

Pelo que entendi do papel de cada arquivo: - AppWebConfiguration: iria habilitar o uso do Spring no projeto e iria abrigar os métodos @Bean que fossem necessários para os serviços que eu desejar usar do Spring. - ServletSpringMVC: iria apontar os outros arquivos de configuração do sistema e indicar quando cada um deve ser inicializado.

Esse meu entendimento está correto? Como o Spring sabe onde procurar os @Bean dos serviços que desejo usar? É por causa da anotação @EnableWebMvc ou que? Eu poderia criar vários arquivos de configuração diferentes e colocar parte dos métodos @Bean em cada um e anotar todos esses arquivos com @EnableWebMvc?

A questão é que o curso sempre diz "Coloque tal método na classe AppWebConfiguration" e coisas do tipo, se referindo ao nome que inventaram para as classes no curso, mas não é dito o porquê de colocar determinado método em determinado lugar. Por exemplo: "deveríamos colocar tal método na classe anotada com tal coisa", ou "tal método na classe que dá extends naquilo", para que eu possa entender bem o porquê.

2 respostas

Esse meu entendimento está correto? Como o Spring sabe onde procurar os @Bean dos serviços que desejo usar? É por causa da anotação @EnableWebMvc ou que? Eu poderia criar vários arquivos de configuração diferentes e colocar parte dos métodos @Bean em cada um e anotar todos esses arquivos com @EnableWebMvc?

Você pode criar quantas classes quiser sim. Como a @ComponentScan já está em cima da AppWebConfiguration, você só precisa apontar para ela.As outras são descobertas automaticamente.

Então posso criar classes com @Bean com configurações do Spring divididas em quais/quantas em quiser, sendo o único requisito que cada classe dessa esteja lá no @ComponentScan? É isso?

Não preciso nem colocar um @Configuration nem nada a mais?