mirror of
https://github.com/spring-projects/spring-boot.git
synced 2024-08-29 03:06:45 +08:00
Fix detection of dot-based resource bundle basenames
This commit makes sure that properties-based resource bundle location with a dot is detected. It also harmonizes the description of the configuration key as our support is not stricly matching the convention. Closes gh-10092
This commit is contained in:
parent
8255835c99
commit
7b3bedc468
@ -1,5 +1,5 @@
|
||||
/*
|
||||
* Copyright 2012-2017 the original author or authors.
|
||||
* Copyright 2012-2018 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.
|
||||
@ -59,9 +59,10 @@ 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.
|
||||
* Comma-separated list of basenames (essentially a fully-qualified classpath
|
||||
* location), each following the ResourceBundle convention with relaxed support for
|
||||
* slash based locations. If it doesn't contain a package qualifier (such as
|
||||
* "org.mypackage"), it will be resolved from the classpath root.
|
||||
*/
|
||||
private String basename = "messages";
|
||||
|
||||
@ -180,9 +181,10 @@ public class MessageSourceAutoConfiguration {
|
||||
}
|
||||
|
||||
private Resource[] getResources(ClassLoader classLoader, String name) {
|
||||
String target = name.replace('.', '/');
|
||||
try {
|
||||
return new PathMatchingResourcePatternResolver(classLoader)
|
||||
.getResources("classpath*:" + name + ".properties");
|
||||
.getResources("classpath*:" + target + ".properties");
|
||||
}
|
||||
catch (Exception ex) {
|
||||
return NO_RESOURCES;
|
||||
|
@ -1,5 +1,5 @@
|
||||
/*
|
||||
* Copyright 2012-2017 the original author or authors.
|
||||
* Copyright 2012-2018 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.
|
||||
@ -60,8 +60,17 @@ public class MessageSourceAutoConfigurationTests {
|
||||
}
|
||||
|
||||
@Test
|
||||
public void testMessageSourceCreated() throws Exception {
|
||||
public void propertiesBundleWithSlashIsDetected() {
|
||||
load("spring.messages.basename:test/messages");
|
||||
assertThat(this.context.getBeansOfType(MessageSource.class)).hasSize(1);
|
||||
assertThat(this.context.getMessage("foo", null, "Foo message", Locale.UK))
|
||||
.isEqualTo("bar");
|
||||
}
|
||||
|
||||
@Test
|
||||
public void propertiesBundleWithDotIsDetected() {
|
||||
load("spring.messages.basename:test.messages");
|
||||
assertThat(this.context.getBeansOfType(MessageSource.class)).hasSize(1);
|
||||
assertThat(this.context.getMessage("foo", null, "Foo message", Locale.UK))
|
||||
.isEqualTo("bar");
|
||||
}
|
||||
|
@ -114,7 +114,7 @@ content into your application; rather pick only the properties that you need.
|
||||
|
||||
# INTERNATIONALIZATION ({sc-spring-boot-autoconfigure}/context/MessageSourceAutoConfiguration.{sc-ext}[MessageSourceAutoConfiguration])
|
||||
spring.messages.always-use-message-format=false # Set whether to always apply the MessageFormat rules, parsing even messages without arguments.
|
||||
spring.messages.basename=messages # Comma-separated list of basenames, each following the ResourceBundle convention.
|
||||
spring.messages.basename=messages # Comma-separated list of basenames (essentially a fully-qualified classpath location), each following the ResourceBundle convention with relaxed support for slash based locations.
|
||||
spring.messages.cache-seconds=-1 # Loaded resource bundle files cache expiration, in seconds. When set to -1, bundles are cached forever.
|
||||
spring.messages.encoding=UTF-8 # Message bundles encoding.
|
||||
spring.messages.fallback-to-system-locale=true # Set whether to fall back to the system Locale if no files for a specific Locale have been found.
|
||||
|
Loading…
Reference in New Issue
Block a user