Springboot,如何再次以编程方式在启动时显示横幅

时间:2018-06-30 08:40:46

标签: java spring-boot banner

如果启动springboot应用程序,则会显示徽标/横幅。 我在banner.txt文件中拿了自己的彩色横幅。一开始就显示了,一切都很好。

但是我想在成功或失败后作为最后一条启动消息重复我的横幅。如:横幅+“运行”或横幅+“不运行”。

类似这样的东西:

('App\Model\Employee')

这有助于我们的管理员和开发人员查看启动阶段是否结束以及应用程序是否运行。

问题:如何以编程方式显示横幅?

2 个答案:

答案 0 :(得分:1)

我找不到任何直接的方法。我试了一下Spring代码库,并找到了解决方法。我已经在我的项目中对其进行了测试,并且工作正常。

注意:我已经复制了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 。让我知道是否要我在答案中粘贴这些课程

答案 1 :(得分:1)

@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);
}

}

只需在org.springframework.boot.Banner.class中注入或克服context.getBean。如果一切都很好并且上下文已经完成,那么这将为很好的情况提供帮助。

如果上下文不运行,我没有解决这种情况的方法。