微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

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();
  }
}

 

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