Commit 624cd405 authored by Phillip Webb's avatar Phillip Webb

Reduce GC pressure creating load descriptions

Update `ConfigFileApplicationListener` to build description methods
using a `StringBuilder` and not to use `String.format`.

See gh-13436
parent 76503218
...@@ -500,16 +500,19 @@ public class ConfigFileApplicationListener ...@@ -500,16 +500,19 @@ public class ConfigFileApplicationListener
Resource resource = this.resourceLoader.getResource(location); Resource resource = this.resourceLoader.getResource(location);
if (resource == null || !resource.exists()) { if (resource == null || !resource.exists()) {
if (this.logger.isTraceEnabled()) { if (this.logger.isTraceEnabled()) {
this.logger.trace("Skipped missing config " StringBuilder description = getDescription(
+ getDescription(location, resource, profile)); "Skipped missing config ", location, resource, profile);
this.logger.trace(description);
} }
return; return;
} }
if (!StringUtils.hasText( if (!StringUtils.hasText(
StringUtils.getFilenameExtension(resource.getFilename()))) { StringUtils.getFilenameExtension(resource.getFilename()))) {
if (this.logger.isTraceEnabled()) { if (this.logger.isTraceEnabled()) {
this.logger.trace("Skipped empty config extension " StringBuilder description = getDescription(
+ getDescription(location, resource, profile)); "Skipped empty config extension ", location, resource,
profile);
this.logger.trace(description);
} }
return; return;
} }
...@@ -517,8 +520,9 @@ public class ConfigFileApplicationListener ...@@ -517,8 +520,9 @@ public class ConfigFileApplicationListener
List<Document> documents = loadDocuments(loader, name, resource); List<Document> documents = loadDocuments(loader, name, resource);
if (CollectionUtils.isEmpty(documents)) { if (CollectionUtils.isEmpty(documents)) {
if (this.logger.isTraceEnabled()) { if (this.logger.isTraceEnabled()) {
this.logger.trace("Skipped unloaded config " StringBuilder description = getDescription(
+ getDescription(location, resource, profile)); "Skipped unloaded config ", location, resource, profile);
this.logger.trace(description);
} }
return; return;
} }
...@@ -534,8 +538,9 @@ public class ConfigFileApplicationListener ...@@ -534,8 +538,9 @@ public class ConfigFileApplicationListener
if (!loaded.isEmpty()) { if (!loaded.isEmpty()) {
loaded.forEach((document) -> consumer.accept(profile, document)); loaded.forEach((document) -> consumer.accept(profile, document));
if (this.logger.isDebugEnabled()) { if (this.logger.isDebugEnabled()) {
this.logger.debug("Loaded config file " StringBuilder description = getDescription("Loaded config file ",
+ getDescription(location, resource, profile)); location, resource, profile);
this.logger.debug(description);
} }
} }
} }
...@@ -581,23 +586,27 @@ public class ConfigFileApplicationListener ...@@ -581,23 +586,27 @@ public class ConfigFileApplicationListener
}).collect(Collectors.toList()); }).collect(Collectors.toList());
} }
private String getDescription(String location, Resource resource, private StringBuilder getDescription(String prefix, String location,
Profile profile) { Resource resource, Profile profile) {
String description = getDescription(location, resource); StringBuilder result = new StringBuilder(prefix);
return (profile != null) ? description + " for profile " + profile
: description;
}
private String getDescription(String location, Resource resource) {
try { try {
if (resource != null) { if (resource != null) {
String uri = resource.getURI().toASCIIString(); String uri = resource.getURI().toASCIIString();
return String.format("'%s' (%s)", uri, location); result.append("'");
result.append(uri);
result.append("' (");
result.append(location);
result.append(")");
} }
} }
catch (IOException ex) { catch (IOException ex) {
result.append(location);
}
if (profile != null) {
result.append(" for profile ");
result.append(profile);
} }
return String.format("'%s'", location); return result;
} }
private Set<Profile> getProfiles(Binder binder, String name) { private Set<Profile> getProfiles(Binder binder, String name) {
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment