最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

SpringDataMongoDB多文檔事務(wù)的實(shí)現(xiàn)

 更新時(shí)間:2018年11月01日 14:31:50   作者:你喜歡的昵稱  
mongodb4.0也出來一段時(shí)間了,這個(gè)版本最為大眾期待的特性就是支持了多文檔事務(wù)。這篇文章主要介紹了SpringDataMongoDB多文檔事務(wù)的實(shí)現(xiàn),感興趣的小伙伴們可以參考一下

一、安裝MongoDB4.0.3(××)

1.1、官方安裝文檔

https://docs.mongodb.com/manual/tutorial/install-mongodb-on-red-hat/

1.2、tar.gz包下載地址

https://www.mongodb.com/download-center/community?jmp=docs

1.3、復(fù)制集官方配置

https://docs.mongodb.com/manual/administration/replica-set-member-configuration/

二、SpringProject版本依賴(×)

Spring:5.1.1.RELEASE 以上

SpringDataMongoDB:2.1.1.RELEASE 以上

三、配置MongoTransactionManager(SpringBoot使用方式)

SpringBoot 集成非常簡(jiǎn)單,配置MongoTransastionManager,目前Spring-boot-starter-data-mongodb 版本較低不支持,因此暫未驗(yàn)證,SpringBoot配置復(fù)制集參考SpringBoot相關(guān)文檔

@Configuration
static class Config extends AbstractMongoConfiguration {

  @Bean
  MongoTransactionManager transactionManager(MongoDbFactory dbFactory) { 
    return new MongoTransactionManager(dbFactory);
  }

  // ...
}

四、配置MongoTransactionManager(普通Spring項(xiàng)目)

  <context:property-placeholder location="classpath:mongo.properties" ignore-unresolvable="true"
    file-encoding="utf-8" />

  <!-- 
    重點(diǎn)配置
    1.安全配置:credentials="${mongo.user}:${mongo.password}@${mongo.database}" 
    2.單機(jī)配置:host="${mongo.host}" port="${mongo.port}"
    3.副本集配置:replica-set="${mongo.replSet}"
  -->
  <mongo:mongo-client id="mongoClient" replica-set="${mongo.replSet}">
    <mongo:client-options min-connections-per-host="${mongo.minConnectionsPerHost}"
      write-concern="SAFE"
      read-preference="NEAREST"
      threads-allowed-to-block-for-connection-multiplier="${mongo.threadsAllowedToBlockForConnectionMultiplier}"
      connect-timeout="${mongo.connectTimeout}" max-wait-time="${mongo.maxWaitTime}"
      socket-keep-alive="${mongo.socketKeepAlive}" socket-timeout="${mongo.socketTimeout}"
      max-connection-idle-time="${mongo.maxConnectionIdleTime}"
      max-connection-life-time="${mongo.maxConnectionLifeTime}"
      heartbeat-socket-timeout="${mongo.heartbeatSocketTimeout}"
      heartbeat-connect-timeout="${mongo.heartbeatConnectTimeout}"
      min-heartbeat-frequency="${mongo.minHeartbeatFrequency}"
      heartbeat-frequency="${mongo.heartbeatFrequency}" />
  </mongo:mongo-client>

  <mongo:db-factory id="mongoDbFactory" dbname="${mongo.database}"
    mongo-ref="mongoClient" />

  <bean id="mappingContext"
    class="org.springframework.data.mongodb.core.mapping.MongoMappingContext" />

  <bean id="defaultMongoTypeMapper"
    class="org.springframework.data.mongodb.core.convert.DefaultMongoTypeMapper">
    <constructor-arg name="typeKey">
      <null />
    </constructor-arg>
  </bean>

  <bean id="mappingMongoConverter"
    class="org.springframework.data.mongodb.core.convert.MappingMongoConverter">
    <constructor-arg name="mongoDbFactory" ref="mongoDbFactory" />
    <constructor-arg name="mappingContext" ref="mappingContext" />
    <property name="typeMapper" ref="defaultMongoTypeMapper" />
  </bean>

  <bean id="mongoTemplate" class="org.springframework.data.mongodb.core.MongoTemplate">
    <constructor-arg name="mongoDbFactory" ref="mongoDbFactory" />
    <constructor-arg name="mongoConverter" ref="mappingMongoConverter" />
  </bean>

  <!-- 重點(diǎn)配置 -->

  <bean id="mongoTransactionManager" class="org.springframework.data.mongodb.MongoTransactionManager">
    <constructor-arg name="dbFactory" ref="mongoDbFactory"/>
  </bean>

  <tx:annotation-driven transaction-manager="mongoTransactionManager" proxy-target-class="true"/> 

五、使用事務(wù)(×)

@Service
public class StateService {

  @Autowired
  private MongoTemplate teplate;

  @Transactional
  void someBusinessFunction(Step step) {                 
    template.insert(step);
    log.debug(1/0);
  };
});

六、Mongo.properties 配置

mongo.host=192.168.1.66
mongo.port=27017
mongo.replSet=192.168.1.66:2000,192.168.1.66:2001,192.168.1.66:2002
mongo.minConnectionsPerHost=10
mongo.threadsAllowedToBlockForConnectionMultiplier=4
mongo.connectTimeout=30000
mongo.maxWaitTime=3000
mongo.socketKeepAlive=false
mongo.socketTimeout=30000
mongo.maxConnectionIdleTime=0
mongo.maxConnectionLifeTime=0
mongo.heartbeatSocketTimeout=20000
mongo.heartbeatConnectTimeout=10000
mongo.minHeartbeatFrequency=3000
mongo.heartbeatFrequency=5000
mongo.database=labsta

