【问题标题】:Spring Properties File弹簧属性文件
【发布时间】:2009-11-27 03:51:38
【问题描述】:

我在我的应用程序配置中使用它来指定获取消息的位置

<bean id="messageSource" class="org.springframework.context.support.ReloadableResourceBundleMessageSource">
    <property name="basenames" value="WEB-INF/properties/messages"/>
    <property name="defaultEncoding" value="UTF-8"/>
</bean>

我如何声明一个类似这样的 bean,它可以被我的 java 类代码访问

【问题讨论】:

    标签: spring properties


    【解决方案1】:

    你可以使用这个,而不是创建你自己的,通过:

    @Resource(name="messageSource")
    private MessageSource messageSource;
    

    【讨论】:

    • 在哪里查找 messageSource 文件?我的项目文件夹包含每个子系统的文件夹。每个子系统在自己的文件夹中都有自己的属性文件。或者我可以设置查找文件的位置或文件夹吗?
    • 无论你告诉它看哪里。您可以根据需要定义尽可能多的消息源并注入它们,但如果它们太多,我不建议这样做。
    • 注入它们是什么意思?我在哪里指定它会在哪里查找?
    • 我会写这样的东西吗? @Resource(name="com.package.resource.messages") 私有 MessageSource 消息源;
    • 没有。您在 applicationContext.xml 中定义您的 messageSource bean,然后将它们注入(您应该熟悉这个术语)您想要的任何地方。
    【解决方案2】:

    只要您的消息以键值对的形式存在于 WEB-INF/properties/messages 中,您对 messageSource bean 的声明就是正确的。

    现在,假设您想将 messageSource 注入到一个名为 ClassA 的类中,并且您有一个用于它的 setter (setMessageSource)。您所要做的就是让 spring 容器将该类作为其 bean 之一进行管理。这意味着您在 applicationContext.xml 中将类声明为 bean,如下所示:

    <!-- I am not setting the scope of this object as I don't know what it should be. You should do that based on your needs -->
    <bean id="classA" class="com.somepath.ClassA">
    </bean>
    

    就是这样!当 spring 容器初始化这个类时,它会识别出它有一个名为 messageSource 的字段,类型为 ReloadableResourceBundleMessageSource 并在你的类的实例中注入 messageSource。

    【讨论】:

      【解决方案3】:

      就像@Bozho 在你声明MessageSource 之后所说的那样,Spring 将自动检测类型并注入它在“WEB-INF/properties/messages[.properties]”中找到的属性文件,你刚刚在你的上下文中设置,然后你可以像 messageSource.getMessage("name"[,...]) 这样使用它,或者你可以采用老式的方式,你的 bean 可以实现 MessageSourceAware 然后你需要为 messageSource 包含一个公共设置器——你不需要 显式地注入messageSource,在这种情况下,Spring 会识别实现的接口并自动为您进行注入。

      【讨论】:

        猜你喜欢
        • 2011-10-23
        • 2012-05-16
        • 2015-12-15
        • 1970-01-01
        • 2017-04-22
        • 1970-01-01
        • 2022-10-21
        • 1970-01-01
        相关资源
        最近更新 更多