假设有两台数据库服务器:192.168.0.1(写) 和192.168.0.2(读)
那么在applicationContext.xml中应配置两个数据源,一个读,一个写:
<bean id="dataSource"
class="com.alibaba.druid.pool.DruidDataSource"
destroy-method="close"
init-method="init"
lazy-init="false"
p:url="${datasource.url}"
p:username="${datasource.username}"
p:password="${datasource.password}"
p:maxActive="200"
p:minIdle="50"
p:maxWait="10000"
p:testWhileIdle="true"
p:validationQuery="select sysdate()"
p:filters="stat"
/>
<bean id="template" class="org.springframework.jdbc.core.JdbcTemplate" p:dataSource-ref="dataSource" />
<bean id="dataSource1"
class="com.alibaba.druid.pool.DruidDataSource"
destroy-method="close"
init-method="init"
lazy-init="false"
p:url="${datasource.read.url}"
p:username="${datasource.read.username}"
p:password="${datasource.read.password}"
p:maxActive="200"
p:minIdle="50"
p:maxWait="10000"
p:testWhileIdle="true"
p:validationQuery="select sysdate()"
p:filters="stat"
/>
<bean id="templateRead" class="org.springframework.jdbc.core.JdbcTemplate" p:dataSource-ref="dataSource1" />
然后在dao.java中配置两个jdbcTemplate:
@Autowired
private JdbcTemplate template;
@Autowired
private JdbcTemplate templateRead;
读操作的时候用templateRead,写操作的时候用template
ps:数据库的同步操作将在后续贴出
本文介绍如何在Spring应用中配置两个Druid数据源实现读写分离。通过在applicationContext.xml中定义两个数据源,分别用于读取(192.168.0.2)和写入(192.168.0.1)操作,并在DAO层注入相应的JdbcTemplate实例。
324

被折叠的 条评论
为什么被折叠?



