发表于: 2020-05-21 23:30:45

1 1300


今天做的事情:

1. 学习 messageSource

书面定义:

messageSource是一个接口,它定义了几种解决消息的方法。 ApplicationContext接口扩展了此接口,以便所有应用程序上下文都能够解析文本消息。 应用程序上下文将消息解析委托给确切名称为messageSource的bean。

 

demo:

来源:https://howtodoinjava.com/spring-core/resolving-text-messages-in-spring-resourcebundlemessagesource-example/

==================

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=学号重复,插入失败



感觉是配置文件没有生效。





返回列表 返回列表
评论

    分享到