`
simen_net
  • 浏览: 307106 次
  • 性别: Icon_minigender_1
  • 来自: 广州
社区版块
存档分类
最新评论

Spring批量使用国际化资源的改进

阅读更多

最近研究spinrg(mvc)+openjpa,相比Struts2来说SpringMVC最郁闷的是国际化资源文件的配置,不知道是我不会还是什么原因,必须要一个一个写。看了源代码貌似也没有提供批量导入的方法,所以尝试着进行了一些修改。因为没有仔细研究Spring的代码,只简单改了一下,效率等方面可能考虑的不多,但我主要用在WEB部分,只在启动的时候加载,效率也不会有太大的影响。少说 上代码

 

xml配置

  <bean id="messageSource" class="org.springframework.context.support.ReloadableResourceBundleMessageSource">
    <property name="basename" value="/WEB-INF/classes/com/strong/messages/messages" />
    <property name="cacheSeconds" value="0" />
  </bean>

 

可以看出要修改的就是“org.springframework.context.support.ReloadableResourceBundleMessageSource”,我重建了一个class:com.strong.utils.spring.ReloadableResourceBundleMessageSource,修改部分代码:

  public void setBasenames(String[] basenames) {
    if (basenames != null && basenames.length > 0) {
      String strWebPath = this.getClass().getClassLoader().getResource("../../").getPath();
      String strBasePath = strWebPath + basenames[0];
      try {
        List<File> listFile = FileUtils.getSuoYouWenJianLuJing(strBasePath);
        List<String> listFile1 = new ArrayList<String>();
        for (File file : listFile) {
          if (!file.isDirectory() && file.getName().indexOf("_") == -1 && file.getName().indexOf(".properties") > -1) {
            listFile1.add(file.getAbsolutePath().replace(strWebPath, "").replace(".properties", ""));
          }
        }
        this.basenames = new String[listFile1.size()];
        for (int i = 0; i < listFile1.size(); i++) {
          this.basenames[i] = listFile1.get(i).trim();
          System.out.println("load properties file: " + listFile1.get(i).trim());
        }
      } catch (IOException e) {
        // TODO Auto-generated catch block
        e.printStackTrace();
      }

      // this.basenames = new String[basenames.length];
      // for (int i = 0; i < basenames.length; i++) {
      // String basename = basenames[i];
      // Assert.hasText(basename, "Basename must not be empty");
      // this.basenames[i] = basename.trim();
      // System.out.println(basename);
      // }
    } else {
      this.basenames = new String[0];
    }
  }

 为了尽可能的减少耦合的部分,只是在这里把从list中获取资源文件数组改为只获取第一个,并遍历这个目录将其中的所有properties扩展名且不含_的文件的相对路径增加到basenames中,其他的都不改变。遍历文件目录的代码:

  public static List<File> getSuoYouWenJianLuJing(String strLuJing) throws IOException {
    if (strLuJing == null || strLuJing.length() == 0) {
      return null;
    }
    File fileLuJing = new File(strLuJing);
    if (!fileLuJing.exists()) {
      return null;
    }
    return getSuoYouWenJianLuJing(fileLuJing);
  }

 重新修改XML文件如下:

  <bean id="messageSource" class="com.strong.utils.spring.ReloadableResourceBundleMessageSource">
    <property name="basenames" value="WEB-INF/classes/com/strong" />
    <property name="cacheSeconds" value="0" />
  </bean>

 OK 完工,代码写的非常粗糙,并且也只修改了ReloadableResourceBundleMessageSource类,不过大概意思和思路已经差不多了,至于使用通配符获取资源文件例如 /WEB-INF/classes/com/strong/*/messages等就类似了

 

分享到:
评论

相关推荐

    官网下载的完整spring5.0的jar包.rar

    Spring框架是Java开发中不可或缺的一部分,它以其模块化、易用性和灵活性著称。Spring5.0作为其一个重要版本,引入了许多新特性和改进,旨在提高开发者效率和应用性能。这个"官网下载的完整spring5.0的jar包.rar...

    spring3中文文档

    9. **国际化与本地化**:Spring支持多语言环境,可以通过资源文件轻松实现应用程序的国际化和本地化。 10. **Spring Batch**:这是一个用于处理批量数据的模块,提供了强大的批处理功能,如跳过错误记录、重启功能...

    Spring中文帮助文档

    3.8.2. 利用MessageSource实现国际化 3.8.3. 事件 3.8.4. 底层资源的访问 3.8.5. ApplicationContext在WEB应用中的实例化 3.9. 粘合代码和可怕的singleton 3.10. 以J2EE RAR文件的形式部署Spring ...

    spring framework reference-4.3.10

    这份文档由Rod Johnson编写,是开发者学习和掌握Spring框架不可或缺的资源。文档提供了两种阅读格式,即EPUB和MOBI,以满足不同设备和阅读习惯的需求。 Spring框架是Java平台上的一个开源应用程序框架,它以其模块...

    Spring API

    3.8.2. 利用MessageSource实现国际化 3.8.3. 事件 3.8.4. 底层资源的访问 3.8.5. ApplicationContext在WEB应用中的实例化 3.9. 粘合代码和可怕的singleton 3.10. 以J2EE RAR文件的形式部署Spring ...

    pro spring 4

    - **使用JPA 2进行数据访问**:Java Persistence API (JPA) 是一种用于Java平台的对象关系映射标准,Spring 4支持最新的JPA 2规范,简化了实体管理和数据持久化的操作。 - **事务管理**:Spring提供了强大的事务管理...

    spring2.5.6jar包

    8. **国际化(i18n)**:Spring支持多语言应用,提供了资源绑定和消息源管理功能,方便应用根据不同地区的设置显示对应的语言内容。 9. **Spring Web Services**:虽然不是2.5.6的主要焦点,但Spring对SOAP和...

    spring-framework-4.3.8.RELEASE官方完整包加官方文档

    Spring Framework 4.3.8.RELEASE 是一个重要的版本,它是Spring框架的稳定版本,提供了大量的功能和改进,为开发者构建高效、灵活的Java应用程序提供了强大的支持。这个官方完整包包含了Spring框架的所有组件和相关...

    Spring in Action, 5th Edition

    《Spring in Action, 5th Edition》是Spring框架权威指南的第五版,旨在深入解析Spring框架的使用和最佳实践。本书以清晰易懂的方式,详细介绍了如何利用Spring开发实际的Java应用。作为一本高清电子版,它包含了...

    spring4.2.7jar包

    10. **国际化和主题支持**:Spring提供了i18n(国际化)和主题(Theme)支持,使得应用可以根据用户选择的语言和主题进行动态调整。 11. **测试支持**:Spring提供了强大的测试框架,包括单元测试、集成测试和...

    Spring的全部架包和帮助文档!

    Spring框架是中国最流行的Java企业级应用开发框架,它以其模块化、灵活性和强大的功能而闻名。这个压缩包包含了Spring框架的3.2.0.RELEASE版本,这是一个在2012年发布的稳定版本,尽管现在有更先进的版本,但3.2.0...

    跟开涛学spring3

    《跟开涛学Spring3》是一本专注于Spring3框架学习的资源集合,旨在帮助开发者深入理解和熟练运用Spring框架的核心功能。Spring是Java企业级应用开发中的一个关键框架,它简化了配置、提供了依赖注入和面向切面编程等...

    Spring收集到的所有文档,API

    这个压缩包中包含的“Spring文档”很可能是Spring框架的官方文档、API参考手册和其他相关教程,对于深入理解和使用Spring框架至关重要。下面将详细阐述Spring框架的主要知识点: 1. **Spring核心容器**:这是Spring...

    spring-framework-4.3.6.RELEASE-文档&约束

    在Spring框架的上下文中,它可能包含关于如何访问和使用文档的指示,以及关于4.3.6.RELEASE版本的更新和改进的摘要。 3. **notice.txt**:这个文件列出了Spring框架中使用的第三方组件及其相应的版权信息。它提醒...

    SpringFramework_v5.2.3.zip

    Spring 5.2.3是该框架的一个稳定版本,包含了多个新特性和改进,以提升性能和开发者体验。 1. **依赖注入(Dependency Injection,DI)**:Spring的核心特性之一,它允许开发者通过配置文件或注解来管理对象及其...

    spring in action 2.0

    8. **国际化和主题支持**:Spring提供了方便的国际化(i18n)和主题(theme)功能,使得应用程序可以根据用户的语言环境和偏好显示不同的内容和样式。 9. **测试工具**:Spring Test模块提供了对Spring应用的全面...

    spring-framework-5.0.4.RELEASE-dist.zip

    5. 容器:Spring Container负责初始化、配置及管理应用中的对象,如ApplicationContext和BeanFactory。 三、核心模块 1. Spring Core:提供IoC容器,实现依赖注入,管理Bean的生命周期。 2. Spring Beans:定义了...

    spring data redis 官方文档

    - **广泛的社区支持**:作为 Spring 生态系统的一部分,Spring Data Redis 拥有庞大的用户群和丰富的资源库,方便开发者解决问题和获取帮助。 #### 三、Spring Data Redis 版本更新 - **1.7 版本新特性**:包括但...

    spring2.0技术手册--林信良

    - **ApplicationContext**:是在 BeanFactory 的基础上增加了国际化支持、资源访问、事件发布等功能,更适合用于实际的应用开发。 ##### 3.2 AOP 支持 AOP(Aspect Oriented Programming)即面向切面编程,是一种...

Global site tag (gtag.js) - Google Analytics