Resolve placeholders in banner through Enviornment

see #1191
This commit is contained in:
Christian Dupuis 2014-07-02 10:25:20 +02:00
parent e9c69aa46f
commit 133304c4f7
3 changed files with 37 additions and 22 deletions

View File

@ -139,6 +139,7 @@ import org.springframework.web.context.support.StandardServletEnvironment;
* @author Phillip Webb * @author Phillip Webb
* @author Dave Syer * @author Dave Syer
* @author Andy Wilkinson * @author Andy Wilkinson
* @author Christian Dupuis
* @see #run(Object, String[]) * @see #run(Object, String[])
* @see #run(Object[], String[]) * @see #run(Object[], String[])
* @see #SpringApplication(Object...) * @see #SpringApplication(Object...)
@ -152,7 +153,7 @@ public class SpringApplication {
+ "boot.context.embedded.AnnotationConfigEmbeddedWebApplicationContext"; + "boot.context.embedded.AnnotationConfigEmbeddedWebApplicationContext";
private static final String[] WEB_ENVIRONMENT_CLASSES = { "javax.servlet.Servlet", private static final String[] WEB_ENVIRONMENT_CLASSES = { "javax.servlet.Servlet",
"org.springframework.web.context.ConfigurableWebApplicationContext" }; "org.springframework.web.context.ConfigurableWebApplicationContext" };
private static final String SYSTEM_PROPERTY_JAVA_AWT_HEADLESS = "java.awt.headless"; private static final String SYSTEM_PROPERTY_JAVA_AWT_HEADLESS = "java.awt.headless";
@ -478,10 +479,11 @@ public class SpringApplication {
Resource resource = resourceLoader.getResource(location); Resource resource = resourceLoader.getResource(location);
if (resource.exists()) { if (resource.exists()) {
try { try {
System.out.println(StreamUtils.copyToString( String banner = StreamUtils.copyToString(
resource.getInputStream(), resource.getInputStream(),
environment.getProperty("banner.charset", Charset.class, environment.getProperty("banner.charset", Charset.class,
Charset.forName("UTF-8")))); Charset.forName("UTF-8")));
System.out.println(environment.resolvePlaceholders(banner));
return; return;
} }
catch (Exception ex) { catch (Exception ex) {
@ -546,7 +548,7 @@ public class SpringApplication {
if (this.resourceLoader != null) { if (this.resourceLoader != null) {
if (context instanceof GenericApplicationContext) { if (context instanceof GenericApplicationContext) {
((GenericApplicationContext) context) ((GenericApplicationContext) context)
.setResourceLoader(this.resourceLoader); .setResourceLoader(this.resourceLoader);
} }
if (context instanceof DefaultResourceLoader) { if (context instanceof DefaultResourceLoader) {
((DefaultResourceLoader) context).setClassLoader(this.resourceLoader ((DefaultResourceLoader) context).setClassLoader(this.resourceLoader
@ -579,7 +581,7 @@ public class SpringApplication {
protected void logStartupInfo(boolean isRoot) { protected void logStartupInfo(boolean isRoot) {
if (isRoot) { if (isRoot) {
new StartupInfoLogger(this.mainApplicationClass) new StartupInfoLogger(this.mainApplicationClass)
.logStarting(getApplicationLog()); .logStarting(getApplicationLog());
} }
} }

View File

@ -83,6 +83,7 @@ import static org.mockito.Mockito.verify;
* @author Phillip Webb * @author Phillip Webb
* @author Dave Syer * @author Dave Syer
* @author Andy Wilkinson * @author Andy Wilkinson
* @author Christian Dupuis
*/ */
public class SpringApplicationTests { public class SpringApplicationTests {
@ -162,6 +163,15 @@ public class SpringApplicationTests {
verify(application, never()).printBanner(); verify(application, never()).printBanner();
} }
@Test
public void customBannerWithProperties() throws Exception {
SpringApplication application = spy(new SpringApplication(ExampleConfig.class));
application.setWebEnvironment(false);
application.run("--banner.location=classpath:test-banner-with-placeholder.txt",
"--test.property=123456");
verify(application, never()).printBanner();
}
@Test @Test
public void customId() throws Exception { public void customId() throws Exception {
SpringApplication application = new SpringApplication(ExampleConfig.class); SpringApplication application = new SpringApplication(ExampleConfig.class);

View File

@ -0,0 +1,3 @@
Running a Test!
${test.property}