Estou construindo um módulo de biblioteca como um auxiliar para construir imagens nativas para aplicativos Spring, por exemplo, adicionando o processador de bean AOT e filtros. Também preciso definir algumas propriedades Spring durante o AOT que então ativariam algumas definições de bean para serem encontradas e registradas durante o AOT.
Sendo uma biblioteca, não tenho controle sobre o aplicativo que está sendo construído, então não posso usar arquivos de propriedades ou variáveis de ambiente para definir propriedades. Tentei usar, EnvironmentPostProcessor
mas parece que não é avaliado durante o processamento AOT:
class EnableKubernetesEnvironemntPostProcessor implements EnvironmentPostProcessor {
@Override
public void postProcessEnvironment(ConfigurableEnvironment environment, SpringApplication application) {
environment.getPropertySources().addFirst(new MapPropertySource("enableKubernetes", Map.of(
"spring.main.cloud.platform", "kubernetes",
"spring.profiles.active", "kubernetes",
"management.server.port", "9000"
)));
}
}
Como posso programaticamente definir uma propriedade Spring durante o processamento AOT? É possível disparar EnvironmentPostProcessor
durante AOT?
Em particular, preciso definir spring.main.cloud.platform=kubernetes
e, spring.profiles.active=kubernetes
assim, o AOT coleta beans condicionais a essas propriedades, para management.server.port
que o AOT saiba usar um contêiner diferente para o Atuador.