代码之家  ›  专栏  ›  技术社区  ›  Benoit Wickramarachi

如何在战争之外将Spring消息源包外部化

  •  1
  • Benoit Wickramarachi  · 技术社区  · 16 年前

    为了更容易地修改属性,我必须在类路径之外外部化SpringMessageSources捆绑包以支持i18n(属性文件)。我该怎么做?

    <bean id="messageSource" class="org.springframework.context.support.ResourceBundleMessageSource">
        <property name="basename" value="test-messages"/>
    

    谢谢!

    2 回复  |  直到 16 年前
        1
  •  2
  •   Gaetan    16 年前

    我们已经构建了一个消息源实现来查找数据库中的消息。您需要做的是创建一个继承了Spring的AbstractMessageSource的MessageSource实现(为了获得所有特性,请参见JavaDoc)。

    您必须至少实现抽象方法“resolvecode(string,locale)”(但实现“resolvecodewithoutarguments(string,locale)”将提高性能),该方法将DAO委托给指向该简单表的DAO,定义如下:

    table translation (
      translation_id number pk
      code varchar(20)
      locale varchar(5)
      translation varchar(100)
    )
    

    代码和区域设置形成一个唯一的索引。

    你就完了。当然,您将添加一些缓存功能,并在DAO或messagesource级别提供“区域降级”行为(即,如果找不到“en-us”,请尝试“en”)。

    这很管用。

        2
  •  1
  •   pedromarce    16 年前

    检查这个 thread 关于这个问题的信息,但是我认为将文件放在Tomcat上下文之外并不是一个好的实践,因为您永远不知道将在哪里部署您的应用程序。

    但如果你需要的话,你会找到一些很好的解决方案。