Spring MessageSource

Posted VVII

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Spring MessageSource相关的知识,希望对你有一定的参考价值。

 (一) xml配置-config.xml line11-19

 重点是id="messageSource"

 1 <?xml version="1.0" encoding="UTF-8"?>
 2 <beans xmlns="http://www.springframework.org/schema/beans"
 3        xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
 4        xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd">
 5 
 6 
 7     <bean id="user" class="com.vi.springbean.aotutag.User"></bean>
 8 
 9     <bean id="userFactoryBean" class="com.vi.springbean.aotutag.UserFactoryBean"></bean>
10 
11     <bean id="messageSource" class="org.springframework.context.support.ReloadableResourceBundleMessageSource">
12         <property name="basenames">
13             <array>
14                 <value>messages</value>
15             </array>
16 
17         </property>
18         <property name="defaultEncoding" value="UTF-8"/>
19     </bean>
20 </beans>

 

(二)properties文件定义

    messages_en_US.properties

1 hello_word=hello Spring
2 msg_1=hello Spring,{0}
3 msg_2=hello Spring,{0},{1}

      messages_en_US.properties

1 hello_word=初识,Spring
2 msg_1=初识,Spring,{0}
3 msg_2=初识,Spring,{1},{0}

 

(三)测试类

必须是 ApplicationContext ctx = new MyClassPathXMLApplicationContext(path);

 BeanFactory beanFactory = new XmlBeanFactory(new ClassPathResource(path)); 不支持

 1 public class AppTest {
 2 
 3     @Test
 4     public void test() {
 5         String path = "config.xml";
 6         ApplicationContext ctx = new MyClassPathXMLApplicationContext(path);
 7         String strUS= ctx.getMessage("hello_word",new Object[0], Locale.US);
 8         String strCN= ctx.getMessage("hello_word",new Object[1], Locale.SIMPLIFIED_CHINESE);
 9         System.out.println(strUS);
10         System.out.println(strCN);
11         System.out.println();
12         System.out.println(ctx.getMessage("msg_2",new Object[]{new Date(),"加油 !"},Locale.US));
13         System.out.println(ctx.getMessage("msg_2",new Object[]{"Come on !",new Date()},Locale.SIMPLIFIED_CHINESE));
14 
15     }
16 
17 
18 }

 

(四)测试结果

hello Spring
初识,Spring

hello Spring,1/9/20 11:52 AM,加油 !
初识,Spring,20-1-9 上午11:52,Come on !

 

(五)其他问题

(1)出现乱码,修改文件编码格式,

idea:

 

 (2)调用的语言,请与定义的properties命名一致,

        properties的命名格式{XX}_{语言}_{国家}.properties

(3)传参与properties中的占位符是由关联的,推测传参数组下标与占位符一致,具体有待看源码

 

加油加油  小菜

以上是关于Spring MessageSource的主要内容,如果未能解决你的问题,请参考以下文章

MessageSource Spring:NotSerializableException

Spring MessageSource

java 通过注释Spring Spring MVC messageSource配置

Spring messageSource

Spring Boot (1.4.1) 和 Thymeleaf (3) MessageSource 单引号

Thymeleaf + Spring (not Boot) - 如何显示来自 messageSource 的消息