Spring 中的国际化资源文件

注意:本文介绍的 ResourceBundleMessageSource 只能从classpath下加载资源文件。要想自定义资源文件的位置,可以使用 ReloadableResourceBundleMessageSource。

  • classpath路径下的资源文件
文件名: format.properties
文件内容: message.source.name=Jack
文件名: format_zh_CN.properties
文件内容: message.source.name=杰克
文件名: format_en_US.properties
文件内容: message.source.name=Jack
  • 配置和资源文件对应的bean
@Configuration
public class MessageSourceConfig {

    /**
     * {@link ResourceBundleMessageSource} 只能从 classpath 中加载资源文件
     * 
     * 但是 {@link org.springframework.context.support.ReloadableResourceBundleMessageSource}
     * 
     * 可以自定义资源文件的位置
     * 
     * @return 国际化消息资源
     */
    @Bean(name = {"testMessageSource"})
    public ResourceBundleMessageSource messageSource() {
        ResourceBundleMessageSource resourceBundleMessageSource = new ResourceBundleMessageSource();
        // 指定资源文件前缀,资源文件必须在 classpath 下
        resourceBundleMessageSource.addBasenames("format");

        return resourceBundleMessageSource;
    }

}
  • 打印日志
@Component
public class MessageSourceTest {

    private static final Logger logger = LoggerFactory.getLogger(MessageSourceTest.class);

    private ResourceBundleMessageSource messageSource;

    @Autowired
    public MessageSourceTest(ResourceBundleMessageSource messageSource) {
        this.messageSource = messageSource;
    }

    /**
     * {@link PostConstruct} 这个注解在这里没用,只是为了方便测试,打印日志,查看国际化资源是否加载成功
     */
    @PostConstruct
    public void verifyMessageResource() {
	// 英文资源
        logger.info("MessageSource : {}",
                messageSource.getMessage("message.source.name", null, Locale.US));
	// 中文资源
        logger.info("MessageSource : {}",
                messageSource.getMessage("message.source.name", null, Locale.SIMPLIFIED_CHINESE));
    }
}
  • 查看资源文件中的消息是否被成功加载
    这里写图片描述
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值