Você já tentou o ApplicationReadyEvent?
@Component
public class ApplicationStartup
implements ApplicationListener<ApplicationReadyEvent> {
/**
* This event is executed as late as conceivably possible to indicate that
* the application is ready to service requests.
*/
@Override
public void onApplicationEvent(final ApplicationReadyEvent event) {
// here your code ...
return;
}
}
Código de: http://blog.netgloo.com/2014/11/13/run-code-at-spring-boot-startup/
Isto é o que a documentação menciona sobre os eventos de inicialização:
...
Os eventos do aplicativo são enviados na seguinte ordem, conforme seu aplicativo é executado:
Um ApplicationStartedEvent é enviado no início de uma execução, mas antes de qualquer processamento, exceto o registro de ouvintes e inicializadores.
Um ApplicationEnvironmentPreparedEvent é enviado quando o ambiente a ser usado no contexto é conhecido, mas antes que o contexto seja criado.
Um ApplicationPreparedEvent é enviado imediatamente antes do início da atualização, mas após o carregamento das definições do bean.
Um ApplicationReadyEvent é enviado após a atualização e todos os retornos de chamada relacionados foram processados para indicar que o aplicativo está pronto para atender às solicitações.
Um ApplicationFailedEvent é enviado se houver uma exceção na inicialização.
...