【问题标题】:Spring 3 Properties File Per Controller每个控制器的 Spring 3 属性文件
【发布时间】:2012-04-18 23:40:59
【问题描述】:

我想知道 Spring 是否有类似于 Struts2 的属性文件机制,它首先在与控制器相同的包中查找属性文件,然后向上移动包结构,直到找到属性文件或属性。

我想为每个控制器定义一个属性文件,但如果可能的话,我宁愿不必将它们连接在一起。是否有一些可以遵循的约定将属性文件与控制器相关联?解析语言环境时,属性文件解析也应该正常工作。

例如,如果我在几个 prop 文件中定义了一个名为“title”的属性,我希望根据处理请求的控制器在 JSP 中解析正确的属性。

ControllerA RETURNS ViewA USES PropA.title

ControllerB RETURNS ViewB USES PropB.title

我成功地将属性文件自动连接到控制器的模型属性并在 JSP 中显示值。我还能够在配置中指定 ResourceBundleMessageSource,然后在 JSP 中显示其中的值。

【问题讨论】:

  • 你这样做是为了 I18N 的目的,还是为了不同的方式?
  • 我绝对想要 I18N,但目前,我必须在整个应用程序中维护一个唯一的属性键。否则,加载的第一个键将优先。当你说很多很多属性文件时,Spring 中的典型方法是什么?
  • 如果您需要 i18n - 使用为 i18n 制作的工具 :) viralpatel.net/blogs/2010/07/…

标签: java spring spring-mvc


【解决方案1】:

开箱即用,据我所知....但您可以轻松编写一个,如果那是您真正想要的!

Spring 有像 BeanFactoryPostProcessor 这样的东西,它可以让你用你的 BeanFactory/ApplicationContext 做这样的事情。我认为 BeanFactoryPostProcessor 适合这里的账单 - 您可以通过在类路径上查找属性文件、获取属性并将它们应用到 bean 来“后处理”bean。

我会这么说 - Spring 通常意味着相当无创。如果你想让这样的东西成为你设计的一部分,你可能想想办法在纯 Java 中做到这一点,而不是使用 Spring。例如,创建自己的工厂并分别实现和单元测试。要求您的应用使用此工厂来获取您的业务对象。

换句话说,您可能可以在 Spring 中执行此操作 - 但它并不总是最好的方法。在您的情况下,这听起来确实是最方便的,但我还没有看到您正在设置的内容和位置的详细信息。只是思考的食物..

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2015-01-16
    • 2011-11-13
    • 2014-10-17
    • 2017-11-06
    • 2015-01-03
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多