Extract configuration of MessageSourceAutoConfiguration
This commit extracts the configuration of MessageSourceAutoConfiguration in a dedicated object. Closes gh-9666
This commit is contained in:
@@ -16,8 +16,6 @@
|
||||
|
||||
package org.springframework.boot.autoconfigure.context;
|
||||
|
||||
import java.nio.charset.Charset;
|
||||
|
||||
import org.springframework.boot.autoconfigure.AutoConfigureOrder;
|
||||
import org.springframework.boot.autoconfigure.EnableAutoConfiguration;
|
||||
import org.springframework.boot.autoconfigure.condition.ConditionMessage;
|
||||
@@ -53,98 +51,33 @@ import org.springframework.util.StringUtils;
|
||||
@AutoConfigureOrder(Ordered.HIGHEST_PRECEDENCE)
|
||||
@Conditional(ResourceBundleCondition.class)
|
||||
@EnableConfigurationProperties
|
||||
@ConfigurationProperties(prefix = "spring.messages")
|
||||
public class MessageSourceAutoConfiguration {
|
||||
|
||||
private static final Resource[] NO_RESOURCES = {};
|
||||
|
||||
/**
|
||||
* Comma-separated list of basenames, each following the ResourceBundle convention.
|
||||
* Essentially a fully-qualified classpath location. If it doesn't contain a package
|
||||
* qualifier (such as "org.mypackage"), it will be resolved from the classpath root.
|
||||
*/
|
||||
private String basename = "messages";
|
||||
|
||||
/**
|
||||
* Message bundles encoding.
|
||||
*/
|
||||
private Charset encoding = Charset.forName("UTF-8");
|
||||
|
||||
/**
|
||||
* Loaded resource bundle files cache expiration, in seconds. When set to -1, bundles
|
||||
* are cached forever.
|
||||
*/
|
||||
private int cacheSeconds = -1;
|
||||
|
||||
/**
|
||||
* Set whether to fall back to the system Locale if no files for a specific Locale
|
||||
* have been found. if this is turned off, the only fallback will be the default file
|
||||
* (e.g. "messages.properties" for basename "messages").
|
||||
*/
|
||||
private boolean fallbackToSystemLocale = true;
|
||||
|
||||
/**
|
||||
* Set whether to always apply the MessageFormat rules, parsing even messages without
|
||||
* arguments.
|
||||
*/
|
||||
private boolean alwaysUseMessageFormat = false;
|
||||
@Bean
|
||||
@ConfigurationProperties(prefix = "spring.messages")
|
||||
public MessageSourceProperties messageSourceProperties() {
|
||||
return new MessageSourceProperties();
|
||||
}
|
||||
|
||||
@Bean
|
||||
public MessageSource messageSource() {
|
||||
MessageSourceProperties properties = messageSourceProperties();
|
||||
ResourceBundleMessageSource messageSource = new ResourceBundleMessageSource();
|
||||
if (StringUtils.hasText(this.basename)) {
|
||||
if (StringUtils.hasText(properties.getBasename())) {
|
||||
messageSource.setBasenames(StringUtils.commaDelimitedListToStringArray(
|
||||
StringUtils.trimAllWhitespace(this.basename)));
|
||||
StringUtils.trimAllWhitespace(properties.getBasename())));
|
||||
}
|
||||
if (this.encoding != null) {
|
||||
messageSource.setDefaultEncoding(this.encoding.name());
|
||||
if (properties.getEncoding() != null) {
|
||||
messageSource.setDefaultEncoding(properties.getEncoding().name());
|
||||
}
|
||||
messageSource.setFallbackToSystemLocale(this.fallbackToSystemLocale);
|
||||
messageSource.setCacheSeconds(this.cacheSeconds);
|
||||
messageSource.setAlwaysUseMessageFormat(this.alwaysUseMessageFormat);
|
||||
messageSource.setFallbackToSystemLocale(properties.isFallbackToSystemLocale());
|
||||
messageSource.setCacheSeconds(properties.getCacheSeconds());
|
||||
messageSource.setAlwaysUseMessageFormat(properties.isAlwaysUseMessageFormat());
|
||||
return messageSource;
|
||||
}
|
||||
|
||||
public String getBasename() {
|
||||
return this.basename;
|
||||
}
|
||||
|
||||
public void setBasename(String basename) {
|
||||
this.basename = basename;
|
||||
}
|
||||
|
||||
public Charset getEncoding() {
|
||||
return this.encoding;
|
||||
}
|
||||
|
||||
public void setEncoding(Charset encoding) {
|
||||
this.encoding = encoding;
|
||||
}
|
||||
|
||||
public int getCacheSeconds() {
|
||||
return this.cacheSeconds;
|
||||
}
|
||||
|
||||
public void setCacheSeconds(int cacheSeconds) {
|
||||
this.cacheSeconds = cacheSeconds;
|
||||
}
|
||||
|
||||
public boolean isFallbackToSystemLocale() {
|
||||
return this.fallbackToSystemLocale;
|
||||
}
|
||||
|
||||
public void setFallbackToSystemLocale(boolean fallbackToSystemLocale) {
|
||||
this.fallbackToSystemLocale = fallbackToSystemLocale;
|
||||
}
|
||||
|
||||
public boolean isAlwaysUseMessageFormat() {
|
||||
return this.alwaysUseMessageFormat;
|
||||
}
|
||||
|
||||
public void setAlwaysUseMessageFormat(boolean alwaysUseMessageFormat) {
|
||||
this.alwaysUseMessageFormat = alwaysUseMessageFormat;
|
||||
}
|
||||
|
||||
protected static class ResourceBundleCondition extends SpringBootCondition {
|
||||
|
||||
private static ConcurrentReferenceHashMap<String, ConditionOutcome> cache = new ConcurrentReferenceHashMap<>();
|
||||
|
||||
@@ -0,0 +1,100 @@
|
||||
/*
|
||||
* Copyright 2012-2017 the original author or authors.
|
||||
*
|
||||
* Licensed under the Apache License, Version 2.0 (the "License");
|
||||
* you may not use this file except in compliance with the License.
|
||||
* You may obtain a copy of the License at
|
||||
*
|
||||
* http://www.apache.org/licenses/LICENSE-2.0
|
||||
*
|
||||
* Unless required by applicable law or agreed to in writing, software
|
||||
* distributed under the License is distributed on an "AS IS" BASIS,
|
||||
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
* See the License for the specific language governing permissions and
|
||||
* limitations under the License.
|
||||
*/
|
||||
|
||||
package org.springframework.boot.autoconfigure.context;
|
||||
|
||||
import java.nio.charset.Charset;
|
||||
|
||||
/**
|
||||
* Configuration properties for Message Source.
|
||||
*
|
||||
* @author Stephane Nicoll
|
||||
* @since 2.0.0
|
||||
*/
|
||||
public class MessageSourceProperties {
|
||||
|
||||
/**
|
||||
* Comma-separated list of basenames, each following the ResourceBundle convention.
|
||||
* Essentially a fully-qualified classpath location. If it doesn't contain a package
|
||||
* qualifier (such as "org.mypackage"), it will be resolved from the classpath root.
|
||||
*/
|
||||
private String basename = "messages";
|
||||
|
||||
/**
|
||||
* Message bundles encoding.
|
||||
*/
|
||||
private Charset encoding = Charset.forName("UTF-8");
|
||||
|
||||
/**
|
||||
* Loaded resource bundle files cache expiration, in seconds. When set to -1, bundles
|
||||
* are cached forever.
|
||||
*/
|
||||
private int cacheSeconds = -1;
|
||||
|
||||
/**
|
||||
* Set whether to fall back to the system Locale if no files for a specific Locale
|
||||
* have been found. if this is turned off, the only fallback will be the default file
|
||||
* (e.g. "messages.properties" for basename "messages").
|
||||
*/
|
||||
private boolean fallbackToSystemLocale = true;
|
||||
|
||||
/**
|
||||
* Set whether to always apply the MessageFormat rules, parsing even messages without
|
||||
* arguments.
|
||||
*/
|
||||
private boolean alwaysUseMessageFormat = false;
|
||||
|
||||
public String getBasename() {
|
||||
return this.basename;
|
||||
}
|
||||
|
||||
public void setBasename(String basename) {
|
||||
this.basename = basename;
|
||||
}
|
||||
|
||||
public Charset getEncoding() {
|
||||
return this.encoding;
|
||||
}
|
||||
|
||||
public void setEncoding(Charset encoding) {
|
||||
this.encoding = encoding;
|
||||
}
|
||||
|
||||
public int getCacheSeconds() {
|
||||
return this.cacheSeconds;
|
||||
}
|
||||
|
||||
public void setCacheSeconds(int cacheSeconds) {
|
||||
this.cacheSeconds = cacheSeconds;
|
||||
}
|
||||
|
||||
public boolean isFallbackToSystemLocale() {
|
||||
return this.fallbackToSystemLocale;
|
||||
}
|
||||
|
||||
public void setFallbackToSystemLocale(boolean fallbackToSystemLocale) {
|
||||
this.fallbackToSystemLocale = fallbackToSystemLocale;
|
||||
}
|
||||
|
||||
public boolean isAlwaysUseMessageFormat() {
|
||||
return this.alwaysUseMessageFormat;
|
||||
}
|
||||
|
||||
public void setAlwaysUseMessageFormat(boolean alwaysUseMessageFormat) {
|
||||
this.alwaysUseMessageFormat = alwaysUseMessageFormat;
|
||||
}
|
||||
|
||||
}
|
||||
Reference in New Issue
Block a user