七、最后是重點(diǎn)(×××××)

7.1、必須使用復(fù)制集,單節(jié)點(diǎn)不支持,mongodb4.2 會(huì)支持分片集事務(wù),復(fù)制集安裝請(qǐng)自行研究
7.2、使用事務(wù)之前(@Transaction),數(shù)據(jù)庫(kù)和文檔必須提前創(chuàng)建,如何解決呢?且看下篇
7.3、Spring版本和SpringDataMongodb版本必須遵循 @SpringProject版本依賴
7.4、注意,此處的復(fù)制集不是4.0版本之前的主從復(fù)制集群,4.0之后已廢棄主從模式

以上就是本文的全部?jī)?nèi)容,希望對(duì)大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。

相關(guān)文章

  • java解析xml之dom4j解析xml示例分享

    java解析xml之dom4j解析xml示例分享

    DOM4J具有性能優(yōu)異、功能強(qiáng)大和極端易用使用的特點(diǎn),只要懂得DOM基本概念,就可以通過dom4j的api文檔來解析xml,dom4j是一套開源的api。實(shí)際項(xiàng)目中,往往選擇dom4j來作為解析xml的利器
    2014-01-01
  • SpringBoot優(yōu)化啟動(dòng)速度的方法實(shí)現(xiàn)

    SpringBoot優(yōu)化啟動(dòng)速度的方法實(shí)現(xiàn)

    本篇文章主要介紹了SpringBoot優(yōu)化啟動(dòng)速度的方法實(shí)現(xiàn),小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過來看看吧
    2018-01-01
  • Spring動(dòng)態(tài)添加定時(shí)任務(wù)的實(shí)現(xiàn)思路

    Spring動(dòng)態(tài)添加定時(shí)任務(wù)的實(shí)現(xiàn)思路

    這篇文章主要介紹了Spring動(dòng)態(tài)添加定時(shí)任務(wù)的實(shí)現(xiàn)思路,本文通過實(shí)例代碼給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2021-07-07
  • SpringBoot使用除了Jasypt對(duì)YML文件配置內(nèi)容進(jìn)行加密方式

    SpringBoot使用除了Jasypt對(duì)YML文件配置內(nèi)容進(jìn)行加密方式

    文章介紹了如何在Java項(xiàng)目中使用Jasypt進(jìn)行加密和解密,包括在pom.xml中添加依賴、在application.yml中配置信息、創(chuàng)建解密Bean以及確保秘鑰和算法的一致性
    2025-11-11
  • java 異常的實(shí)例詳解

    java 異常的實(shí)例詳解

    這篇文章主要介紹了java 異常的實(shí)例詳解的相關(guān)資料,希望通過本文大家能徹底掌握java異常的使用方法,需要的朋友可以參考下
    2017-09-09
  • 學(xué)習(xí)Java中Class類及其用法

    學(xué)習(xí)Java中Class類及其用法

    這篇文章分為三大部分,主要內(nèi)容有Class類原理詳解、用法及泛化,需要的朋友可以參考下
    2015-07-07
  • idea?maven依賴引入失效無法正常導(dǎo)入依賴問題的解決方法

    idea?maven依賴引入失效無法正常導(dǎo)入依賴問題的解決方法

    有時(shí)候idea導(dǎo)入一個(gè)新項(xiàng)目,或者pom文件修改(新增)了依賴,pom文件和代碼會(huì)報(bào)紅,提示依賴包不存在,下面這篇文章主要給大家介紹了關(guān)于idea?maven依賴引入失效無法正常導(dǎo)入依賴問題的解決方法,需要的朋友可以參考下
    2023-04-04
  • MyBatis一對(duì)多嵌套查詢的完整實(shí)例

    MyBatis一對(duì)多嵌套查詢的完整實(shí)例

    這篇文章主要給大家介紹了關(guān)于MyBatis一對(duì)多嵌套查詢的相關(guān)資料,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2021-01-01
  • java 分割csv數(shù)據(jù)的實(shí)例詳解

    java 分割csv數(shù)據(jù)的實(shí)例詳解

    這篇文章主要介紹了java 分割csv數(shù)據(jù)的實(shí)例詳解的相關(guān)資料,這里提供了簡(jiǎn)單實(shí)例,需要的朋友可以參考下
    2017-07-07
  • 解密Spring?Boot深入理解條件裝配與條件注解

    解密Spring?Boot深入理解條件裝配與條件注解

    條件注解是一種特殊的注解,用于標(biāo)記在配置類、組件類或方法上,它們根據(jù)某些條件的結(jié)果來決定是否應(yīng)用相應(yīng)的配置或組件,這篇文章主要介紹了解密Spring?Boot深入理解條件裝配與條件注解,需要的朋友可以參考下
    2024-06-06

最新評(píng)論

宣化县| 车险| 彰化市| 美姑县| 明水县| 隆回县| 荣昌县| 安阳市| 平阴县| 静安区| 游戏| 泸州市| 仙桃市| 化隆| 惠水县| 安龙县| 揭西县| 通渭县| 龙岩市| 天峻县| 屯昌县| 武邑县| 静乐县| 惠水县| 曲靖市| 兰州市| 清水河县| 大荔县| 石台县| 北海市| 祁连县| 客服| 乌海市| 和林格尔县| 定安县| 鲁甸县| 麻栗坡县| 区。| 来宾市| 延吉市| 潢川县|