精品欧美一区二区三区在线观看 _久久久久国色av免费观看性色_国产精品久久在线观看_亚洲第一综合网站_91精品又粗又猛又爽_小泽玛利亚一区二区免费_91亚洲精品国偷拍自产在线观看 _久久精品视频在线播放_美女精品久久久_欧美日韩国产成人在线

一篇讓你學(xué)會(huì) 11個(gè)Spring 失效場(chǎng)景

開發(fā) 架構(gòu)
在開發(fā)中,我們都是通過@Controller,@Service,@Component,@Repository等注解自動(dòng)的實(shí)現(xiàn)依賴注入實(shí)例化的功能,但假如說在相應(yīng)的控制層,業(yè)務(wù)層,數(shù)據(jù)層忘記加相應(yīng)的注解,那么也是會(huì)失效的。

其實(shí)關(guān)于spring事務(wù)失效的場(chǎng)景,網(wǎng)絡(luò)上文章介紹的不少,參差不齊。這里只分享下自己的見解,時(shí)長(zhǎng)大概10分鐘左右,先上個(gè)圖介紹下。

1.訪問權(quán)限問題

事務(wù)方法需要定義public,非public方法事務(wù)會(huì)失效。事務(wù)攔截器TransactionalInterceptor會(huì)在執(zhí)行方法前進(jìn)行攔截,通過動(dòng)態(tài)代理方式如果是cglib就是intercept方法或者jdk的invoke方法間接調(diào)用AbstractFallbackTransactionAttributeSource類的getTransactionAttribute方法獲取配置信息,附上源碼圖:

進(jìn)一步的跟蹤getTransactionAttribute方法,我們就能看到,spring對(duì)于非public修飾的方式,返回的事務(wù)對(duì)象是null,其中allowPublicMethodsOnly返回的是一個(gè)布爾false。

2.方法被final修飾

事務(wù)底層使用了aop,那么也就是說通過jdk或者是cglib生成代理類,在代理類中實(shí)現(xiàn)的事務(wù)的功能,如果說方法是final修飾的了,那么就會(huì)導(dǎo)致代理類中無法重寫該方法,從而導(dǎo)致添加事務(wù)失敗。同樣的如果是static的修飾的話也是無法通過動(dòng)態(tài)代理變成事務(wù)方法。

3.方法內(nèi)部調(diào)用

簡(jiǎn)單來說就是一個(gè)方法內(nèi)部調(diào)用另一個(gè)方法,但是另一個(gè)方式是有事務(wù)的,這樣也會(huì)導(dǎo)致事務(wù)失效,因?yàn)檫@個(gè)調(diào)用的是this對(duì)象的方法,而不是另一個(gè)方法持有的對(duì)象,可以這里理解。

如果想要在方法內(nèi)部調(diào)用另一個(gè)方法也有事務(wù)的話,就需要新建一個(gè)service對(duì)象持有。

@Service
public class TmTrimServicebackImpl{
public void getById(Long id) {
TmTrimServiceliImpl.getTrimById(id);
}
}
@Service
public class TmTrimServiceliImpl{
@Transactional(rollbackFor=Exception.class)
public void getTrimById(Long id) {
TmTrimVO tmTrimVO = new TmTrimVO();
}
}

這樣,通過新建一個(gè)service方法,將事務(wù)添加到新建的service方法里就可以了。說到這里可能小伙伴覺得這樣有點(diǎn)麻煩,那么是否有沒有其他的方式不新建一個(gè)方法呢,答案是可以的,就是注入自己,利用了spring ioc內(nèi)部的三級(jí)緩存的機(jī)制,這里注入自己就很好的保證了也不會(huì)出現(xiàn)循環(huán)依賴:

@Service
public class TmTrimServicebackImpl{
@Autowired
private TmTrimServicebackImpl tmTrimServicebackImpl;
public void getById(Long id) {
tmTrimServicebackImpl.getTrimById(id);
}
@Transactional(rollbackFor=Exception.class)
public void getTrimById(Long id) {
TmTrimVO tmTrimVO = new TmTrimVO();
}
}

