你們說一下什麼是傳播行為,有幾種傳播行為,是不是有7種傳播行為,你們看一段**,就知道傳播行為是怎麼用的,它是產生在
多個事務中,我定義乙個
class userservice
}這個行為你不會不知道,行為是基礎知識,userdao.add()是不是這樣的,我在add方法上加上註解,logservice.addlog(),那麼在
這個地方我問你個問題,比如這個時候int i = 1/0,你們要記住日誌,日誌記錄是每次都會插入的,然後我問你們,你們說一下,
假設logservice.addlog()這個**是第一行**,logservice.addlog()這個**執行完畢的時候,突然走到userdao.add()
這個方法之後,走到int i = 1/0的情況下,你們說一下,logservice.addlog()這個需不需要回滾,他需不需要回滾,記住一點啊,
正常情況下,肯定是不需要回滾的,日誌本來就是要做記錄的,方便查詢一下到底有多少次呼叫資料庫,所以在這邊我要講一下
什麼呢,正常情況下日誌記錄是每次都要插入的,不會回滾的,這是我要根你們講的,那麼我們講一下,預設什麼行為,是直接關聯
這個事務的,跟他一起回滾,我跟你們說一下,logservice.addlog()這是乙個新的事務,userdao.add()這也是乙個新的事務,
因為預設事務傳播行為是required,我**給你演示一下,怎麼演示呢,很快演示完了,首先在我的資料庫裡面有一張表,
這張表是專門用來做查日誌用的
create table if not exists `t_log`(
`log_name` varchar(40)
)engine=innodb default charset=utf8;
我這邊有兩張表,什麼意思呢,當我對日誌表插入記錄的時候,我會先插入乙個log日誌記錄,那這個時候我怎麼做呢
package com.learn.dao;
import org.springframework.beans.factory.annotation.autowired;
import org.springframework.jdbc.core.jdbctemplate;
import org.springframework.stereotype.repository;
@repository
public class logdao
}
package com.learn.service;
public inte***ce logservice
package com.learn.service.impl;
import org.springframework.beans.factory.annotation.autowired;
import org.springframework.stereotype.service;
import org.springframework.transaction.annotation.propagation;
import org.springframework.transaction.annotation.transactional;
import com.learn.dao.logdao;
import com.learn.service.logservice;
/** * 7種傳播行為
* 這個問的比較多的
* 注入到spring容器裡面去@service
* *
* @author leon.sun
* */
@service
public class logserviceimpl implements logservice
}
package com.learn.service;
//user 服務層
public inte***ce userservice
package com.learn.service.impl;
import org.springframework.beans.factory.annotation.autowired;
import org.springframework.stereotype.service;
import org.springframework.transaction.annotation.transactional;
import com.learn.dao.userdao;
import com.learn.service.logservice;
import com.learn.service.userservice;
import com.learn.transaction.transactionutils;
@service
public class userserviceimpl implements userservice
public void del()
}
package com.learn;
import com.learn.service.userservice;
public class test001
}
spring 事務傳播行為
事務傳播行為種類 spring在transactiondefinition介面中規定了7種型別的事務傳播行為,它們規定了事務方法和事務方法發生巢狀呼叫時事務如何進行傳播 事務傳播行為型別 事務傳播行為型別 說明propagation required 如果當前沒有事務,就新建乙個事務,如果已經存在乙...
Spring事務傳播行為
什麼是spring事務傳播行為?事務傳播行為用來描述由某乙個事務傳播行為修飾的方法被巢狀進另乙個方法的時,事務如何傳播。假設servicea 中方法a 呼叫 serviceb中方法 b b被事務修飾 那麼會有兩種情況 方法a有事務,方法b有事務 方法a沒有事務,方法b有事務 spring中的事務傳播...
spring 事務傳播行為
spring中事務的定義 propagation key屬性確定 應該給哪個方法增加事務行為。這樣的屬性最重要的部份是傳播行為。有以下選項可供使用 共患難 各自飛 1 test1 test2 使用預設的事務註解或不使用事務,test 使用 propagation.requires new 或 預設 ...