Sample Spring Database Configuration

This is a sample Spring Database context:

<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
       xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
       xmlns:p="http://www.springframework.org/schema/p"
       xmlns:tx="http://www.springframework.org/schema/tx"
       xmlns:c="http://www.springframework.org/schema/c"
       xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd http://www.springframework.org/schema/tx http://www.springframework.org/schema/tx/spring-tx.xsd">

    <bean  class="org.springframework.beans.factory.config.PropertyPlaceholderConfigurer"
           p:location="properties/database.properties" />

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

    <bean  class="org.springframework.jdbc.core.namedparam.NamedParameterJdbcTemplate"
           c:dataSource-ref="dataSource"  />

    <bean  id="jdbcTransactionManager" class="org.springframework.jdbc.datasource.DataSourceTransactionManager"
            p:dataSource-ref="dataSource"/>
    <tx:annotation-driven transaction-manager="jdbcTransactionManager"/>

</beans>

Notes:

  • PropertyPlaceholder bean is loading up our database properties file
  • We are using a DBCP BasicDataSource as our datasource where we are setting user/pass/url/driver parameters from the properties files
  • We are supposing that DBCP, Spring, DB Driver related jars are all found in the classpath most commonly by a Maven POM configuration
  • NamedParameterJdbcTemplate is set in this config file so that ¬†it can be conveniently referred from the application to be injected by will. Note the datasource reference we are passing as a parameter to its bean
  • Spring DataSourceTransactionManager¬†is getting used instantiating its bean with the datasource. That will allow us to mark methods @Transactional¬†which will get intercepted by Spring AOP and read our parameter/attribute strategies and other setup as per the ACID operations.
Advertisements