码迷,mamicode.com
首页 > 移动开发 > 详细

SpringApplication setBanner无效的问题

时间:2019-08-25 17:40:42      阅读:474      评论:0      收藏:0      [点我收藏+]

标签:导致   自己   亦或   mamicode   mic   并且   nap   img   set   

如下两个代码片段:

片段1

1 SpringApplication application = new SpringApplication(SpringBootLearnApplication.class);
2 application.setBanner((environment, sourceClass, out) -> System.out.println("测试banner的设置"));
3 application.run(args);

片段2

1 SpringApplication application = new SpringApplication();
2 application.setBanner((environment, sourceClass, out) -> System.out.println("测试banner的设置"));
3 application.run(SpringBootLearnApplication.class, args);

两个代码片段的区别在于是在SpringApplication构造方法里面传入,亦或者在run这个方法中传入。

如片段2的做法,在run方法传入,SpringBootLearnApplication.class这个类,会导致setBanner完全等同于失效。

我们点开片段1的run方法:

技术图片

可以看到该run方法进入的是SpringApplication的成员方法,也就是说我们实例化了该SpringApplication,并且调用了该实例的run方法。

我们再点开片段2的run方法:

技术图片

和片段1很明显的区别,该run方法是一个静态的。并且在方法内部又new了一次SpringApplication并调用该方法的run。

所以,片段2实际上创建了两个SpringApplication的实例,setBanner方法只是对自己实例化的SpringApplication实例进行设置,从而导致setBanner最后没有任何效果。

我们可以采用片段1中的写法,就不会出现两次实例化

1 SpringApplication application = new SpringApplication(SpringBootLearnApplication.class);
2 application.setBanner((environment, sourceClass, out) -> System.out.println("测试banner的设置"));
3 application.run(args);

或者,如果完全不需要设置任何东西,就直接默认简写

1 SpringApplication.run(SpringBootLearnApplication.class, args);

不论如何最终都将按照这样的顺序执行new SpringApplication() --> run()

 

SpringApplication setBanner无效的问题

标签:导致   自己   亦或   mamicode   mic   并且   nap   img   set   

原文地址:https://www.cnblogs.com/lay2017/p/11408537.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!