发表于: 2020-05-21 23:30:45
1 1300
今天做的事情:
1. 学习 messageSource
书面定义:
messageSource是一个接口,它定义了几种解决消息的方法。 ApplicationContext接口扩展了此接口,以便所有应用程序上下文都能够解析文本消息。 应用程序上下文将消息解析委托给确切名称为messageSource的bean。
demo:
==================
jar:spring.context
--Spring-config.xml
<beanid="messageSource"class="org.springframework.context.support.ResourceBundleMessageSource">
<propertyname="basename">
<value>message</value>
</property>
</bean>
--/resources/message_zh_CN.properties
msg.text=TestmessageResource!
--SpringContextTest.java
packagecn.mogeek.service;
importorg.springframework.context.ApplicationContext;
importorg.springframework.context.support.ClassPathXmlApplicationContext;
importjava.util.Locale;
/**
*@ClassNameSpringContextTest
*@DescriptionTODO
*@Authorowlwinter
*@Date2020/5/2113:22
*@Version1.0
**/
publicclassSpringContextTest{
@SuppressWarnings("resource")
publicstaticvoidmain(String[]args)throwsException{
ApplicationContextcontext=newClassPathXmlApplicationContext("classpath:spring-mybatis.xml");
Stringmessage=context.getMessage("msg.text",null,Locale.getDefault());
System.out.println(message);
}
}
运行成功的话就可以在控制台输出 TestmessageResource!
==================
我的理解是这是一个消息转换接口,通常程序中有各种消息需要返回给用户,但是用户由于语言或者其他原因不一定能够很好的理解这些信息,那么 Spring 框架中有 messageSource 这种接口来帮助把这些难理解的信息转换成用户能快速识别的内容。
https://www.logicbig.com/tutorials/spring-framework/spring-core/message-sources.html
现在很多项目用这个做国际化,主要是语言的转换。
上面只是简单的 demo,使用时还可以在 properties 文件中加入占位符(甚至可以自定义格式),在 getMessage() 的时候可以输出占位符所要填充的信息。
遇到的问题:
1. 在项目里面 junit 测试正常,但是接口中不行。
junit 测试如下:
接口测试如下:
返回的 msg 不应该是 success,应该是对应的中文信息。
log 文件:
DEBUG [http-nio-8080-exec-21] - trace com.mchange.v2.resourcepool.BasicResourcePool@39d69cf8 [managed: 3, unused: 2, excluded: 0] (e.g. com.mchange.v2.c3p0.impl.NewPooledConnection@68e59b81)
DEBUG [http-nio-8080-exec-21] - No properties file found for [message] - neither plain properties nor XML
DEBUG [http-nio-8080-exec-21] - No properties file found for [message_zh] - neither plain properties nor XML
DEBUG [http-nio-8080-exec-21] - No properties file found for [message_zh_CN] - neither plain properties nor XML
DEBUG [http-nio-8080-exec-21] - Written [{msg=success, code=201, data=[id: 107, 学号:40015, 姓名: 奇异博士, 学习方向: 无限奥义循环, 口号: 多玛姆,我是来找你谈判的!, QQ号: 51076, 辅导师兄: 古一法师, 来源: 英国, 毕业院校: 格林威治村, 日报链接: https://baike.baidu.com/item/%E5%A5%87%E5%BC%82%E5%8D%9A%E5%A3%AB/2492942]}] as "application/json;charset=UTF-8" using [org.springframework.http.converter.json.MappingJackson2HttpMessageConverter@1404bb29]
DEBUG [http-nio-8080-exec-21] - Null ModelAndView returned to DispatcherServlet with name 'SpringMVC-dispatcher': assuming HandlerAdapter completed request handling
DEBUG [http-nio-8080-exec-21] - Successfully completed request
DEBUG [http-nio-8080-exec-21] - Returning cached instance of singleton bean 'sqlSessionFactory
message_zh_CN.properties
msg.text=Test messageResource!测试
post.success=插入成功
post.fail=插入失败
student_id_repeatedly=学号重复,插入失败
感觉是配置文件没有生效。
评论