由于项目是使用的maven模块化的项目,各个模块都分别打包成jar最终被web可部署项目依赖,由于项目中用过了spring messagesource 资源国际化,而messagesource在spring中的配置仅此一份,为了使资源文件可以动态指定,所以对ResourceBundleMessageSource进行了扩展。代码如下:
public class GapResourceBundleMessageSource extends ResourceBundleMessageSource { @Override public void setBasenames(final String ... basenames) { List<String> list = new LinkedList<String>(); if (ArrayUtils.isNotEmpty(basenames)) { for (String baseName : basenames) { if (StringUtils.isNotEmpty(baseName)) { if (baseName.contains(",")) { String[] bases = baseName.split(","); for (String base : bases) { list.add(base); } } else { list.add(baseName); } } } } String[] bases = new String[list.size()]; list.toArray(bases); list.clear(); list = null; super.setBasenames(bases); } }
我们在配置文件中这样配置:
<bean id="messageSource" class="cn.evun.gap.core.spring.GapResourceBundleMessageSource"> <property name="basenames"> <list><value>${i18n.message}</value></list> </property> <property name="useCodeAsDefaultMessage" value="true" /> </bean>
其中,i18n.message的格式为i18n.message=i18n/aaa,i18n/bbb,i18n/ccc...。
这样,我们就可以通过修改i18n.messsage的值来达到动态指定资源文件而无需去修改原生配置文件了
相关推荐
`messageSource`的核心职责是根据指定的语言和消息键,从配置的资源文件中查找对应的消息文本。在国际化应用中,通常会为每种语言创建一个.properties文件,如`messages_en.properties`(英文)和`messages_zh_...
`ApplicationContext` 是 Spring 的核心接口之一,用于提供Bean的生命周期管理和资源访问服务。它可以通过以下两种常见实现类来加载多个配置文件: - `ClassPathXmlApplicationContext`:从类路径(CLASSPATH)中...
这个资源文件可能包含了关于如何使用 Spring MVC 开发 Web 应用的教程、示例代码或者配置文档。 1. **MVC 模式介绍** MVC 设计模式将应用程序分为三个主要部分:模型(Model)、视图(View)和控制器(Controller...
这里的`basename`属性指定了资源文件的路径,`classpath:i18n/messages`表示资源文件位于类路径下的`i18n`目录,文件名为`messages`。 4. **使用国际化**:在Controller或者视图模板(如JSP、Thymeleaf)中,我们...
2. 配置Spring MVC:在Spring的配置文件中,配置`MessageSource` bean,指定资源文件的基名和位置。例如: ```xml <bean id="messageSource" class="org.springframework.context.support....
在`application.properties`或`application.yml`中,你需要配置`spring.messages.basename`属性来指定资源文件的基础名。例如: ``` spring.messages.basename=i18n/messages ``` 3. **使用MessageSource**: ...
7. **国际化**:Spring支持多语言环境,通过`<bean id="messageSource" class="org.springframework.context.support.ResourceBundleMessageSource">`来配置消息源,使应用能够根据用户的语言环境显示相应的文本。...
- `setBasename`方法指定资源文件的基础名,不包括扩展名。 3. **在视图层使用** - 在JSP或Thymeleaf等视图技术中,可以通过`<fmt:message>`标签或者Thymeleaf的`#{key}`语法来获取并显示国际化的文本。 - JSP...
总结一下,Spring MVC的国际化(i18n)功能通过`MessageSource`接口和`ResourceBundle`资源文件实现。开发者可以创建针对不同语言的资源文件,并通过配置使Spring MVC自动根据用户locale选择合适的消息。这极大地提高...
这里,`basename`属性指定了资源文件的基础名称,不包括扩展名。 然后,在你的控制器或服务类中,你可以通过`MessageSource`的`getMessage`方法来获取相应的本地化消息。假设你有一个名为`messageService`的`...
2. 配置MessageSource Bean:在Spring MVC的配置文件(如springservlet-config.xml)中添加一个MessageSource Bean,这个Bean用来指定国际化资源文件的位置。在该Bean中,需要设置basename属性,其值为基本名称加上....
总结起来,Spring的国际化支持是通过`MessageSource`接口和资源文件实现的,它可以方便地集成到Spring MVC项目中,提供多语言的用户体验。正确配置和使用这些机制,能确保我们的应用程序能够适应全球化的市场需求。...
8. **配置国际化**:在Spring应用上下文中,可以通过`<bean>`元素配置`MessageSource`,设置默认的locale、资源文件路径等。在web.xml中,还可以配置`LocaleResolver`来控制用户请求的locale解析策略。 9. **动态...
这里的`basename`属性指定了资源文件的基础名称,Spring会自动寻找对应语言环境的文件。 3. **在代码中使用**:在Controller或Service层,我们可以使用`MessageSource`的`getMessage()`方法来获取国际化的消息。...
3. **使用MessageSource**:Spring Boot提供`MessageSource`接口来访问和解析资源文件中的消息。在你的服务类或控制器中,可以通过依赖注入`MessageSource`并调用`getMessage()`方法获取相应的翻译文本。 4. **请求...
XML配置中,basename属性指定了资源文件的基础名称,例如`locale/messages`,Spring会自动寻找对应locale的资源文件。注解配置则可以直接在配置类上使用@Bean注解来创建ResourceBundleMessageSource实例。 在实际...
在Spring MVC框架中,`Locale`是用来处理应用程序中的多语言支持的关键组件。...这篇博客文章将深入探讨如何在Spring MVC应用中...在实际开发中,确保正确配置这些组件,并创建相应的资源文件,就能轻松实现语言切换功能。
2. 在配置文件中指定资源文件位置。 3. 在模板引擎的HTML页面中使用`<spring:message>`标签引用资源。 4. 在Controller中处理登录请求,考虑用户浏览器的语言环境。 5. 可选:使用Bootstrap或其他前端框架提升UI体验...
在Spring中,我们主要利用`MessageSource`接口来管理这些资源文件。`MessageSource`允许我们在运行时动态地查找和解析消息。Spring提供了多种`MessageSource`的实现,例如`AbstractMessageSource`和` ...