1. 程式人生 > >J2EE專案使用自定義註解實現基於SpringMVC + Mybatis + Mysql的讀寫分離

J2EE專案使用自定義註解實現基於SpringMVC + Mybatis + Mysql的讀寫分離

複製程式碼
<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans" xmlns:context="http://www.springframework.org/schema/context"
    xmlns:p="http://www.springframework.org/schema/p" xmlns:tx="http://www.springframework.org/schema/tx" xmlns:aop="http://www.springframework.org/schema/aop"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-3.2.xsd http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context-3.2.xsd http://www.springframework.org/schema/tx http://www.springframework.org/schema/tx/spring-tx-3.2.xsd http://www.springframework.org/schema/aop http://www.springframework.org/schema/aop/spring-aop-3.2.xsd"
> <context:component-scan base-package="com.xiao" /> <aop:aspectj-autoproxy/> <!-- 引入屬性檔案 --> <context:property-placeholder location="classpath:application.properties" /> <!-- 資料來源配置,使用應用內的proxool資料庫連線池 --> <bean id="business_write" class
="org.logicalcobwebs.proxool.ProxoolDataSource"> <!-- Connection Info destroy-method="close" --> <property name="driver" value="${jdbc.driver}" /> <property name="driverUrl" value="${business.write.url}" /> <property name="user" value="${business.write.username}" /> <property name="password" value="${business.write.password}" /> <property name="alias" value="master_db" /> <!-- 測試的SQL執行語句 --> <property name="houseKeepingTestSql" value="select count(*) from dual" /> <!-- 最少保持的空閒連線數 (預設2個) --> <property name="prototypeCount" value="${jdbc.prototypeCount}" /> <!-- proxool自動偵察各個連線狀態的時間間隔(毫秒),偵察到空閒的連線就馬上回收,超時的銷燬 預設30秒) --> <property name="houseKeepingSleepTime" value="${jdbc.hourseKeepingSleepTime}" /> <!-- 最大活動時間(毫秒)(超過此時間執行緒將被kill,預設為5分鐘) --> <property name="maximumActiveTime" value="${jdbc.maximumActiveTime}" /> <!-- 連線最長時間(毫秒)(預設為4個小時) --> <property name="maximumConnectionLifetime" value="${jdbc.maximumConnectionLifetime}" /> <!-- 最小連線數 (預設2個) --> <property name="minimumConnectionCount" value="${jdbc.minimumConnectionCount}" /> <!-- 最大連線數 (預設5個) --> <property name="maximumConnectionCount" value="${jdbc.maximumConnectionCount}" /> </bean> <bean id="business_read" class="org.logicalcobwebs.proxool.ProxoolDataSource"> <!-- Connection Info destroy-method="close" --> <property name="driver" value="${jdbc.driver}" /> <property name="driverUrl" value="${business.read.url}" /> <property name="user" value="${business.read.username}" /> <property name="password" value="${business.read.password}" /> <property name="alias" value="slave_db" /> <!-- 測試的SQL執行語句 --> <property name="houseKeepingTestSql" value="select count(*) from dual" /> <!-- 最少保持的空閒連線數 (預設2個) --> <property name="prototypeCount" value="${jdbc.prototypeCount}" /> <!-- proxool自動偵察各個連線狀態的時間間隔(毫秒),偵察到空閒的連線就馬上回收,超時的銷燬 預設30秒) --> <property name="houseKeepingSleepTime" value="${jdbc.hourseKeepingSleepTime}" /> <!-- 最大活動時間(毫秒)(超過此時間執行緒將被kill,預設為5分鐘) --> <property name="maximumActiveTime" value="${jdbc.maximumActiveTime}" /> <!-- 連線最長時間(毫秒)(預設為4個小時) --> <property name="maximumConnectionLifetime" value="${jdbc.maximumConnectionLifetime}" /> <!-- 最小連線數 (預設2個) --> <property name="minimumConnectionCount" value="${jdbc.minimumConnectionCount}" /> <!-- 最大連線數 (預設5個) --> <property name="maximumConnectionCount" value="${jdbc.maximumConnectionCount}" /> </bean> <bean id="dataSource" class="com.xiao.weixin.common.jdbc.DynamicDataSource"> <property name="targetDataSources"> <map> <entry key="business_write" value-ref="business_write" /> <entry key="business_read" value-ref="business_read" /> </map> </property> <property name="defaultTargetDataSource" ref="business_write" /> </bean> <!-- 執行緒池配置 --> <bean id="taskExecutor" class="org.springframework.scheduling.concurrent.ThreadPoolTaskExecutor"> <!-- 執行緒池活躍的執行緒數 --> <property name="corePoolSize" value="5" /> <!-- 執行緒池最大活躍的執行緒數 --> <property name="maxPoolSize" value="10" /> <!-- 佇列的最大容量 --> <property name="queueCapacity" value="25" /> </bean> <!-- myBatis檔案 --> <bean id="sqlSessionFactory" class="org.mybatis.spring.SqlSessionFactoryBean"> <property name="dataSource" ref="dataSource" /> <!-- 自動掃描entity目錄, 省掉Configuration.xml裡的手工配置 --> <property name="mapperLocations" value="classpath:com/xiao/**/*Mapper.xml" /> <!-- <property name="configLocation" value="classpath:mybatisMapConfig.xml" />--> </bean> <!-- myBatis Mapper檔案 --> <bean class="org.mybatis.spring.mapper.MapperScannerConfigurer"> <property name="basePackage" value="com.xiao.**.dao" /> <property name="sqlSessionFactoryBeanName" value="sqlSessionFactory" /> </bean> <!-- 事務管理器配置 --> <bean id="transactionManager" class="org.springframework.jdbc.datasource.DataSourceTransactionManager"> <property name="dataSource" ref="dataSource" /> </bean> <!-- 使用annotation定義事務 --> <tx:annotation-driven transaction-manager="transactionManager" order="2"/> <!-- Spring jdbcTemplate配置 --> <bean id="jdbcTemplate" class="org.springframework.jdbc.core.JdbcTemplate"> <property name="dataSource" ref="dataSource" /> </bean> <bean id="xiaoFilter" class="com.xiao.weixin.common.filter.XiaoFilter" /> <import resource="spring-mybatis_quartz.xml"/> <!-- 引入shiro 快取配置 --> <import resource="applicationContext-shiro.xml"/> <!-- 引入國際化 配置--> <import resource="spring-i18n.xml"/> </beans>
複製程式碼