spring cloud + mybatis + seate集成

版權聲明:本文爲博主原創文章,遵循 CC 4.0 BY-SA 版權協議,轉載請附上原文出處連接和本聲明。
本文連接:gudepeng.github.io/note/2019/1…
demo樣例:github.com/gudepeng/de…mysql

一.客戶端

1.引包

<dependency>
    <groupId>com.alibaba.cloud</groupId>
    <artifactId>spring-cloud-starter-alibaba-seata</artifactId>
    <version>2.1.1.RELEASE</version>
</dependency>
複製代碼

2.編寫配置類

@Configuration
public class DataSourceConfig {

    @Bean
    @ConfigurationProperties(prefix = "spring.datasource")
    public DataSource druidDataSource() {
        DruidDataSource druidDataSource = new DruidDataSource();
        return druidDataSource;
    }

    @Primary
    @Bean("dataSource")
    public DataSourceProxy dataSource(DataSource druidDataSource) {
        return new DataSourceProxy(druidDataSource);
    }

    @Bean
    public SqlSessionFactory sqlSessionFactory(DataSourceProxy dataSourceProxy) throws Exception {
        SqlSessionFactoryBean factoryBean = new SqlSessionFactoryBean();
        factoryBean.setDataSource(dataSourceProxy);
        factoryBean.setMapperLocations(new PathMatchingResourcePatternResolver()
            .getResources("classpath*:/mapper/*.xml"));
        return factoryBean.getObject();
    }
}
複製代碼

3.修改啓動類

@SpringBootApplication(exclude = DataSourceAutoConfiguration.class)
複製代碼

4.在須要開啓分佈式事物的方法上添加註解

@GlobalTransactional
複製代碼

二.服務端

1.下載seata-server

[seata-server]{github.com/seata/seata…}git

2.修改配置文件(本文以nacos爲樣例,store記錄爲mysql)

修改conf下的registry.confgithub

registry {
  # file 、nacos 、eureka、redis、zk、consul、etcd三、sofa
  type = "nacos"

  nacos {
    serverAddr = "localhost"
    namespace = "piblic"
    cluster = "default"
  }
}

config {
  # file、nacos 、apollo、zk、consul、etcd3
  type = "nacos"

  nacos {
    serverAddr = "localhost"
    #namespace爲空,不然後面會報找不到store.db.driver-class-name找不到
    namespace = ""
  }
}
複製代碼

修改registry下的type爲nacos,配置nacos的serverAddr爲你nacos服務的地址,不要帶http和端口號。它會默認去連你的8858端口,如需修改端口,請修改nacos-config.sh文件中的端口redis

拷貝registry.conf到每一個使用seata服務的resources下spring

修改conf下nacos-config.txtsql

store.mode=db
store.db.datasource=dbcp
store.db.db-type=mysql
store.db.driver-class-name=com.mysql.jdbc.Driver
store.db.url=jdbc:mysql://127.0.0.1:3306/seata?useUnicode=true
store.db.user=mysql
store.db.password=mysql
複製代碼

修改store.mode爲db,修改對應db配置文件爲你本身的mysql。 修改service.vgroup_mapping.my_test_tx_group=default屬性 0.9.0.1版本後:my_test_tx_group修改成本身的服務名(spring.application.name)+"-seata-service-group" 0.9.0.1版本前:my_test_tx_group修改成本身的服務名(spring.application.name)+"-fescar-service-group" 能夠spring-cloud-alibaba-seata項目下的GlobalTransactionAutoConfiguration累中看到bash

GlobalTransactionAutoConfiguration

有多少個服務須要使用seata就要添加多少個ervice.vgroup_mappingapp

執行nacos-config.sh Nacos-Server-IP(Nacos-Server-IP爲你nacos服務的ip地址),在一步驟是把nacos-config.txt中的配置更新到nacos上,若是nacos-config.txt從新修改,就要從新執行該命令。或者登錄到nacos的管理界面直接進行修改。分佈式

以後添加,刪除,修改服務,在nacos配置上做對應修改便可ui

3.建立表

在上一步驟中store.db.url的database中執行建表語句(conf下db_store.sql)

在每個業務庫中執行建表語句(conf下db_undo_log.sql)

相關文章
相關標籤/搜索