parent
e9c69aa46f
commit
133304c4f7
|
|
@ -77,38 +77,38 @@ import org.springframework.web.context.support.StandardServletEnvironment;
|
|||
* Classes that can be used to bootstrap and launch a Spring application from a Java main
|
||||
* method. By default class will perform the following steps to bootstrap your
|
||||
* application:
|
||||
*
|
||||
*
|
||||
* <ul>
|
||||
* <li>Create an appropriate {@link ApplicationContext} instance (depending on your
|
||||
* classpath)</li>
|
||||
*
|
||||
*
|
||||
* <li>Register a {@link CommandLinePropertySource} to expose command line arguments as
|
||||
* Spring properties</li>
|
||||
*
|
||||
*
|
||||
* <li>Refresh the application context, loading all singleton beans</li>
|
||||
*
|
||||
*
|
||||
* <li>Trigger any {@link CommandLineRunner} beans</li>
|
||||
* </ul>
|
||||
*
|
||||
*
|
||||
* In most circumstances the static {@link #run(Object, String[])} method can be called
|
||||
* directly from your {@literal main} method to bootstrap your application:
|
||||
*
|
||||
*
|
||||
* <pre class="code">
|
||||
* @Configuration
|
||||
* @EnableAutoConfiguration
|
||||
* public class MyApplication {
|
||||
*
|
||||
*
|
||||
* // ... Bean definitions
|
||||
*
|
||||
*
|
||||
* public static void main(String[] args) throws Exception {
|
||||
* SpringApplication.run(MyApplication.class, args);
|
||||
* }
|
||||
* </pre>
|
||||
*
|
||||
*
|
||||
* <p>
|
||||
* For more advanced configuration a {@link SpringApplication} instance can be created and
|
||||
* customized before being run:
|
||||
*
|
||||
*
|
||||
* <pre class="code">
|
||||
* public static void main(String[] args) throws Exception {
|
||||
* SpringApplication app = new SpringApplication(MyApplication.class);
|
||||
|
|
@ -116,29 +116,30 @@ import org.springframework.web.context.support.StandardServletEnvironment;
|
|||
* app.run(args)
|
||||
* }
|
||||
* </pre>
|
||||
*
|
||||
*
|
||||
* {@link SpringApplication}s can read beans from a variety of different sources. It is
|
||||
* generally recommended that a single {@code @Configuration} class is used to bootstrap
|
||||
* your application, however, any of the following sources can also be used:
|
||||
*
|
||||
*
|
||||
* <p>
|
||||
* <ul>
|
||||
* <li>{@link Class} - A Java class to be loaded by {@link AnnotatedBeanDefinitionReader}</li>
|
||||
*
|
||||
*
|
||||
* <li>{@link Resource} - An XML resource to be loaded by {@link XmlBeanDefinitionReader},
|
||||
* or a groovy script to be loaded by {@link GroovyBeanDefinitionReader}</li>
|
||||
*
|
||||
*
|
||||
* <li>{@link Package} - A Java package to be scanned by
|
||||
* {@link ClassPathBeanDefinitionScanner}</li>
|
||||
*
|
||||
*
|
||||
* <li>{@link CharSequence} - A class name, resource handle or package name to loaded as
|
||||
* appropriate. If the {@link CharSequence} cannot be resolved to class and does not
|
||||
* resolve to a {@link Resource} that exists it will be considered a {@link Package}.</li>
|
||||
* </ul>
|
||||
*
|
||||
*
|
||||
* @author Phillip Webb
|
||||
* @author Dave Syer
|
||||
* @author Andy Wilkinson
|
||||
* @author Christian Dupuis
|
||||
* @see #run(Object, String[])
|
||||
* @see #run(Object[], String[])
|
||||
* @see #SpringApplication(Object...)
|
||||
|
|
@ -152,7 +153,7 @@ public class SpringApplication {
|
|||
+ "boot.context.embedded.AnnotationConfigEmbeddedWebApplicationContext";
|
||||
|
||||
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";
|
||||
|
||||
|
|
@ -478,10 +479,11 @@ public class SpringApplication {
|
|||
Resource resource = resourceLoader.getResource(location);
|
||||
if (resource.exists()) {
|
||||
try {
|
||||
System.out.println(StreamUtils.copyToString(
|
||||
String banner = StreamUtils.copyToString(
|
||||
resource.getInputStream(),
|
||||
environment.getProperty("banner.charset", Charset.class,
|
||||
Charset.forName("UTF-8"))));
|
||||
Charset.forName("UTF-8")));
|
||||
System.out.println(environment.resolvePlaceholders(banner));
|
||||
return;
|
||||
}
|
||||
catch (Exception ex) {
|
||||
|
|
@ -546,7 +548,7 @@ public class SpringApplication {
|
|||
if (this.resourceLoader != null) {
|
||||
if (context instanceof GenericApplicationContext) {
|
||||
((GenericApplicationContext) context)
|
||||
.setResourceLoader(this.resourceLoader);
|
||||
.setResourceLoader(this.resourceLoader);
|
||||
}
|
||||
if (context instanceof DefaultResourceLoader) {
|
||||
((DefaultResourceLoader) context).setClassLoader(this.resourceLoader
|
||||
|
|
@ -579,7 +581,7 @@ public class SpringApplication {
|
|||
protected void logStartupInfo(boolean isRoot) {
|
||||
if (isRoot) {
|
||||
new StartupInfoLogger(this.mainApplicationClass)
|
||||
.logStarting(getApplicationLog());
|
||||
.logStarting(getApplicationLog());
|
||||
}
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -79,10 +79,11 @@ import static org.mockito.Mockito.verify;
|
|||
|
||||
/**
|
||||
* Tests for {@link SpringApplication}.
|
||||
*
|
||||
*
|
||||
* @author Phillip Webb
|
||||
* @author Dave Syer
|
||||
* @author Andy Wilkinson
|
||||
* @author Christian Dupuis
|
||||
*/
|
||||
public class SpringApplicationTests {
|
||||
|
||||
|
|
@ -162,6 +163,15 @@ public class SpringApplicationTests {
|
|||
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
|
||||
public void customId() throws Exception {
|
||||
SpringApplication application = new SpringApplication(ExampleConfig.class);
|
||||
|
|
|
|||
|
|
@ -0,0 +1,3 @@
|
|||
Running a Test!
|
||||
|
||||
${test.property}
|
||||
Loading…
Reference in New Issue