Browse Source

Merge branch '3.1.x' into 3.2.x

Closes gh-39621
pull/39630/head
Moritz Halbritter 2 years ago
parent
commit
68637fa86c
  1. 7
      spring-boot-project/spring-boot/src/main/java/org/springframework/boot/SpringApplicationBannerPrinter.java
  2. 18
      spring-boot-project/spring-boot/src/test/java/org/springframework/boot/SpringApplicationBannerPrinterTests.java
  3. 1
      spring-boot-project/spring-boot/src/test/resources/banner-utf8.txt

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

@ -20,6 +20,7 @@ import java.io.ByteArrayOutputStream; @@ -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 { @@ -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);
}

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

@ -16,12 +16,19 @@ @@ -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 { @@ -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");
}
}

1
spring-boot-project/spring-boot/src/test/resources/banner-utf8.txt

@ -0,0 +1 @@ @@ -0,0 +1 @@
😍 Spring Boot! 😍
Loading…
Cancel
Save