Skip to content

Commit 8574926

Browse files
committed
Merge branch '3.2.x'
Closes gh-39622
2 parents 73d3623 + 68637fa commit 8574926

File tree

3 files changed

+24
-2
lines changed

3 files changed

+24
-2
lines changed

spring-boot-project/spring-boot/src/main/java/org/springframework/boot/SpringApplicationBannerPrinter.java

+5-2
Original file line numberDiff line numberDiff line change
@@ -20,6 +20,7 @@
2020
import java.io.IOException;
2121
import java.io.PrintStream;
2222
import java.io.UnsupportedEncodingException;
23+
import java.nio.charset.StandardCharsets;
2324

2425
import org.apache.commons.logging.Log;
2526

@@ -95,9 +96,11 @@ private Banner getTextBanner(Environment environment) {
9596

9697
private String createStringFromBanner(Banner banner, Environment environment, Class<?> mainApplicationClass)
9798
throws UnsupportedEncodingException {
99+
String charset = environment.getProperty("spring.banner.charset", StandardCharsets.UTF_8.name());
98100
ByteArrayOutputStream baos = new ByteArrayOutputStream();
99-
banner.printBanner(environment, mainApplicationClass, new PrintStream(baos));
100-
String charset = environment.getProperty("spring.banner.charset", "UTF-8");
101+
try (PrintStream printStream = new PrintStream(baos, false, charset)) {
102+
banner.printBanner(environment, mainApplicationClass, printStream);
103+
}
101104
return baos.toString(charset);
102105
}
103106

spring-boot-project/spring-boot/src/test/java/org/springframework/boot/SpringApplicationBannerPrinterTests.java

+18
Original file line numberDiff line numberDiff line change
@@ -16,12 +16,19 @@
1616

1717
package org.springframework.boot;
1818

19+
import org.apache.commons.logging.Log;
1920
import org.junit.jupiter.api.Test;
2021

2122
import org.springframework.aot.hint.RuntimeHints;
2223
import org.springframework.aot.hint.predicate.RuntimeHintsPredicates;
24+
import org.springframework.context.support.GenericApplicationContext;
25+
import org.springframework.core.io.Resource;
26+
import org.springframework.core.io.ResourceLoader;
27+
import org.springframework.mock.env.MockEnvironment;
2328

2429
import static org.assertj.core.api.Assertions.assertThat;
30+
import static org.mockito.BDDMockito.then;
31+
import static org.mockito.Mockito.mock;
2532

2633
/**
2734
* Tests for {@link SpringApplicationBannerPrinter}.
@@ -38,4 +45,15 @@ void shouldRegisterRuntimeHints() {
3845
assertThat(RuntimeHintsPredicates.resource().forResource("banner.txt")).accepts(runtimeHints);
3946
}
4047

48+
@Test
49+
void shouldUseUtf8() {
50+
ResourceLoader resourceLoader = new GenericApplicationContext();
51+
Resource resource = resourceLoader.getResource("classpath:/banner-utf8.txt");
52+
SpringApplicationBannerPrinter printer = new SpringApplicationBannerPrinter(resourceLoader,
53+
new ResourceBanner(resource));
54+
Log log = mock(Log.class);
55+
printer.print(new MockEnvironment(), SpringApplicationBannerPrinterTests.class, log);
56+
then(log).should().info("\uD83D\uDE0D Spring Boot! \uD83D\uDE0D\n\n");
57+
}
58+
4159
}
Original file line numberDiff line numberDiff line change
@@ -0,0 +1 @@
1+
😍 Spring Boot! 😍

0 commit comments

Comments
 (0)