我有2个maven模块 - Webapp
和Persistence
。持久性模块有一个属性文件 - database.properties
和两个上下文文件 - persistenceContext.xml
(主要),datasourceContext.xml
(导入persistenceContext.xml
)。
persistenceContext.xml
<context:annotation-config/>
<tx:annotation-driven transaction-manager="transactionManager" />
<context:component-scan base-package="com.example.persistence"/>
<context:property-placeholder location="classpath:database.properties, classpath:application.properties" />
<import resource="classpath:datasourceContext.xml" />
文件persistenceContext.xml, datasourceContext.xml
和database.properties
位于resources
模块的Persistence
目录中。
datasourceContext.xml
<bean id="dataSource" destroy-method="close"
class="com.mchange.v2.c3p0.ComboPooledDataSource">
<property name="driverClass" value="com.mysql.jdbc.Driver"/>
<property name="jdbcUrl" value="${database.url}"/>
<property name="user" value="${database.username}"/>
<property name="password" value="${database.password}"/>
<property name="debugUnreturnedConnectionStackTraces" value="true"/>
<property name="unreturnedConnectionTimeout" value="20"/>
<property name="minPoolSize" value="5"/>
<property name="initialPoolSize" value="10"/>
<property name="maxPoolSize" value="50"/>
<property name="maxStatements" value="50"/>
<property name="idleConnectionTestPeriod" value="120"/>
<property name="maxIdleTime" value="1200"/>
</bean>
database.properties
database.url=jdbc:mysql://255.255.255.255:3306/...
database.username=...
database.password=...
Persistence
maven模块是Webapp
模块的依赖项。当我将Webapp
部署到Tomcat时,它失败并出现异常:
org.springframework.beans.factory.BeanDefinitionStoreException: Invalid bean definition with name 'dataSource' defined in class path resource [spring-datasource.xml]: Could not resolve placeholder 'database.url' in string value "${database.url}"
我尝试了以下解决方案:
resources\com\example\persistence
下移动了database.properties。property-placeholder
中使用PropertyPlaceholderConfigurer
或datasourceContext.xml
,而不是property-placeholder
中使用persistenceContext.xml
。Webapp
模块下的database.properties,然后尝试第1点。database.properties
文件位于Persistence
模块的类路径下。没有提到的任何内容不起作用,我也查看了stackoverflow和spring论坛上的其他主题 - 但没有成功。