Springboot, как показать баннер программно при запуске, снова - PullRequest
0 голосов
/ 30 июня 2018

Если приложение Springboot запускается, отображается логотип / баннер. Я взял свой собственный цветной баннер в файле banner.txt. Показывается при запуске, все в порядке.

Но я хочу повторить мой баннер после успешного или неуспешного запуска как последнее сообщение при запуске. Как: Banner + «работает» или Banner + «не работает».

Примерно так:

 public static void main( String[] args )
   {
     try {
      SpringApplication.run( ControllerUndMain.class, args );
           showLogo();
           System.out.println('runs')
        } catch(Exception e){
           showLogo();
           System.out.println('not working')
        }
}

Это помогает нашим администраторам и разработчикам увидеть, что фаза запуска заканчивается и запускаются приложения или нет.

Вопрос: Как показать баннер программно?

Ответы [ 2 ]

0 голосов
/ 03 июля 2018
@SpringBootApplication
public class SimpleDemoApplication {

public static void main(String[] args) {

    final SpringApplication app;
    final ConfigurableApplicationContext context;
    app = new SpringApplication(SimpleDemoApplication.class);
    context = app.run(args);

    print(context);
}

public static void print(ConfigurableApplicationContext context) {
    Banner banner = context.getBean(Banner.class);
    banner.printBanner(context.getEnvironment(), SimpleDemoApplication.class, System.out);
}

}

Просто введите или переберите context.getBean org.springframework.boot.Banner.class. Это помогает в хорошем случае, если все в порядке и контекст работает.

У меня нет решения для плохого случая, если контекст не работает.

0 голосов
/ 30 июня 2018

Я не мог найти прямой способ сделать это. Я сделал диск в базе кода Spring и нашел способ сделать это. Я проверил в своем проекте, и он работает нормально.

Примечание: я скопировал некоторые классы, которые используются весной для печати баннера. Я не вижу проблем с повторным использованием в нашей базе кода.

Вот целый код ....

Основной класс, который запускает приложение Springboot, и я создал метод для печати баннера.

public class DemoApplication {

    @Autowired
    private Environment env;

    public static void main(String[] args) {
        SpringApplication app = new SpringApplication(DemoApplication.class);

        ConfigurableApplicationContext test = app.run(args);

        DemoApplication application = new DemoApplication();
        application.printBanner(app, test);
    }

    public void printBanner(SpringApplication app, ConfigurableApplicationContext test) {
        ResourceLoader resourceLoader = (app.getResourceLoader() != null ? app.getResourceLoader()
                : new DefaultResourceLoader(app.getClassLoader()));
        SpringApplicationBannerPrinter bannerPrinter = new SpringApplicationBannerPrinter(resourceLoader, null);
        Banner banner = bannerPrinter.print(DemoApplication.class, test.getEnvironment());
        banner.printBanner(test.getEnvironment(), DemoApplication.class, System.out);
    }

}

После добавления вышеуказанной базы кода просто скопируйте SpringApplicationBannerPrinter и SpringBootBanner класс (вы получите эти формы кода Spring) в свой проект и запустите.

Примечание: 1) Я проверял, прежде чем задавать ответ здесь. 2) Короче говоря, я не вставил SpringApplicationBannerPrinter и SpringBootBanner . Дайте мне знать, если вы хотите, чтобы я вставил эти классы в ответ

...