而不是像我这样在我的应用中实例化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
值?
答案 0 :(得分:3)
执行此操作的简单方法是使用<props>
元素指定Properties对象及其条目。这在Spring参考手册的Section 3.4.2.4中有描述。
对于更复杂的用例,还有其他替代方案;例如有一个属性工厂类,可以从多个源组装一个Properties对象。
答案 1 :(得分:1)
使用内置<props>
块作为Stephen C建议,或者使用属性文件和PropertiesPlaceHolderConfigurer建议in the Spring Online Reference:
首先注册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>
示例来自Spring Reference。这种方法的好处在于:a)你可以为不同的应用程序上下文重用相同的属性文件,b)对于单元测试,你只需在类路径上放置不同版本的属性(在src / test /中的maven场景中)资源而不是src / main / resources),你不必改变其他任何东西。
您还可以使用属性文件直接配置LocalPersistenceManagerFactoryBean(请参阅PersistenceManagerFactory setup):
<beans>
<bean id="myPmf" class="org.springframework.orm.jdo.LocalPersistenceManagerFactoryBean">
<property name="configLocation" value="classpath:kodo.properties"/>
</bean>
</beans>