Я новичок в MyBatis, и у меня проблема с тестовым классом, который не может подключиться к базе данных, поскольку заполнители свойств не решаются. Как только я заменяю настройки ${placeholder}
жестко закодированными строками, все работает нормально.
Я довольно долго искал и нашел такие темы, как этот context: property-placeholder не разрешает ссылки . К сожалению, добавление свойства sqlSessionFactoryBeanName
к MapperScannerConfigurer
не дало никаких результатов. Независимо от того, что я пробовал, тестовый класс работает ТОЛЬКО когда я жестко программирую настройки соединения.
Может ли кто-нибудь помочь мне определить, что я делаю неправильно ... пока у меня еще остались волосы? Если вам нужна дополнительная информация, просто спросите.
Соответствующие версии:
- пружинная рама 4,3
- mybatis версия 3.5.0
- mybatis-spring версия 1.3.2
- dbcp версия 2.6
Вот моя последняя попытка (извините за грязный код)
myproperties.properties
driverClassName=oracle.jdbc.OracleDriver
url=jdbc:oracle:thin@//host:port/someservicename
username=someusername
password=somepassword
applicationContext.xml
<bean id="propertyConfigurer" class="org.springframework.beans.factory.config.PropertyPlacholderConfigurer">
<property name="locations">
<list>
<value>classpath:myproperties.properties</value>
</list>
</property>
</bean>
<bean id="dataSource" class="org.apache.commons.dbcp2.BasicDataSource" destroy-method="close">
<property name="driverClassName" value="${driverClassName}"/>
<property name="url" value="${url}"/>
<property name="username" value="${username}"/>
<property name="password" value="${password}"/>
</bean>
<bean id="sqlSessionFactory" class="org.mybatis.spring.SqlSessionFactoryBean">
<property name="dataSource" ref="dataSource" />
<property name="typeAliasesPackage" value="com.abc.model"/>
<property name="mapperLocations" value="classpath*:MyMapper.xml"/>
</bean>
<bean id="transactionManager"
class="org.springframeword.jdbc.datasource.DataSourceTransactionManager">
<property name="dataSource" ref="dataSource" />
</bean>
<bean class="org.mybatis.spring.mapper.MapperScannerConfigurer"
p:basePackage="com.abc.mappers"
p:sqlSessionFactoryBeanName="sqlSessionFactory"
p:processPropertyPlaceholders="true" />
mybatis-config.xml
<configuration>
<typeAliases>
<typeAlias ..../>
</typeAliases>
<environments default="dev">
<environment id="dev">
<transactionManager type="JDBC"/>
<dataSource type="POOLED">
<property name="driver" value="${driverClassName}"/>
<property name="url" value="${url}"/>
<property name="username" value="${username}"/>
<property name="password" value="${password}"/>
</dataSource>
</environment>
</environments>
<mappers>
<mapper resource="/path/to/MyMapper.xml"/>
</mappers>
</configuration>
Тестовый класс не может соединиться с ошибкой, подобной этой
###
Ошибка запроса базы данных. Причина org.springframework.jdbc.CannotGetJdbcConnectionException: не удалось
получить соединение JDBC; Вложенным исключением является java.sql.SQLException:
Невозможно создать PoolableConnectionFactory (ошибка ввода-вывода: адаптер Netword
не удалось установить соединение)