其實(shí)到了這一步,還是發(fā)現(xiàn)有點(diǎn)不太雅觀,并不是說上面代碼有什么問題只是覺得,可以讓上面代碼更加好看一點(diǎn),那么有沒有呢,答案是有的,是什么呢?這就不得不佩服spring強(qiáng)大完善的支持,那就是AopContext.currentProxy(),這個(gè)就是創(chuàng)建代理類,在方法調(diào)·調(diào)用前后切入,這個(gè)代理類對(duì)象是保存在ThreadLocal中的,所以通過這個(gè)代理類對(duì)象調(diào)用事務(wù)方法就能生效了。

@Service
public class TmTrimServicebackImpl{
public void getById(Long id) {
((TmTrimServicebackImpl)AopContext.currentProxy()).getTrimById(id);
}
@Transactional(rollbackFor=Exception.class)
public void getTrimById(Long id) {
TmTrimVO tmTrimVO = new TmTrimVO();
}
}

這樣看來,代碼是不是就優(yōu)雅多了,哈哈!!!

4.未被spring事務(wù)管理

這里需要明確一個(gè)前提,就是使用spring事務(wù)的前提,就是對(duì)象要被spring管理就需要?jiǎng)?chuàng)建bean實(shí)例,在開發(fā)中,我們都是通過@Controller,@Service,@Component,@Repository等注解自動(dòng)的實(shí)現(xiàn)依賴注入實(shí)例化的功能,但假如說在相應(yīng)的控制層,業(yè)務(wù)層,數(shù)據(jù)層忘記加相應(yīng)的注解,那么也是會(huì)失效的。因?yàn)闆]有交給spring管理,例如:

5.多線程調(diào)用

回想起前幾年配置事務(wù)管理器時(shí),都會(huì)有這樣的一段配置:

通過這一段配置也可以知道,其實(shí)spring事務(wù)就是通過數(shù)據(jù)庫連接事務(wù)多線程連接會(huì)導(dǎo)致持有的connetion不是同一個(gè),從網(wǎng)上找了一張圖,通過這張圖進(jìn)一步理解:

接著附上偽代碼結(jié)合上面的圖進(jìn)一步理解:

@Slf4j
@Service
public class UserService {
@Autowired
private UserMapper userMapper;
@Autowired
private RoleService roleService;
@Transactional
public void add(UserModel userModel) throws Exception {
userMapper.insertUser(userModel);
new Thread(() -> {
roleService.doOtherThing();
}).start();
}
}
@Service
public class RoleService {
@Transactional
public void doOtherThing() {
System.out.println("保存role表數(shù)據(jù)");
}
}

事務(wù)add方法中調(diào)用了另一個(gè)事務(wù)doOtherThing,但是事務(wù)方法是在另一個(gè)線程中調(diào)用的,這樣就會(huì)導(dǎo)致兩個(gè)方法不在同一個(gè)線程中,獲取到的數(shù)據(jù)庫鏈接不一樣,是兩個(gè)不同的事務(wù),一旦doOtherThing發(fā)生異常,add方法也是不可能發(fā)生回滾的.這里需要解釋以下什么是同一個(gè)事務(wù),也就是說只有擁有同一個(gè)數(shù)據(jù)庫連接才能同時(shí)提交和回滾。如果在不同的線程,拿到的數(shù)據(jù)庫連接肯定是不一樣的,所以是不同的事務(wù)。

6.多線程調(diào)用

這個(gè)就沒什么好講的了,也就是innodb和myisam引擎的不同,5版本以前默認(rèn)是myisam引擎,這個(gè)引擎是不支持事務(wù)的,5版本以后的innodb是支持事務(wù)的。

7.未開啟事務(wù)

這個(gè)其實(shí)可能也是比較容易忽略的,因?yàn)槲覀冇∠罄锖孟駴]怎么配置過怎么開啟事務(wù),也確實(shí)是這樣哈,為什么?其實(shí)原因很簡(jiǎn)單,springboot項(xiàng)目通過DataSourceTransactionManagerAutoConfiguration這個(gè)類已經(jīng)默默的為我們開啟了事務(wù)。

這個(gè)類會(huì)加載spring.datasource這個(gè)配置文件從而啟動(dòng)事務(wù),如果是非springboot項(xiàng)目就需要自己手動(dòng)在xml文件中配置事務(wù)管理器。

<bean class="org.springframework.jdbc.datasource.DataSourceTransactionManager" id="transactionManager"> 
<property name="dataSource" ref="dataSource"></property>
</bean>

類似這樣的從而開啟事務(wù)。

8.錯(cuò)誤的傳播特性

