完整源码 https://github.com/tothis/spring-boot-template
全局异常处理(@RestControllerAdvice)JPA 逻辑删除(@Where 和 重写 deleteById 函数)声明式事务
基础类
package com.example.template.service
import org.springframework.beans.factory.annotation.Autowired
import org.springframework.transaction.support.TransactionCallback
import org.springframework.transaction.support.TransactionTemplate
abstract class baseService {
@Autowired
private lateinit var transactionTemplate: TransactionTemplate
protected fun transaction(action: TransactionCallback) = transactionTemplate.execute(action)
}
实现类package com.example.template.service
@Service
class TaskService(
private val repository1: Repository1,
private val repository2: Repository2,
private val repository3: Repository3
) : baseService() {
fun deleteByEntity(entity: Task) = with(entity) {
transaction {
id1?.let { repository1.deleteById(it) }
id2?.let { repository2.deleteById(it) }
id3?.let { repository3.deleteById(it) }
}
}
}



