Browse Source

Defer Charset.availableCharsets() call

Change the `StringHttpMessageConverter` to defer calling
Charset.availableCharsets() until absolutely necessary to help improve
startup times.

Issue: SPR-15502
pull/1413/merge
Phillip Webb 9 years ago committed by Stephane Nicoll
parent
commit
90477b40a4
  1. 7
      spring-web/src/main/java/org/springframework/http/converter/StringHttpMessageConverter.java

7
spring-web/src/main/java/org/springframework/http/converter/StringHttpMessageConverter.java

@ -43,7 +43,7 @@ public class StringHttpMessageConverter extends AbstractHttpMessageConverter<Str @@ -43,7 +43,7 @@ public class StringHttpMessageConverter extends AbstractHttpMessageConverter<Str
public static final Charset DEFAULT_CHARSET = StandardCharsets.ISO_8859_1;
private final List<Charset> availableCharsets;
private volatile List<Charset> availableCharsets;
private boolean writeAcceptCharset = true;
@ -62,7 +62,6 @@ public class StringHttpMessageConverter extends AbstractHttpMessageConverter<Str @@ -62,7 +62,6 @@ public class StringHttpMessageConverter extends AbstractHttpMessageConverter<Str
*/
public StringHttpMessageConverter(Charset defaultCharset) {
super(defaultCharset, MediaType.TEXT_PLAIN, MediaType.ALL);
this.availableCharsets = new ArrayList<>(Charset.availableCharsets().values());
}
@ -109,6 +108,10 @@ public class StringHttpMessageConverter extends AbstractHttpMessageConverter<Str @@ -109,6 +108,10 @@ public class StringHttpMessageConverter extends AbstractHttpMessageConverter<Str
* @return the list of accepted charsets
*/
protected List<Charset> getAcceptedCharsets() {
if (this.availableCharsets == null) {
this.availableCharsets = new ArrayList<>(
Charset.availableCharsets().values());
}
return this.availableCharsets;
}

Loading…
Cancel
Save