接Spring+Struts+ibatis下配置数据读写分离及事务(一) :
5.配置配置spring-datasource.xml(可以根据需求自己定义名字,或者写在spring主配置文件中)
<?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:aop="http://www.springframework.org/schema/aop"
xmlns:tx="http://www.springframework.org/schema/tx" xmlns:context="http://www.springframework.org/schema/context"
xsi:schemaLocation="
http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context-2.5.xsd
http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-2.5.xsd
http://www.springframework.org/schema/aop http://www.springframework.org/schema/aop/spring-aop-2.5.xsd
http://www.springframework.org/schema/tx http://www.springframework.org/schema/tx/spring-tx-2.5.xsd">
<!--加载数据源JDBC属性文件 -->
<bean id="propertyConfig"
class="org.springframework.beans.factory.config.PreferencesPlaceholderConfigurer">
<property name="locations">
<list>
<value>classpath:jdbc.properties</value>
</list>
</property>
</bean>
<!--数据源公共属性 -->
<bean id="parentDataSource" class="org.apache.commons.dbcp.BasicDataSource"
destroy-method="close">
<property name="initialSize" value="10" />
<property name="maxActive" value="100" />
<property name="maxIdle" value="30" />
<property name="minIdle" value="10" />
<property name="logAbandoned" value="true" />
<property name="removeAbandoned" value="true" />
<property name="removeAbandonedTimeout" value="100" />
<property name="maxWait" value="5000" />
<property name="testOnBorrow" value="true"/>
<property name="testOnReturn" value="true"/>
<property name="testWhileIdle" value="true"/>
<property name="minEvictableIdleTimeMillis" value="0"></property>
<property name="timeBetweenEvictionRunsMillis" value="60"></property>
</bean>
<!--配置主数据源(负责数据UPDATE操作) -->
<bean id="masterDataSource" parent="parentDataSource">
<property name="driverClassName" value="${master.jdbc.driverClassName}" />
<property name="url" value="${master.jdbc.url}" />
<property name="username" value="${master.jdbc.username}" />
<property name="password" value="${master.jdbc.password}" />
<property name="validationQuery" value="SELECT COUNT(1) FROM tbl_test"></property>
</bean>
<!--配置主数据源(负责数据UPDATE操作) -->
<bean id="slaveDataSource" parent="parentDataSource">
<property name="driverClassName" value="${slave.jdbc.driverClassName}" />
<property name="url" value="${slave.jdbc.url}" />
<property name="username" value="${slave.jdbc.username}" />
<property name="password" value="${slave.jdbc.password}" />
<property name="validationQuery" value="SELECT COUNT(1) FROM tbl_test"></property>
</bean>
<!--配置数据源 -->
<bean id="dataSource" class="com.ssi222.wilr.util.datasource.DynamicDataSource">
<property name="targetDataSources">
<map key-type="java.lang.String">
<entry key="master" value-ref="masterDataSource" />
<entry key="slave" value-ref="slaveDataSource" />
</map>
</property>
<property name="defaultTargetDataSource" ref="masterDataSource"></property>
</bean>
<!--Spring|Ibatis整合 -->
<bean id="sqlMapClient" class="org.springframework.orm.ibatis.SqlMapClientFactoryBean">
<property name="configLocations">
<list>
<value>classpath:config/ibatis.xml</value>
</list>
</property>
<property name="dataSource">
<ref local="dataSource" />
</property>
</bean>
<!--配置持久模型层 -->
<bean id="presentation" class="com.ssi222.wilr.presentation.impl.PresentationImpl">
<property name="sqlMapClient">
<ref local="sqlMapClient" />
</property>
</bean>
<!--配置业务模型层基础类 -->
<bean id="baseService" class="com.ssi222.wilr.service.impl.BaseServiceImpl">
<property name="presentation">
<ref local="presentation" />
</property>
</bean>
</beans>
分享到:
相关推荐
在数据读写分离的场景下,Struts可以配合Spring进行事务控制,通过Action的配置来决定事务的边界。例如,一个Action可能对应一个数据库的写操作,另一个Action则负责多个读操作。这样,Struts可以在Spring的事务管理...
这个"ibatis+spring+struts完整例子数据同步程序"就是一个典型的Java EE应用程序,它整合了三个关键的开源框架:Struts、Spring和iBatis。这些框架分别负责表现层、业务层和服务层的管理,提供了一个强大的开发工具...
而iBatis则作为一个持久层框架,简化了SQL操作,实现了数据访问层与业务逻辑的分离。 在这个项目中,"SSi实现文件上传下载功能"主要是利用Struts2的Action类和拦截器来处理HTTP请求,Spring来管理服务层对象,以及...
Struts2、Spring2 和 iBatis 是三个在Java Web开发中非常重要的开源框架,它们分别负责MVC模式中的Action层、依赖注入及业务层的数据访问。本项目整合了这三个框架,提供了一个完整的代码实现,方便开发者快速搭建...
在`spring事务处理.txt`中,可能会详细阐述Spring的声明式事务管理,包括基于注解和基于XML的配置,如何处理事务异常,以及如何实现事务的隔离级别和读写策略。 3. **Spring + Hibernate + Struts2整合** 这种...
这个包包含了一系列与这两个框架相关的库文件,为开发者提供了集成Spring MVC和iBATIS的便捷途径,以实现高效、灵活的业务逻辑处理和数据访问。 Spring MVC是Spring框架的一部分,它是一个基于模型-视图-控制器...
1. **10.1 概述**:Spring可以通过Servlet监听器、DispatcherServlet、MVC配置等方式与其他Web框架如Struts、JSF集成,实现业务逻辑和展示层的分离。 2. **10.2 集成Struts1.x**:Spring可以作为Struts的动作处理器...
9.6.2 高速缓存可读写数据 169 9.6.3 高速缓存旧的静态数据 170 9.7 小结 172 第10章 iBATIS数据访问对象 173 10.1 隐藏实现细节 173 10.1.1 为何要分离 174 10.1.2 一个简单示例 175 10.2 配置DAO 177 10.2.1 ...
Spring还提供了事务管理、数据源配置等企业级服务,以及对其他框架(如Hibernate、MyBatis)的集成。 **Ibatis**是一个轻量级的ORM(对象关系映射)框架,它的主要作用是简化SQL操作,将数据库查询与Java代码解耦。...
- **具体框架**:Struts1和2提供表现层支持,Spring提供业务层服务,Hibernate和iBATIS处理数据持久化。 4. **Java高级软件工程师**: - **开源技术与框架**:如工作流引擎、规则引擎、搜索引擎、缓存、任务调度...
2. Spring事务的传播行为:包括PROPAGATION_REQUIRED(默认,当前事务存在则加入,不存在则新建)、PROPAGATION_SUPPORTS(支持当前事务,如果无事务则以非事务执行)、PROPAGATION_MANDATORY(必须存在当前事务,...
读写分离 性能优化架构能力 代码级别 关联代码优化 cache对其 分支预测 copy on write 内联优化 系统优化 cache 延迟计算 数据预读 异步 轮询与通知 内存池 模块化 工程架构能力 开发语言 运维与...
Spring框架中的声明式事务管理,允许开发者在配置文件中声明事务边界,而不是在代码中显式处理。这种方式降低了事务管理对业务逻辑的影响,提高了代码的可维护性。 11. 数据持久化: 数据持久化是将内存中的数据...
- **Spring框架**:掌握Spring的核心容器、AOP、事务管理等技术。 ##### 实战项目 - **OA系统**:基于Spring + Struts + Hibernate开发办公自动化系统。 - **CRM系统**:实现客户关系管理系统,涉及客户信息管理、...
字节流与字符流的区别:字节流用于读写二进制数据,字符流用于读写文本数据。 final、finally、finalize三者区别:final用于声明常量,finally用在try-catch-finally语句中表示必须执行的代码块,finalize是Object...
4. **hibernate-ehcache.jar**:用于整合EhCache缓存系统,提升读写性能,适用于需要二级缓存的应用场景。 5. **antlr.jar**:ANTLR是一个强大的解析器生成器,被Hibernate用于解析HQL(Hibernate Query Language)...
Java 6 RowSet 使用完全剖析 结合Spring2.0和ActiveMQ进行异步消息调用 struts+hibernate增删改查(一) AXIS 布署问题 struts+hibernate增删改查(二) MySQL中如何实现Top N及M至N段的记录查询?...
Java面试题72:数据库的读写分离 Java面试题73:数据库优化之缓存 Java面试题74:sql语句优化小技巧 Java面试题75:批量插入几百万条数据 Java面试题76:有没有使用过redis Java面试题77:redis的使用场景 Java面试...