mongoDB(spring 部分配置)

來源:互聯網
上載者:User

標籤:

 <!-- 定義mongo對象,對應的是mongodb官方jar包中的Mongo,replica-set設定叢集副本的ip地址和連接埠 --> <mongo:mongo id="mongo" replica-set="${mongo.hostport}">  <mongo:options    connections-per-host="${mongo.connectionsPerHost}"    threads-allowed-to-block-for-connection-multiplier="${mongo.threadsAllowedToBlockForConnectionMultiplier}"    connect-timeout="${mongo.connectTimeout}"    max-wait-time="${mongo.maxWaitTime}"             auto-connect-retry="${mongo.autoConnectRetry}"             socket-keep-alive="${mongo.socketKeepAlive}"             socket-timeout="${mongo.socketTimeout}"             slave-ok="${mongo.slaveOk}"             write-number="1"             write-timeout="0"             write-fsync="true"  /> </mongo:mongo>   <!-- mongo的工廠,通過它來取得mongo執行個體,dbname為mongodb的資料庫名,沒有的話會自動建立  mongo-ref="mongo" 與<mongo:mongo id="mongo" 相依賴  -->   <mongo:db-factory dbname="Data" mongo-ref="mongo"/>       <!-- mongodb的主要操作對象,所有對mongodb的增刪改查的操作都是通過它完成   -->    <bean id="mongoTemplate" class="org.springframework.data.mongodb.core.MongoTemplate">          <constructor-arg name="mongoDbFactory" ref="mongoDbFactory" />      </bean>   #Mongodb 一  Settingmongo.hostport=127.0.0.1:27017mongo.connectionsPerHost=8mongo.threadsAllowedToBlockForConnectionMultiplier=4#連線逾時時間mongo.connectTimeout=1000#等待時間mongo.maxWaitTime=1500mongo.autoConnectRetry=truemongo.socketKeepAlive=true#Socket逾時時間mongo.socketTimeout=1500mongo.slaveOk=true  MySql(採用Proxool串連池技術)Proxool是一種Java資料庫連接池技術。proxool-0.9.1.jarproxool-cglib-0.9.1.jar 第一步:在web.xml中調用對應的applicationContext-proxool.xml例如:web.xml中的(*為萬用字元,可以查詢到applicationContext-proxool.xml)  <context-param>       <param-name>contextConfigLocation</param-name>       <param-value>classpath*:applicationContext*.xml</param-value>  </context-param> 第二步:在applicationContext-proxool.xml中寫串連池 <bean id="dataSourceTarget" class="org.logicalcobwebs.proxool.ProxoolDataSource">   <property name="driver" value="${jdbc.driverClassName}" />  <property name="driverUrl" value="${jdbc.url}"></property>  <property name="user" value="${jdbc.username}" />  <property name="password" value="${jdbc.password}" />   <property name="alias" value="site_ds" />  <!-- 最少保持的空閑串連數 -->  <property name="prototypeCount" value="${proxool.prototypeCount}" />  <!-- 允許最大串連數,超過了這個串連,再有請求時,就排在隊列中等候,最大的等待請求數由simultaneousBuildThrottle決定 -->  <property name="maximumConnectionCount" value="${proxool.maximumConnectionCount}" />  <!-- 最小串連數 -->  <property name="minimumConnectionCount" value="${proxool.minimumConnectionCount}" />  <!-- 一個線程持有一個串連的最長時間,而不管這個串連是否處於 active 狀態, 並且如果線程的持有時間超過這個時間的之後會自動清除掉這個串連.   但是很多時候5分鐘並不夠用, 所以需要在設定檔中進行設定, 其單位為毫秒(ms). -->  <property name="maximumActiveTime" value="86400000" />  <!-- 指因未有空閑串連可以分配而在隊列中等候的最大請求數,超過這個請求數的使用者串連就不會被接受 -->  <property name="simultaneousBuildThrottle" value="50" />  <property name="houseKeepingTestSql" value="select CURRENT_DATE" /></bean><!--
Spring官方推薦使用LazyConnectionDataSourceProxy
(http://static.springsource.org/spring/docs/2.5.6/api/org/springframework/jdbc/datasource/LazyConnectionDataSourceProxy.html)。 
目的: 1).解決Hiberante命中cache時,會對資料庫發起SET autocommit=0,commit,SET autocommit=0操作問題; 
2).解決read_only事務對效能的影響問題 -->
<!-- 個人覺得是用來管理資料來源的 -->
<bean id="dataSource"
class="org.springframework.jdbc.datasource.LazyConnectionDataSourceProxy">
<property name="targetDataSource">
<ref local="dataSourceTarget" />
</property>
</bean> 
<bean id="transactionManager"
class="org.springframework.jdbc.datasource.DataSourceTransactionManager" lazy-init="true">
<property name="dataSource" ref="dataSource" />
</bean>
<bean id= "nameMatch" class= "org.springframework.transaction.interceptor.NameMatchTransactionAttributeSource" >
    <property name= "properties" >
         <props>              
<prop key="*">PROPAGATION_REQUIRED</prop>
          </props>
    </property>
 </bean> <!--利用了攔截器的原理。 --> <bean id="transactionInterceptor"  class="org.springframework.transaction.interceptor.TransactionInterceptor">   <!--   事務攔截器bean需要依賴注入一個交易管理員 -->  <property name="transactionManager">   <ref bean="transactionManager" />  </property>  <!--事務傳播屬性 -->  <property name="transactionAttributeSource">   <ref bean="nameMatch" />  </property> </bean> <bean id="txProxy"  class="org.springframework.aop.framework.autoproxy.BeanNameAutoProxyCreator">  <property name="beanNames">   <list>    <value>*Manager</value>    <value>*Service</value>   </list>  </property>  <property name="interceptorNames">   <list>    <value>transactionInterceptor</value>   </list>  </property> </bean> <!--1:配置一個JdbcTemplate執行個體,並將這個“共用的”,“安全的”執行個體注入到不同的DAO類中去 --> <bean id="jdbcTemplate" class="org.springframework.jdbc.core.JdbcTemplate">  <property name="dataSource" ref="dataSource"/> </bean>  第三步:由於在applicationContext-proxool.xml寫參數麻煩,把參數寫在applicationContext-database.properties如下:#SQL DB Setttingjdbc.driverClassName=com.mysql.jdbc.Driverjdbc.url=jdbc\:mysql\://127.0.0.1\:3306/databasejdbc.username=rootjdbc.password=rootproxool.maximumConnectionCount=50proxool.minimumConnectionCount=1proxool.prototypeCount=1

mongoDB(spring 部分配置)

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.