Spring: transaction
声明式:
dependencies { implementation 'org.springframework.boot:spring-boot-starter-web' implementation 'org.springframework.boot:spring-boot-starter-aop:2.7.0' implementation group: 'org.springframework', name: 'spring-aspects', version: '5.3.18' implementation('org.springframework:spring-jdbc:5.3.20') implementation('com.alibaba:druid-spring-boot-starter:1.2.9') implementation('mysql:mysql-connector-java:8.0.29') compileOnly 'org.projectlombok:lombok' annotationProcessor 'org.projectlombok:lombok' testImplementation 'org.springframework.boot:spring-boot-starter-test' }
配置类
@Configuration public class Config{ @Bean public DataSource dataSource(){ DruidDataSource druidDataSource = new DruidDataSource(); druidDataSource.setUrl("jdbc:mysql://localhost:3306/java"); druidDataSource.setUsername("root"); druidDataSource.setPassword("coalesce"); druidDataSource.setDriverClassName("com.mysql.cj.jdbc.Driver"); return druidDataSource; } @Bean public JdbcTemplate jdbcTemplate(DataSource dataSource){ return new JdbcTemplate(dataSource); } @Bean public TransactionManager transactionManager(DataSource dataSource){ return new DataSourceTransactionManager(dataSource); } }
DAO:
@Repository public class VengeDao{ @Autowired private JdbcTemplate jdbcTemplate; public int insert(){ String sql = "INSERT INTO auth (name,password) VALUES (?,?)"; String name = UUID.randomUUID().toString().substring(0, 5); Random random = new Random(); Integer password = random.nextInt(1000, 10000); int update = jdbcTemplate.update(sql, name, password); int b = 10 / 0; return update; } }
Service
@Service @EnableTransactionManagement public class VengeService{ @Autowired private VengeDao vengeDao; @Transactional public int insertVenge(){ return vengeDao.insert(); } }
@ComponentScan("io.vent.venial") public class VenialApplication{ public static void main(String[] args){ AnnotationConfigApplicationContext context = new AnnotationConfigApplicationContext(); context.registerBean(VenialApplication.class); context.refresh(); VengeService vengeService = context.getBean(VengeService.class); System.out.println("vengeService.insertVenge() = " + vengeService.insertVenge()); for(String beanDefinitionName : context.getBeanDefinitionNames()){ System.out.println("\033[37;7m>>>>>> " + beanDefinitionName + " <<<<<<\033[0m"); } context.close(); } }
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 震惊!C++程序真的从main开始吗?99%的程序员都答错了
· 【硬核科普】Trae如何「偷看」你的代码?零基础破解AI编程运行原理
· 单元测试从入门到精通
· 上周热点回顾(3.3-3.9)
· winform 绘制太阳,地球,月球 运作规律
2020-06-05 spec文件汇总
2020-06-05 rpm用法指南
2020-06-05 rpmbuild制作rpm包
2020-06-05 fpm制作rpm包