【问题标题】:Spring, db and property file configurationSpring、db和属性文件配置
【发布时间】:2009-12-04 16:44:46
【问题描述】:

我有一些 JDO 对象,我想使用属性文件中的信息进行配置。

但是由于 spring 不用于创建(即这些对象没有在 xml 中作为 bean 列出。它们应该,它看起来如何?)这些对象我怎样才能得到它来配置这些对象?

我能想出的唯一解决方案是将属性文件信息配置到 dao 中,然后让 dao 在返回之前将该数据插入到对象中。或者我想我可以做一些 AOP 魔术,但这似乎很重,我认为它不会在将部署此服务的 Google App Engine 中工作。

任何其他建议。

【问题讨论】:

  • 你到底想做什么?如果要设置 JDO 对象的值,为什么不从数据存储区加载它们呢?属性文件的意义何在?
  • 移除了JDO的标签,因为JDO是持久化机制,但对对象没有任何约束,有些人称之为POJO,因此问题与JDO无关;它只是 Spring bean 之一

标签: java spring google-app-engine


【解决方案1】:

您可以将任何 bean 放在 applicationContext.xml 中,并在那里配置其所有属性。 可以通过以下方式加载属性文件:

<context:property-placeholder location="classpath:application.properties" />

然后,在你的 bean 定义上:

<property name="propertyName" value="${valueFromPropertiesFile}" />

然后,为了获得正确配置的 bean,您必须将其注入 - 在 applicationContext.xml 中,或通过 @Resource / @Autowired

但是,如果您不能让 spring 创建和配置您的 bean,那么只需手动使用您的属性填充它们 - 使用 java.util.Properties 加载属性文件,然后填充所需的数据。

【讨论】:

  • 无法注入JDO对象,它是由DAO创建的,而且会有多个,spring怎么知道注入哪个?
  • 好吧,那你就不能用spring了。您必须在实例化对象时填充对象。手动加载您的属性。
  • 他实际上可以通过提供一个有状态的 Spring bean 工厂。但是通常这类事情属于为了技术本身而不是实际需要而强制使用技术的范畴,所以我不推荐它。
  • 是的,你是对的。我认为,从托管上下文中实例化域对象并不是一种常见的做法。
【解决方案2】:

我有一些 JDO 对象,我想使用属性文件中的信息进行配置。

我不明白整个想法。这些对象是否持久?如果是,只需从数据存储区加载它们。如果不是,它们就不是 cmets 中指出的真正的 JDO 对象。在那种情况下,我不明白 DAO 和属性文件的意义。为什么不将它们声明为 Spring bean?

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2012-12-05
    • 2015-02-18
    • 2012-08-26
    • 1970-01-01
    • 2016-07-12
    • 1970-01-01
    • 2017-08-18
    相关资源
    最近更新 更多