spring-boot can be used as a message property by putting a file named `` `message.properties``` under the classpath. Instead, if you want to put the file on any path.
pom.xml
<parent>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-parent</artifactId>
<version>2.0.1.RELEASE</version>
</parent>
Place the message properties file in files / mymessages.properties
.
files/mymessages.properties
hoge.message=foobar
Application.java
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.boot.CommandLineRunner;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.context.MessageSource;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Lazy;
import org.springframework.context.support.ReloadableResourceBundleMessageSource;
@SpringBootApplication
public class Application implements CommandLineRunner {
@Autowired
@Lazy
MessageSource messageSource;
public static void main(String[] args) {
SpringApplication.run(Application.class, args);
}
@Override
public void run(String... args) throws Exception {
String hoge = messageSource.getMessage("hoge.message", null, null);
System.out.println(hoge);
}
@Bean
public MessageSource messageSource() {
ReloadableResourceBundleMessageSource messageSource = new ReloadableResourceBundleMessageSource();
messageSource.setBasename("file:files/mymessages");
return messageSource;
}
}
You can specify a name other than message.properties or specify multiple files in spring.messages.basename. However, only files under the classpath can be specified here. Even if you write `file: files / mymessages```, it will be
`classpath *: file: files / mymessages.properties```.