我有不同的DAO,它们具有相同的类,需要使用相同类型的dataSource的不同jdbcTemplates。有没有办法整合我的代码,所以我不需要使用这么多的复制和粘贴。
我在xml中的一个例子是:
<bean id="jdbcTemplate1" class="org.springframework.jdbc.core.JdbcTemplate">
<property name="dataSource" ref="jdbcDataSource1" />
</bean>
<bean id="jdbcDataSource1" class="com.zaxxer.hikari.HikariDataSource"
destroy-method="shutdown">
<constructor-arg>
<bean class="com.zaxxer.hikari.HikariConfig">
<constructor-arg>
<props>
<prop key="dataSource.url">dataSourceUrl
</prop>
<prop key="dataSource.user">user</prop>
<prop key="dataSource.password">password</prop>
</props>
</constructor-arg>
<property name="dataSourceClassName"
value="com.mysql.jdbc.jdbc2.optional.MysqlDataSource" />
</bean>
</constructor-arg>
</bean>
<bean id="jdbcTemplate2" class="org.springframework.jdbc.core.JdbcTemplate">
<property name="dataSource" ref="jdbcDataSource2" />
</bean>
<bean id="jdbcDataSource2" class="com.zaxxer.hikari.HikariDataSource"
destroy-method="shutdown">
<constructor-arg>
<bean class="com.zaxxer.hikari.HikariConfig">
<constructor-arg>
<props>
<prop key="dataSource.url">dataSourceUrl
</prop>
<prop key="dataSource.user">user</prop>
<prop key="dataSource.password">password</prop>
</props>
</constructor-arg>
<property name="dataSourceClassName"
value="com.mysql.jdbc.jdbc2.optional.MysqlDataSource" />
</bean>
</constructor-arg>
</bean>
正如代码所示,jdbcDataSource1
和jdbcDataSource2
是相同的。那么有没有办法巩固这两个?
答案 0 :(得分:0)
这是将相同数据源传递给两个JDBC模板的方法:
<bean id="jdbcTemplate1" class="org.springframework.jdbc.core.JdbcTemplate">
<property name="dataSource" ref="jdbcDataSource" />
</bean>
<bean id="jdbcTemplate2" class="org.springframework.jdbc.core.JdbcTemplate">
<property name="dataSource" ref="jdbcDataSource" />
</bean>
<bean id="jdbcDataSource" class="com.zaxxer.hikari.HikariDataSource"
destroy-method="shutdown">
<constructor-arg>
<bean class="com.zaxxer.hikari.HikariConfig">
<constructor-arg>
<props>
<prop key="dataSource.url">dataSourceUrl
</prop>
<prop key="dataSource.user">user</prop>
<prop key="dataSource.password">password</prop>
</props>
</constructor-arg>
<property name="dataSourceClassName"
value="com.mysql.jdbc.jdbc2.optional.MysqlDataSource" />
</bean>
</constructor-arg>
</bean>
答案 1 :(得分:0)
您可以在bean定义中保留一个模板和一个数据源。如果您的dao模板已经预定义并且您不想更改它,您仍然可以只使用一个jdbc模板,如下所示:
<bean id="yourDao1" class="package.YourDao1">
<property name="jdbcTemplate1" ref="jdbcTemplate" />
</bean>
<bean id="yourDao2" class="package.YourDao2">
<property name="jdbcTemplate2" ref="jdbcTemplate" />
</bean>
<bean id="jdbcTemplate" class="org.springframework.jdbc.core.JdbcTemplate">
<property name="dataSource" ref="jdbcDataSource" />
</bean>
<bean id="jdbcDataSource" class="com.zaxxer.hikari.HikariDataSource"
destroy-method="shutdown">
<constructor-arg>
<bean class="com.zaxxer.hikari.HikariConfig">
<constructor-arg>
<props>
<prop key="dataSource.url">dataSourceUrl
</prop>
<prop key="dataSource.user">user</prop>
<prop key="dataSource.password">password</prop>
</props>
</constructor-arg>
<property name="dataSourceClassName"
value="com.mysql.jdbc.jdbc2.optional.MysqlDataSource" />
</bean>
</constructor-arg>
</bean>