在使用@Transactional注解時(shí),是可以指定propagation參數(shù)的,該參數(shù)是用來指定事務(wù)的傳播特性,其中只有required,requires_new,nested這三種才會(huì)創(chuàng)建新事務(wù):

@Service
public class UserService {
@Transactional(propagation = Propagation.NEVER)
public void add(UserModel userModel) {
saveData(userModel);
updateData(userModel);
}
}

像上面的Propagation.NEVER這種類型的傳播特性不支持事務(wù),如果有事務(wù)則會(huì)拋異常。

9.自己吞了異常

@Slf4j
@Service
public class UserService {
@Transactional
public void add(UserModel userModel) {
try {
saveData(userModel);
updateData(userModel);
} catch (Exception e) {
log.error(e.getMessage(), e);
}
}
}

像這種手動(dòng)try...catch了異常,又沒有手動(dòng)拋出,那么sring就會(huì)認(rèn)為程序是異常的就不會(huì)回滾了。

10.手動(dòng)拋了別的異常

Slf4j
@Service
public class UserService {
@Transactional
public void add(UserModel userModel) throws Exception {
try {
saveData(userModel);
updateData(userModel);
} catch (Exception e) {
log.error(e.getMessage(), e);
throw new Exception(e);
}
}
}

捕獲了異常又拋出了exception異常,事務(wù)同樣不會(huì)回滾,因?yàn)閟pring事務(wù)默認(rèn)情況下只會(huì)回滾RuntimeException(運(yùn)行時(shí)異常)和Error(錯(cuò)誤),對(duì)于普通的Exception(非運(yùn)行時(shí)異常),不會(huì)回滾,網(wǎng)上找了一張圖:

這里exception里除了分為運(yùn)行時(shí)異常和非運(yùn)行時(shí)異常(ioException)。

1) 讓checked例外也回滾:

在整個(gè)方法前加上 @Transactional(rollbackFor=Exception.class)

2)  讓unchecked例外不回滾:

@Transactional(notRollbackFor=RunTimeException.class)

3)不需要事務(wù)管理的(只查詢的)方法:@Transactional(propagation=Propagation.NOT_SUPPORTED)

這里需要提及的一句是,如果是自定義了的異常,比如說我自定義了DALException異常,那么就應(yīng)該是@Transactional(notRollbackFor=DALException.class),一旦拋出的異常不屬于DALException異常,那么事務(wù)也是不會(huì)生效的。

11.嵌套事務(wù)回滾多了

其實(shí)這個(gè)就有點(diǎn)像是js里的冒泡事件,可能我只是需要底部,結(jié)果外層窗口事件也觸發(fā)了,聯(lián)想到事務(wù)這里,那么也是一樣的,嵌套多個(gè)可能只是想回滾對(duì)應(yīng)的事務(wù),就不用把其他事務(wù)也回滾了,這個(gè)可以通過try...catch來處理,將需要處理回滾的事務(wù)放這里面就不會(huì)把外層的也會(huì)滾了。

本文轉(zhuǎn)載自微信公眾號(hào)「小王子古木屋」,可以通過以下二維碼關(guān)注。轉(zhuǎn)載本文請(qǐng)聯(lián)系小王子古木屋公眾號(hào)。

責(zé)任編輯:武曉燕 來源: 小王子古木屋
相關(guān)推薦

2021-09-14 07:26:26

組合問題循環(huán)

2021-08-26 13:22:46

雪花算法隨機(jī)數(shù)

2022-08-29 08:00:11

哈希表數(shù)組存儲(chǔ)桶

2022-02-11 08:45:28

通信協(xié)議CAN

2023-01-03 08:31:54

Spring讀取器配置

2022-01-02 08:43:46

Python

2022-02-07 11:01:23

ZooKeeper

2024-04-12 09:01:08

2022-06-04 07:46:41

HeapJVM

2021-07-06 08:59:18

抽象工廠模式

2023-11-28 08:29:31

Rust內(nèi)存布局

2021-07-02 09:45:29

MySQL InnoDB數(shù)據(jù)

2022-08-23 08:00:59

磁盤性能網(wǎng)絡(luò)

2021-05-11 08:54:59

建造者模式設(shè)計(jì)

2022-08-26 09:29:01

Kubernetes策略Master

2021-07-05 22:11:38

MySQL體系架構(gòu)

