1

PersistenceManagerFactoryこのように私のアプリ内でインスタンス化する代わりに:

Properties properties = new Properties();
properties.setProperty("javax.jdo.PersistenceManagerFactoryClass",
                "org.datanucleus.jdo.JDOPersistenceManagerFactory");
properties.setProperty("javax.jdo.option.ConnectionDriverName","com.mysql.jdbc.Driver");
properties.setProperty("javax.jdo.option.ConnectionURL","jdbc:mysql://localhost/myDB");
properties.setProperty("javax.jdo.option.ConnectionUserName","login");
properties.setProperty("javax.jdo.option.ConnectionPassword","password");
PersistenceManagerFactory pmf = JDOHelper.getPersistenceManagerFactory(properties);

Springで依存性注入用に次のように構成したいと思います。

<bean id="persistenceManagerFactory" class="org.springframework.orm.jdo.LocalPersistenceManagerFactoryBean" lazy-init="true">
    <property name="persistenceManagerFactoryName" value="transactions-optional" />
</bean>

Propertiesしかし、application-context.xml(を使用せずに)を渡す方法がわかりませんjdoconfig.xml

application-context.xml自動配線にこれらすべてのProperties値を渡すことは可能ですか?

4

2 に答える 2

3

これを行う簡単な方法は、<props>要素を使用してPropertiesオブジェクトとそのエントリを指定することです。これについては、Springリファレンスマニュアルのセクション3.4.2.4で説明されています。

より複雑なユースケースには他にも選択肢があります。たとえば、複数のソースからPropertiesオブジェクトをアセンブルできるプロパティファクトリクラスがあります。

于 2010-09-19T02:08:27.047 に答える
1

Stephen Cが提案したようにインラインブロックを使用するか、SpringOnlineReference提案されているようにPropertiesPlaceHolderConfigurer<props>と一緒にプロパティファイルを使用します。

まず、PropertyPlaceholderConfigurerを登録します。

<bean class="org.springframework.beans.factory.config.PropertyPlaceholderConfigurer">
    <property name="locations"
        value="classpath:com/foo/jdbc.properties"/>
</bean>

または、新しい学校の同等のショートカットを使用します。

<context:property-placeholder
    location="classpath:com/foo/jdbc.properties"/>

これは、プロパティファイルのサンプルコンテンツです。

jdbc.driverClassName=org.hsqldb.jdbcDriver
jdbc.url=jdbc:hsqldb:hsql://production:9002
jdbc.username=sa
jdbc.password=root

プロパティを割り当てる方法は次のとおりです。

<bean id="dataSource" destroy-method="close"
    class="org.apache.commons.dbcp.BasicDataSource">
  <property name="driverClassName" value="${jdbc.driverClassName}"/>
  <property name="url" value="${jdbc.url}"/>
  <property name="username" value="${jdbc.username}"/>
  <property name="password" value="${jdbc.password}"/>
</bean>

例はSpringReferenceから取られています。このアプローチの良いところは、a)異なるアプリケーションコンテキストで同じプロパティファイルを再利用できること、b)単体テストで、異なるバージョンのプロパティをクラスパスに配置することです(src / test/のmavenシナリオで)。 src / main / resourcesの代わりにresources)を使用すれば、他に何も変更する必要はありません。

LocalPersistenceManagerFactoryBeanをプロパティファイルを使用して直接構成することもできます(PersistenceManagerFactoryのセットアップを参照)。

<beans>

  <bean id="myPmf" class="org.springframework.orm.jdo.LocalPersistenceManagerFactoryBean">
    <property name="configLocation" value="classpath:kodo.properties"/>
  </bean>

</beans>
于 2010-09-19T06:48:53.183 に答える