【问题标题】:Dynamically configuring java beans based on property file in SpringSpring中基于属性文件动态配置java bean
【发布时间】:2011-11-30 00:36:13
【问题描述】:

想知道是否有一种方法可以使用 PropertyPlaceholderConfigurer 类根据属性文件中的一组值动态实例化 bean。

我有一个 java bean 说 Student 有两个属性:“name”和“subject”

我有一个属性文件:

student.1.name=student1name
student.1.subject=student1subject
student.2.name=student2name
student.2.name=student2subject

现在我有一个可以获取学生列表的 Classroom 对象。

我想知道是否有一种方法可以使用 Spring 来做到这一点。这里的挑战是学生人数可能会有所不同。

如果只有一个学生对象,那么:

<bean id="student" class="com.abc.Student">
    <property name="name" value="${student.1.name}" />
    <property name="subject"
        value="${student.1.subject}" />
</bean>

<bean id="classRoom" class="com.abc.ClassRoom">
    <property name="student" ref="student" />
</bean>

本来可以的。但在这种情况下,我们有一个包含 n 个学生的列表。 n 的值可能会根据属性文件中的条目数而有所不同。

【问题讨论】:

    标签: spring properties javabeans


    【解决方案1】:

    我和 Kevin 在一起——IMO 你想错了。

    一种可能的解决方法是创建一个将属性文件作为参数的 bean,将其读入并公开学生列表(需要在 something 上进行索引,例如n 在现有的属性文件中)。

    然后教室 bean 可以使用该学生列表。

    但看起来您确实是在尝试以一种尴尬的方式复制没有 DB 的 DB 的功能。

    【讨论】:

    • 感谢凯文和戴夫的意见。我已经实现了将属性文件作为参数并实例化对象。可以按照 Kevin 的建议使用 XML,但认为这可能是一种矫枉过正。非常感谢!!
    【解决方案2】:

    我认为 PropertyPlaceholderConfigurer 没有办法做到这一点。通常当我遇到这种情况时,我会选择 JSON 或 XML 的配置格式,并使用 GSON/Jackson/JAXB 将数据解组为对象。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2013-11-16
      • 2011-01-05
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多