Пробовал следовать шаблону на примерах apache dbcp, я понимаю все, кроме того, откуда и откуда возникают свойства базы данных и в которых компонент должен быть помещен в контексте приложения.Конфигурирование apache dbcp PoolingDataSource с Spring
Вместо этого я использовал источник данных Spring, но, как я помню, я настроил его в спешке, и я помню, что у меня возникли трудности с настройкой исходного источника данных, предоставленного самим apache dbcp. Поэтому у меня есть время, чтобы столкнуться с проблемой и выполнить первоначальное намерение использовать PoolingDataSource.
Причина, по которой я использовал реализацию Spring, заключается в том, что она предоставляет средства для настройки параметров для подключения к базе данных.
http://commons.apache.org/dbcp/apidocs/org/apache/commons/dbcp/PoolingDataSource.html Согласно
Там нет методов для заполнения конфигурации как URL или драйвер нагрузки.
Я попытался проследить его через пулы объектов и т. Д., Но был действительно потерян.
Ответ на вопрос: Да, я не хочу использовать apache basicDataSource.
Итак, теперь я возвращаюсь к проблеме и не могу понять, где взять параметры? Водитель? Url? Кажется, что url, pw и username установлены на фабрике соединений. Но где взять драйвер postgresql для загрузки?
Пожалуйста, помогите заполнить конфигурацию.
(с помощью пружины для конфигурации)
<!-- the one I want to use now -->
<bean id="dataSource" class="org.apache.commons.dbcp.PoolingDataSource">
<constructor-arg><ref bean="pool"/></constructor-arg>
</bean>
<!-- the one I used before as a workaround
<bean id="ds" class="org.springframework.jdbc.datasource.DriverManagerDataSource">
<property name="driverClassName" value="org.postgresql.Driver"/>
<property name="url" value="jdbc:postgresql:postgres"/>
<property name="username" value="magicUserName"/>
<property name="password" value="magicPassword"/>
</bean> -->
<bean id="pool" class="org.apache.commons.pool.impl.GenericObjectPool">
<property name="minEvictableIdleTimeMillis"><value>300000</value </property>
<property name="timeBetweenEvictionRunsMillis"><value>60000</value </property>
</bean>
<bean id="dsConnectionFactory" class="org.apache.commons.dbcp.DataSourceConnectionFactory">
<constructor-arg><ref bean="dataSource"/></constructor-arg>
</bean>
<bean id="poolableConnectionFactory" class="org.apache.commons.dbcp.PoolableConnectionFactory">
<constructor-arg index="0"><ref bean="dsConnectionFactory"/ </constructor-arg>
<constructor-arg index="1"><ref bean="pool"/></constructor-arg>
<constructor-arg index="2"><null/></constructor-arg>
<constructor-arg index="3"><null/></constructor-arg>
<constructor-arg index="4"><value>false</value></constructor-arg>
<constructor-arg index="5"><value>true</value></constructor-arg>
</bean>
<bean id="txManager"
class="org.springframework.jdbc.datasource.DataSourceTransactionManager">
<property name="dataSource" ref="dataSource" />
</bean>
<tx:annotation-driven transaction-manager="txManager" />
</beans>
Я считаю, что мы заинтересованы только в первых двух, но я включил все на всякий случай.
Кажется, есть много людей, использующих обходные пути: http://forum.springsource.org/showthread.php?10772-How-do-I-create-a-org-apache-commons-dbcp-PoolableConnection
* Я не хочу использовать апачский basicDataSource * - Зачем? Каков ваш прецедент? –
потому что я мазохист. :-) Если серьезно, я один из тех разработчиков, которые предпочитают понимать, что происходит. Конфигурирование одного компонента со всеми необходимыми параметрами - это магические алибабы. То же самое было с весной, пока не поняли, почему, зачем и что вводится, и зачем использовать DI - не только слепо стрелять @Autowired и побежать. :-) Еще бы, если бы вы могли помочь мне заполнить код, я был бы очень доволен. И мой вариант использования не заботится о его текущем состоянии, я вообще использую объединение. – Aubergine
Странно, вы не только мазохист такого рода: http://numberformat.wordpress.com/2009/11/11/configuring-a-connection-pool-in-spring-using-dbcp/ –