该扩展需要配合ByxContainerAnnotation一起使用。
<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>
-
引入JDBC和数据库连接池相关依赖,添加配置类,注册
DataSource
@Component public class DbConfig { @Component public DataSource dataSource() { // 返回一个DataSource // ... } }
-
在
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
的详细使用,请看这里。 -
在
Service
中注入Dao
,在希望开启事务的Service
方法上标注Transactional
注解@Component public class MyService { @Autowired private MyDao myDao; @Transactional public void service() { myDao.dao1(); // 业务逻辑 // ... myDao.dao2(); } }
关于声明式事务的其它细节,请看这里。
-
通过容器获取
MyService
并使用Container container = ...; MyService service = container.getObject(MyService.class); // 使用service // ...