mirror of
https://github.com/spring-projects/spring-boot.git
synced 2024-08-29 03:06:45 +08:00
Merge pull request #39601 from alvican
* pr/39601: Polish "Fix local dependent writing of banner into ByteArrayOutputStream" Fix local dependent writing of banner into ByteArrayOutputStream Closes gh-39601
This commit is contained in:
commit
ddd3e37ddd
@ -20,6 +20,7 @@ import java.io.ByteArrayOutputStream;
|
||||
import java.io.IOException;
|
||||
import java.io.PrintStream;
|
||||
import java.io.UnsupportedEncodingException;
|
||||
import java.nio.charset.StandardCharsets;
|
||||
|
||||
import org.apache.commons.logging.Log;
|
||||
|
||||
@ -95,9 +96,11 @@ class SpringApplicationBannerPrinter {
|
||||
|
||||
private String createStringFromBanner(Banner banner, Environment environment, Class<?> mainApplicationClass)
|
||||
throws UnsupportedEncodingException {
|
||||
String charset = environment.getProperty("spring.banner.charset", StandardCharsets.UTF_8.name());
|
||||
ByteArrayOutputStream baos = new ByteArrayOutputStream();
|
||||
banner.printBanner(environment, mainApplicationClass, new PrintStream(baos));
|
||||
String charset = environment.getProperty("spring.banner.charset", "UTF-8");
|
||||
try (PrintStream printStream = new PrintStream(baos, false, charset)) {
|
||||
banner.printBanner(environment, mainApplicationClass, printStream);
|
||||
}
|
||||
return baos.toString(charset);
|
||||
}
|
||||
|
||||
|
@ -16,12 +16,19 @@
|
||||
|
||||
package org.springframework.boot;
|
||||
|
||||
import org.apache.commons.logging.Log;
|
||||
import org.junit.jupiter.api.Test;
|
||||
|
||||
import org.springframework.aot.hint.RuntimeHints;
|
||||
import org.springframework.aot.hint.predicate.RuntimeHintsPredicates;
|
||||
import org.springframework.context.support.GenericApplicationContext;
|
||||
import org.springframework.core.io.Resource;
|
||||
import org.springframework.core.io.ResourceLoader;
|
||||
import org.springframework.mock.env.MockEnvironment;
|
||||
|
||||
import static org.assertj.core.api.Assertions.assertThat;
|
||||
import static org.mockito.BDDMockito.then;
|
||||
import static org.mockito.Mockito.mock;
|
||||
|
||||
/**
|
||||
* Tests for {@link SpringApplicationBannerPrinter}.
|
||||
@ -38,4 +45,15 @@ class SpringApplicationBannerPrinterTests {
|
||||
assertThat(RuntimeHintsPredicates.resource().forResource("banner.txt")).accepts(runtimeHints);
|
||||
}
|
||||
|
||||
@Test
|
||||
void shouldUseUtf8() {
|
||||
ResourceLoader resourceLoader = new GenericApplicationContext();
|
||||
Resource resource = resourceLoader.getResource("classpath:/banner-utf8.txt");
|
||||
SpringApplicationBannerPrinter printer = new SpringApplicationBannerPrinter(resourceLoader,
|
||||
new ResourceBanner(resource));
|
||||
Log log = mock(Log.class);
|
||||
printer.print(new MockEnvironment(), SpringApplicationBannerPrinterTests.class, log);
|
||||
then(log).should().info("\uD83D\uDE0D Spring Boot! \uD83D\uDE0D\n\n");
|
||||
}
|
||||
|
||||
}
|
||||
|
@ -0,0 +1 @@
|
||||
😍 Spring Boot! 😍
|
Loading…
Reference in New Issue
Block a user