1、声明式事务管理
步骤一:添加Spring和JDBC的依赖
<dependencies> <!-- Spring Core --> <dependency> <groupId>org.springframework</groupId> <artifactId>spring-context</artifactId> <version>你的Spring版本</version> </dependency> <!-- Spring JDBC --> <dependency> <groupId>org.springframework</groupId> <artifactId>spring-jdbc</artifactId> <version>你的Spring版本</version> </dependency> <!-- 数据库连接池,如HikariCP --> <dependency> <groupId>com.zaxxer</groupId> <artifactId>HikariCP</artifactId> <version>你的HikariCP版本</version> </dependency> <!-- JDBC驱动,如MySQL --> <dependency> <groupId>mysql</groupId> <artifactId>mysql-connector-java</artifactId> <version>你的MySQL驱动版本</version> </dependency> <!-- 其他依赖... -->
</dependencies>
步骤二:配置数据源和事务管理器
在Java配置类中配置数据源和事务管理器
import javax.sql.DataSource;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.jdbc.datasource.DataSourceTransactionManager;
import org.springframework.jdbc.datasource.DriverManagerDataSource;
import com.zaxxer.hikari.HikariConfig;
import com.zaxxer.hikari.HikariDataSource; @Configuration
public class AppConfig { @Bean public DataSource dataSource() { HikariConfig config = new HikariConfig(); config.setJdbcUrl("jdbc:mysql://localhost:3306/mydb"); config.setUsername("root"); config.setPassword("secret"); // ... 其他配置 return new HikariDataSource(config); } @Bean public DataSourceTransactionManager transactionManager(DataSource dataSource) { return new DataSourceTransactionManager(dataSource); } // 其他Bean定义...
}
步骤三:启用声明式事务管理
在配置类上使用@EnableTransactionManagement注解来启用声明式事务管理:
import org.springframework.context.annotation.EnableTransactionManagement; @Configuration
@EnableTransactionManagement
public class AppConfig { // ... 之前的配置
}
步骤四:在需要事务的方法上使用@Transactional
注解
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional; @Service
public class MyService { @Autowired private MyRepository myRepository; // 假设MyRepository是一个DAO或Repository接口 @Transactional public void createAndSaveEntity(Entity entity) { // ... 业务逻辑,可能会涉及多个数据库操作 myRepository.save(entity); // 如果有其他数据库操作,它们也会在这个事务中执行 } // 其他方法...
}
步骤五:创建Spring容器并运行
创建一个Spring容器来加载你的配置类并运行你的应用。通过在main方法中调用AnnotationConfigApplicationContext或ClassPathXmlApplicationContext来完成
import org.springframework.context.annotation.AnnotationConfigApplicationContext; public class MainApp { public static void main(String[] args) { AnnotationConfigApplicationContext context = new AnnotationConfigApplicationContext(AppConfig.class); // 从容器中获取你的服务类并使用它 MyService myService = context.getBean(MyService.class); myService.