2022-04-12 08:30:52

回調(diào)函數(shù)代碼調(diào)試

2021-07-16 22:43:10

Go并發(fā)Golang

2021-07-02 08:51:29

源碼參數(shù)Thread

2021-04-29 10:18:18

循環(huán)依賴數(shù)組
點(diǎn)贊
收藏

51CTO技術(shù)棧公眾號(hào)

毛片av在线播放| 日本欧美中文字幕| 能看毛片的网站| 久操av在线| 26uuu国产在线精品一区二区| 欧美乱妇15p| 亚洲国产一区二区三区在线播| 欧美高清视频一区二区三区| 99国产精品免费网站| 欧美日韩一区二区精品| 在线观看成人av电影| 天堂网av在线播放| 捆绑调教一区二区三区| 欧美极品少妇xxxxx| jizz18女人高潮| japanese色系久久精品| 欧美日韩另类一区| 成人在线观看你懂的| 欧美巨乳在线| 成人午夜免费视频| 国产综合视频在线观看| 日韩不卡视频在线| 自由日本语亚洲人高潮| 亚洲女人天堂网| 国产裸体视频网站| 色综合视频一区二区三区日韩| 国产偷国产偷精品高清尤物| 91精品在线看| 成人一二三四区| 影音先锋亚洲电影| 久久成人av网站| 少妇的滋味中文字幕bd| 亚洲成人一品| 精品噜噜噜噜久久久久久久久试看| 无码粉嫩虎白一线天在线观看 | 麻豆电影在线播放| www.欧美日韩国产在线| 91九色国产视频| 中日韩av在线| 日日骚欧美日韩| 欧美一区第一页| 日韩 欧美 综合| 激情综合中文娱乐网| 久热精品视频在线观看| 天天爽天天爽天天爽| 欧美限制电影| 亚洲人在线视频| 久久精品视频18| 久久成人av| 亚洲欧美中文字幕| 给我看免费高清在线观看| 成人另类视频| 亚洲国产精品999| 午夜视频在线观看国产| 国产精品调教视频| 亚洲国产精品99| 天堂久久久久久| 欧美人与牛zoz0性行为| 亚洲视频在线观看网站| 国产精品毛片一区二区| 欧美午夜18电影| 日韩精品小视频| 中文字幕日韩三级片| 日韩丝袜视频| 一本大道亚洲视频| 日韩欧美在线视频播放| 亚洲精品久久| 久久久免费在线观看| 国产午夜福利精品| 亚洲欧美久久| 国产精彩精品视频| 中文字幕第99页| 精品一区二区三区在线观看| 亚洲a∨日韩av高清在线观看| 日产精品久久久| 三级成人在线视频| 成人a级免费视频| 亚洲av无码一区二区乱子伦| 成人福利视频网站| 日韩一区二区三区资源| www.黄在线观看| 亚洲精品一二三区| 国产二级片在线观看| 高清成人在线| 欧美一区二区在线播放| 精品国产一区在线| 精品免费av| 色七七影院综合| 国产一级做a爰片在线看免费 | 大地资源第二页在线观看高清版| 天堂中文资源在线观看| 国产亚洲欧洲997久久综合| 亚洲一区二区在线看| 午夜伦理大片视频在线观看| 精品免费在线视频| mm131亚洲精品| 国产精品高潮呻吟久久久久 | 国产女人18毛片水真多| 国产成人精品www牛牛影视| 农村寡妇一区二区三区| 成人在线视频亚洲| 色综合欧美在线| 久久久久久久久久久久久久久国产| 成人私拍视频| 日韩限制级电影在线观看| 一女三黑人理论片在线| 99精品在线观看| 青青久久aⅴ北条麻妃| 国产视频在线免费观看| 国产午夜精品久久久久久免费视| 欧美动漫一区二区| av网站导航在线观看免费| 欧美自拍偷拍一区| 亚洲天堂资源在线| 国产精品久久久久久久| 欧美一级bbbbb性bbbb喷潮片| 久久久久久久福利| 久久成人18免费观看| 麻豆av一区二区| 性网站在线观看| 欧美日韩国产首页在线观看| 37p粉嫩大胆色噜噜噜| 欧美人成网站| 国产欧洲精品视频| 国产福利电影在线| 色系网站成人免费| 欧美双性人妖o0| 伊人色**天天综合婷婷| 国产精品老女人精品视频| 性感美女福利视频| 亚洲一区二区av在线| www.亚洲自拍| 国产精品成人一区二区不卡| 国产精品免费一区| 欧美精品少妇| 欧美日韩亚洲精品内裤| bl动漫在线观看| 99热免费精品在线观看| 国产免费一区二区| 黄网在线免费看| 欧美不卡一区二区三区| 欧产日产国产v| 国产综合色精品一区二区三区| yellow视频在线观看一区二区 | 国产福利91精品一区二区三区| 亚洲jizzjizz日本少妇| 91在线看黄| 欧美影视一区在线| 国产一区二区三区四区五区六区| 国产精品99一区二区三| 国产日韩欧美在线观看| caoporn国产精品免费视频| 欧美日韩亚洲精品内裤| 国产ts丝袜人妖系列视频| 欧美专区在线| 日本不卡一二三区| 深夜视频一区二区| 中文字幕欧美精品在线| 制服丝袜在线一区| 国产精品美女久久久久aⅴ| 九九精品久久久| 久久精品国内一区二区三区水蜜桃 | 91久久国产精品| 毛片激情在线观看| 欧美一级片在线看| 久久高清免费视频| 久久蜜桃av一区二区天堂 | 在线亚洲成人| 欧美精品中文字幕一区二区| av高清一区| 久久精品中文字幕一区| 亚洲老妇色熟女老太| 精品国产精品自拍| 毛片aaaaaa| 国产成人综合在线| 亚洲熟妇无码一区二区三区| 国产一区二区在线| 7777精品伊久久久大香线蕉语言| 欧美扣逼视频| 6080日韩午夜伦伦午夜伦| 国产一级中文字幕| 国产欧美日韩在线看| 永久免费黄色片| 国产亚洲一区在线| 一区二区在线不卡| 精品少妇3p| 国产精选久久久久久| 在线观看三级视频| 亚洲乱码一区二区| 国产av无码专区亚洲av| 同产精品九九九| 秋霞欧美一区二区三区视频免费| 老司机精品福利视频| 法国空姐在线观看免费| 天天操综合520| 91在线直播亚洲| 中文字幕一区久| 日韩在线观看免费| 无码国精品一区二区免费蜜桃| 亚洲一本大道在线| 欧美亚洲色综久久精品国产| 高清成人免费视频| 三上悠亚在线一区二区| 欧美日韩中文| 中文字幕中文字幕99| 卡一精品卡二卡三网站乱码| 国产一区二区在线免费| 日韩在线伦理| 欧美成人网在线| av网页在线| 日韩精品欧美国产精品忘忧草 | 每日更新成人在线视频| 无码人妻精品一区二区三区99v| 99久久这里有精品| 日韩免费高清在线观看| 伦理av在线| 久久好看免费视频| 成人在线免费观看| 国产丝袜高跟一区| 欧美一区,二区| 久久99久久久久| 亚洲午夜无码av毛片久久| 欧美日韩国产成人精品| 正在播放91九色| 精品国产aⅴ| 欧美福利精品| 偷窥自拍亚洲色图精选| 91在线看网站| 亚洲伊人精品酒店| 国产精品日韩在线观看| 日韩欧美一中文字暮专区| 国模gogo一区二区大胆私拍 | av电影一区二区| 国产大学生av| 国产精品99久久久久久久女警| 妞干网在线观看视频| 欧美日韩国产亚洲一区| av影院在线播放| 午夜精品久久久久99热蜜桃导演| 国产精品一区而去| 6080亚洲理论片在线观看| 91色琪琪电影亚洲精品久久| 日韩欧美专区| 成人在线播放av| 国产精品中文| 999热视频| 91精品国产乱码久久久竹菊| 国产高清在线一区| 高潮按摩久久久久久av免费| 成人毛片网站| 老牛精品亚洲成av人片| 精品久久久久亚洲| 性欧美lx╳lx╳| 久久综合入口| 欧洲杯半决赛直播| 亚洲欧洲精品一区| 正在播放日韩欧美一页| www.avtt| 久久精品一区| 欧美成人福利在线观看| 国产美女一区二区| 911亚洲精选| 久久免费电影网| 亚洲一二三四五六区| 亚洲欧美日韩国产一区二区三区 | 国产欧美日韩在线看| 亚洲欧美va天堂人熟伦| 亚洲欧美一区二区视频| 久草福利资源在线观看| 婷婷激情综合网| 精品人妻一区二区三区潮喷在线 | 精品精品国产高清a毛片牛牛| 91午夜视频在线观看| 精品成人久久av| 无码人妻精品一区二区蜜桃色欲| 国产欧美日本一区视频| 亚洲精品国产精品国自产网站| 国产综合久久久久久鬼色| 99热这里只有精品2| av一区二区不卡| 亚洲欧洲久久久| 亚洲三级小视频| 欧美一二三区视频| 欧美亚洲日本一区| a网站在线观看| 亚洲欧美激情四射在线日| 3p视频在线观看| 欧美激情xxxx| 日本美女久久| 国产精品大全| 精品一区二区三| 欧妇女乱妇女乱视频| 久久久久久夜| 亚洲熟妇一区二区| 国产欧美一区二区精品性| 69av视频在线| 欧美亚洲动漫制服丝袜| 成人免费一级视频| 日韩亚洲精品电影| 性孕妇free特大另类| 91麻豆蜜桃| 日韩精品一区二区三区免费观影| 九色91在线视频| 水蜜桃久久夜色精品一区| 精品无码一区二区三区在线| 七七婷婷婷婷精品国产| 成人在线视频免费播放| 中文字幕一区三区| 亚洲欧美综合自拍| 日韩亚洲欧美综合| 国产一级二级三级在线观看| 久久久久久国产精品美女| 开心久久婷婷综合中文字幕| 久久国产精品一区二区三区| 亚洲综合婷婷| 2025韩国理伦片在线观看| 99精品国产视频| 欧美三级 欧美一级| 色狠狠色噜噜噜综合网| 婷婷丁香花五月天| 欧美风情在线观看| av日韩一区| 亚洲无玛一区| 日韩国产成人精品| 泷泽萝拉在线播放| 亚洲mv在线观看| 国产成人精品一区二区无码呦| 日韩亚洲国产中文字幕欧美| 137大胆人体在线观看| 日本午夜在线亚洲.国产| 久久资源综合| 男人天堂av片| 国产精品18久久久久久久久久久久 | 含羞草久久爱69一区| 日韩精品中文字幕一区二区| 午夜一区二区三区| 日日摸夜夜添夜夜添亚洲女人| 中文字幕日本最新乱码视频| 风间由美一区二区三区在线观看| 欧美成年人视频在线观看| 久久综合网色—综合色88| 精品91久久久| 日韩成人在线视频观看| 秋霞伦理一区| 欧美男人的天堂| 三级久久三级久久久| 一级片视频免费看| 色综合色综合色综合色综合色综合 | 嫩草香蕉在线91一二三区| 国产精品网址在线| 国产高清一区| 一卡二卡三卡四卡五卡| 一区二区三区欧美日韩| 国产黄色片免费| 欧美多人爱爱视频网站| 成人线上播放| 日本免费不卡一区二区| 久久蜜桃香蕉精品一区二区三区| 九九热免费在线| 欧美日韩二区三区| 99在线播放| 高清国语自产拍免费一区二区三区| 国产精品亚洲片在线播放| 欧美 日韩 国产 高清| 久久久久久久综合日本| 中文字幕永久免费视频| 久久视频在线播放| 国内毛片久久| 又色又爽又高潮免费视频国产| 成a人片亚洲日本久久| 天天爽夜夜爽夜夜爽精品| 亚洲男人天堂久| 亚洲三级电影| 免费国产黄色网址| 国产欧美一区二区精品忘忧草| av黄色在线播放| 日韩网站在线观看| 欧美男男freegayvideosroom| 国产欧美综合一区| 成人av网站免费| 久草视频在线免费| 久久99精品久久久久久青青91 | 影音先锋男人资源在线| 国产欧美在线一区二区| 久久免费黄色| 强乱中文字幕av一区乱码| 亚洲欧美日韩网| 精品国产一区二区三区2021| 男人用嘴添女人下身免费视频| 国产91丝袜在线18| 可以免费在线观看的av| 精品国产一区二区三区不卡蜜臂| 欧美三日本三级少妇三99| 久久国产剧场电影| 欧美一级高潮片| 最近2019中文字幕mv免费看| 国产精品色呦| 看看黄色一级片| 色婷婷精品大视频在线蜜桃视频| 青青草视频在线观看|