/byx-container-extension-transaction

ByxContainer声明式事务扩展

Primary LanguageJavaMIT LicenseMIT

ByxContainer声明式事务扩展

该扩展需要配合ByxContainerAnnotation一起使用。

Maven引入

<repositories>
    <repository>
        <id>byx-maven-repo</id>
        <name>byx-maven-repo</name>
        <url>https://gitee.com/byx2000/maven-repo/raw/master/</url>
    </repository>
</repositories>

<dependencies>
    <dependency>
        <groupId>byx.ioc.extension</groupId>
        <artifactId>byx-container-extension-transaction</artifactId>
        <version>1.0.0</version>
    </dependency>
</dependencies>

使用步骤

  1. 引入JDBC和数据库连接池相关依赖,添加配置类,注册DataSource

    @Component
    public class DbConfig {
        @Component
        public DataSource dataSource() {
            // 返回一个DataSource
            // ...
        }
    }
  2. Dao中注入JdbcUtils,使用JdbcUtils操作数据库

    @Component
    public class MyDao {
        @Autowired
        private JdbcUtils jdbcUtils;
        
        public void dao1() {
            jdbcUtils.update("update A set value = 90");
        }
        
        public void dao2() {
            jdbcUtils.update("update B set value = 10");
        }
    }

    关于JdbcUtils的详细使用,请看这里

  3. Service中注入Dao,在希望开启事务的Service方法上标注Transactional注解

    @Component
    public class MyService {
        @Autowired
        private MyDao myDao;
    
        @Transactional
        public void service() {
            myDao.dao1();
            // 业务逻辑
            // ...
            myDao.dao2();
        }
    }

    关于声明式事务的其它细节,请看这里

  4. 通过容器获取MyService并使用

    Container container = ...;
    MyService service = container.getObject(MyService.class);
    
    // 使用service
    // ...