Nesse post, veremos como criar bibliotecas Plug-And-Play usando a funcionalidade de Auto Configuração do Spring Boot, assim você pode criar suas próprias bibliotecas configuráveis e de forma não intrusiva nos seus projetos. .
Você pode acessar o código usado nesse post no link
Nosso projeto será um jar simples, contendo a configuração de um Aspect, que irá interceptar todos os métodos anotados com @Profile, esse aspect sera responsavel por contar o tempo de execução de cada método interceptado.Não entrarei no código do Aspect, por não fazer parte do escopo desse post.
A configuração inicial deve ser feita como um projeto padrão Spring Boot, veja a classe de configuração a seguir
Vamos explicar as anotações aqui usadas
- @Configuration - Sinalizamos que essa é uma classe de configuração do Spring
- @EnableAspectJAutoProxy - Abilitamos a funcionalidade de aspectos para os componentes do Spring
- @ComponentScan - Sinalizamos que pacotes serão escaneados para identificar as classes marcadas como Bean's do Spring
- @EnableConfigurationProperties - Sinalizamos as classes que serão preenchidas com as propriedades contidas nos arquivos .properties ou .yml
Até aqui, nada diferente do comum usado em uma aplicação Spring Boot, vejamos a classe ProfilerProperties, que será usada para customizar nossa biblioteca, essa classe basicamente é um POJO, mas que será preenchida pelo Spring
Com a anotação @ConfigurationProperties dizemos qual será o prefixo que o Spring tomará como base para preencher as propriedades da classe
Agora a parte importante, vamos adicionar um arquivo chamado spring.factories na pasta META-INF do projeto
No arquivo spring.factores iremos adicionar a configuração para que o Spring possa reconhecer esse Jar como um componente auto configurável
Podemos adicionar quantas classes de configuração forem necessárias, como valor da propriedade org.springframework.boot.autoconfigure.EnableAutoConfiguration.
Com isso, basta empacotar-mos nosso .jar e distribuir para as aplicações. Dessa forma temos uma biblioteca Plug-And-Play, basta adicionar o jar na aplicação, e o Spring se encarregará do resto