SpringBoot 事务@Transactional 简单实现使用

9 篇文章 0 订阅
4 篇文章 0 订阅

  搞这个东西搞了两天都没搞明白,感觉都快愁死了,网上的文章一水的说要弄什么xml文件,关键是还不说放在哪里?蓝瘦香菇!!!!!!!!!

  这个东西的生效是有条件的,你在后台程序初始化的时候直接使用该注解是无效的,没有任何卵用,这个东西需要结合**@Component、@Repository、@Service、@Controller**这四个注解相关的类才会生效,否则任你怎么操作也是没用了。

***ps:***要注意一点的是不要想着用代码去实现事务的实现,没卵用,我实现了两天的时间,结果还是没有成功,所以大家就不要浪费功夫了。

  下面我贴下我实现的代码,很简单,但是还是花了好长时间去实现:

import org.springframework.context.ConfigurableApplicationContext
import org.springframework.stereotype.Service
import org.springframework.transaction.annotation.Transactional
import org.springframework.transaction.interceptor.TransactionAspectSupport

/**
 * 功能作用:数据库表版本控制操作类
 * 创建时间:2019-10-10 下午 15:16:31
 * 创建人:王亮(Loren wang)
 * 思路:
 * 方法:
 * 注意:
 * 修改人:
 * 修改时间:
 * 备注:
 */
@Service
open class DataBaseTableVersionUpdateOptions {
    //数据库表版本表操作实例
    private lateinit var databaseTableVersionRepository: DatabaseTableVersionRepository;

    @Transactional
    fun initData(applicationContext: ConfigurableApplicationContext) {
        try {
            LogUtils.instance.logI(javaClass, "开始执行版本${Setting.DATABASE_TABLE_VERSIONNAME}的更新")
            //获取数据库表版本表操作实例
            databaseTableVersionRepository = applicationContext.getBean(DatabaseTableVersionRepository::class.java)
            val tableVersion = databaseTableVersionRepository.findDatabaseTableVersionTbByVersionCodeAndVersionName(Setting.DATABASE_TABLE_VERSIONCODE!!, Setting.DATABASE_TABLE_VERSIONNAME!!)
            if (tableVersion == null) {
                when (Setting.DATABASE_TABLE_VERSIONCODE) {
                    100L -> {

                    }
                    else -> {

                    }
                }

                //保存版本信息
                val databaseTableVersionTb = DatabaseTableVersionTb()
                databaseTableVersionTb.versionName = Setting.DATABASE_TABLE_VERSIONNAME
                databaseTableVersionTb.versionCode = Setting.DATABASE_TABLE_VERSIONCODE
                databaseTableVersionRepository.save(databaseTableVersionTb)
            }
        } catch (e: Exception) {
            LogUtils.instance.logE(javaClass, "更新发生异常,手动执行异常回滚")
            TransactionAspectSupport.currentTransactionStatus().setRollbackOnly();
        }
    }
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值