当某个spring方法为private时,或 调用某个方法未通过代理调用时,则无法使用@Transactional的方式处理事务,而需要手动处理,具体方式如下

//指定事务对应的数据库连接
@Resource(name = "driverMallTx")
private PlatformTransactionManager transactionManager;


private void dth(){
DefaultTransactionDefinition def = new DefaultTransactionDefinition();
    // 设置隔离级别等属性
    def.setIsolationLevel(TransactionDefinition.ISOLATION_REPEATABLE_READ);

    TransactionStatus status = transactionManager.getTransaction(def);
    boolean success = true;
    try {
        doSomeThing();
    } catch (Exception e) {
        success = false;
        throw e;
    }finally {
        if(success){
            transactionManager.commit(status);
        }else {
            transactionManager.rollback(status);
        }
    }


}