最近配置多个数据源出现了错误,总结了原因,便是忽略了spring的缺省默认.
以下做个记录.
Oracle数据源
1 <!--可变配置-->
2 <bean
3 class="org.springframework.beans.factory.config.PropertyPlaceholderConfigurer">
4 <property name="locations" value="properties/app.properties" />
5 </bean>
6
7 <!-- 数据源 -->
8 <bean id="dataSource" class="org.apache.commons.dbcp.BasicDataSource">
9 <property name="driverClassName" value="oracle.jdbc.driver.OracleDriver" />
10 <property name="url" value="jdbc:oracle:thin:@172.17.17.63:1521:xe" />
11 <property name="username" value="sa" />
12 <property name="password" value="sa" />
13 </bean>
14 <bean id="sessionFactory"
15 class="org.springframework.orm.hibernate3.LocalSessionFactoryBean">
16 <property name="dataSource">
17 <ref bean="dataSource" />
18 </property>
19 <property name="hibernateProperties">
20 <props>
21 <prop key="hibernate.dialect"> org.hibernate.dialect.OracleDialect </prop>
22 <prop key="hibernate.format_sql">false</prop>
23 <prop key="hibernate.show_sql">false</prop>
24 <prop key="hibernate.connection.autocommit">false</prop>
25 <!-- <prop key="hibernate.jdbc.use_streams_for_binary">true</prop> -->
26 <prop key="hibernate.c3p0.max_size">50</prop>
27 <prop key="hibernate.c3p0.min_size">10</prop>
28 <prop key="hibernate.c3p0.timeout">120</prop>
29 <prop key="hibernate.c3p0.max_statements">10</prop>
30 <prop key="hibernate.c3p0.idle_test_period">120</prop>
31 <prop key="hibernate.c3p0.acquire_increment">2</prop>
32 <prop key="hibernate.c3p0.validate">true</prop>
33 </props>
34 </property>
35 <property name="mappingResources">
36 <!-- 映射文件 -->
37 <list>
38 <value>dao/User.hbm.xml</value>
39 </list>
40 </property>
41 </bean>
42
43 <bean id="transactionManager"
44 class="org.springframework.orm.hibernate3.HibernateTransactionManager">
45 <property name="sessionFactory">
46 <ref bean="sessionFactory" />
47 </property>
48 </bean>
49 <!-- 编程事务 -->
50 <bean id="transactionTemplate"
51 class="org.springframework.transaction.support.TransactionTemplate">
52 <property name="transactionManager">
53 <ref bean="transactionManager" />
54 </property>
55 </bean>
dataSource,sessionFactory,transactionManager,transactionTemplate这里设的实例名均是默认的,所以配置DAO.hbm.xml时可以缺省设置sessionFactory,transactionTemplate.如下:
userDAO
1 <bean id="userDAO" autowire="byName"
2 class="UserDAOImpl">
3 </bean>
添加另一个数据源,这是就不能默认缺省配置sessionFactory,transactionTemplate.如下:
SQLServer数据源
1 <!-- 数据源 -->
2 <bean id="basicDataSource" class="org.apache.commons.dbcp.BasicDataSource" >
3 <property name="driverClassName" value="com.microsoft.sqlserver.jdbc.SQLServerDriver" />
4 <property name="url" value="jdbc:sqlserver://172.17.17.63:1433;DatabaseName=Test" />
5 <property name="username" value="sa" />
6 <property name="password" value="cft" />
7 </bean>
8 <bean id="basicSessionFactory"
9 class="org.springframework.orm.hibernate3.LocalSessionFactoryBean">
10 <property name="dataSource">
11 <ref bean="basicDataSource" />
12 </property>
13 <property name="hibernateProperties">
14 <props>
15 <prop key="hibernate.dialect">org.hibernate.dialect.SQLServerDialect</prop>
16 <prop key="hibernate.format_sql">false</prop>
17 <prop key="hibernate.show_sql">false</prop>
18 <prop key="hibernate.connection.autocommit">false</prop>
19 <prop key="hibernate.c3p0.max_size">50</prop>
20 <prop key="hibernate.c3p0.min_size">5</prop>
21 <prop key="hibernate.c3p0.timeout">120</prop>
22 <prop key="hibernate.c3p0.max_statements">0</prop>
23 <prop key="hibernate.c3p0.idle_test_period">120</prop>
24 <prop key="hibernate.c3p0.acquire_increment">2</prop>
25 <prop key="hibernate.c3p0.validate">true</prop>
26 </props>
27 </property>
28 <property name="mappingResources">
29 <!-- 映射文件 -->
30 <list>
31 <value>dao/cmds/BondInfo.hbm.xml</value>
32 </list>
33 </property>
34 </bean>
35
36 <bean id="basicTransactionManager"
37 class="org.springframework.orm.hibernate3.HibernateTransactionManager">
38 <property name="sessionFactory">
39 <ref bean="basicSessionFactory" />
40 </property>
41 </bean>
42
43
44 <!-- 编程事务 -->
45 <bean id="basicTransactionTemplate"
46 class="org.springframework.transaction.support.TransactionTemplate">
47 <property name="transactionManager">
48 <ref bean="basicTransactionManager" />
49 </property>
50 </bean>
51
52 <bean id="bondInfoDAO"
53 class="BondInfoDAOImpl"
54 scope="singleton" autowire="byName">
55 <property name="sessionFactory">
56 <ref bean="basicSessionFactory" />
57 </property>
58 <property name="transactionTemplate">
59 <ref bean="basicTransactionTemplate" />
60 </property>
61 </bean>
注意这里bondInfoDAO,它使用的sessionFactory,transactionTemplate就不能缺省默认,必须指明

浙公网安备 33010602011771号