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

Spring事務(wù)失效的九大場景,你踩過幾個(gè)?

開發(fā) 前端
本文簡要闡述了 Spring 事務(wù)的實(shí)現(xiàn)原理,并列出了 9 種 Spring 事務(wù)失效的場景。相信很多朋友可能都遇到過這些問題。文章也詳細(xì)解釋了失效的原因,希望大家對(duì) Spring 事務(wù)有新的理解。

前言

在日常開發(fā)中,我們經(jīng)常使用Spring事務(wù)。最近,一個(gè)朋友去面試,被問到了這樣一個(gè)面試題:在什么情況下,Spring 事務(wù)會(huì)失效?

今天,我將和大家聊聊Spring事務(wù)失效的 9 種場景。

1. 拋出檢查異常(checked exceptions)

例如,你的事務(wù)控制代碼如下:

@Transactional
public void transactionTest() throws IOException {
    User user = new User();
    UserService.insert(user);
    throw new IOException();
}

如果沒有特別指定@Transactional,Spring 默認(rèn)只會(huì)在遇到運(yùn)行時(shí)異常RuntimeException或錯(cuò)誤時(shí)回滾,而檢查異常如IOException不會(huì)觸發(fā)回滾。

public boolean rollbackOn(Throwable ex) {
    return (ex instanceof RuntimeException || ex instanceof Error);
}

解決方案:

知道原因后,解決方案也很簡單。配置rollbackFor屬性,例如:@Transactional(rollbackFor = Exception.class)

@Transactional(rollbackFor = Exception.class)
public void transactionTest() throws IOException {
    User user = new User();
    UserService.insert(user);
    throw new IOException();
}

2. 業(yè)務(wù)方法本身捕獲并處理了異常

@Transactional(rollbackFor = Exception.class)
public void transactionTest() {
    try {
        User user = new User();
        UserService.insert(user);
        int i = 1 / 0;
    } catch (Exception e) {
        e.printStackTrace();
    }
}

在這個(gè)場景中,事務(wù)失效的原因也很簡單。Spring 是否回滾事務(wù)取決于你是否拋出了異常。如果你自己捕獲了異常,Spring 就無法處理事務(wù)了。

看了上面的代碼,你可能會(huì)覺得這么簡單的問題,自己不可能犯這種低級(jí)錯(cuò)誤。但我想告訴你,我身邊幾乎有一半的人都曾因此困擾過。

在編寫業(yè)務(wù)代碼時(shí),代碼可能會(huì)更復(fù)雜,有很多嵌套的方法。稍不注意,就很容易觸發(fā)這個(gè)問題。舉個(gè)簡單的例子,假設(shè)你有一個(gè)審計(jì)功能,每次方法執(zhí)行完后,將審計(jì)結(jié)果保存到數(shù)據(jù)庫中。那么代碼可能會(huì)寫成這樣:

@Service
public class TransactionService {
    @Transactional(rollbackFor = Exception.class)
    public void transactionTest() throws IOException {
        User user = new User();
        UserService.insert(user);
        throw new IOException();
    }
}

下面的切面會(huì)作用于TransactionService

@Component
publicclass AuditAspect {
    @Autowired
    private AuditService auditService;

    @Around(value = "execution (* com.dylan.service.*.*(..))")
    public Object around(ProceedingJoinPoint pjp) {
        try {
            Audit audit = new Audit();
            Signature signature = pjp.getSignature();
            MethodSignature methodSignature = (MethodSignature) signature;
            String[] strings = methodSignature.getParameterNames();
            audit.setMethod(signature.getName());
            audit.setParameters(strings);
            Object proceed = pjp.proceed();
            audit.success(true);
            return proceed;
        } catch (Throwable e) {
            log.error("{}", e);
            audit.success(false);
        }
        auditService.save(audit);
        returnnull;
    }
}

在上面的例子中,如果程序執(zhí)行異常,事務(wù)也會(huì)失效。原因是Spring的事務(wù)切面優(yōu)先級(jí)最低。如果異常被切面捕獲,Spring 自然無法正確處理事務(wù),因?yàn)槭聞?wù)管理器無法捕獲到異常。

解決方案:

只需移除try-catch。雖然我們知道在處理事務(wù)時(shí),業(yè)務(wù)代碼不能自己捕獲異常,但只要代碼變得復(fù)雜,我們很容易不小心犯錯(cuò)。

3. 同一個(gè)類中的方法調(diào)用

@Service
publicclass DefaultTransactionService implements Service {

    public void saveUser() throws Exception {
        // do something
        doInsert();
    }

    @Transactional(rollbackFor = Exception.class)
    public void doInsert() throws IOException {
        User user = new User();
        UserService.insert(user);
        thrownew IOException();
    }
}

這也是一個(gè)容易出錯(cuò)的場景。事務(wù)失效的原因也很簡單。因?yàn)?Spring 的事務(wù)管理功能是通過動(dòng)態(tài)代理實(shí)現(xiàn)的,而 Spring 默認(rèn)使用 JDK 動(dòng)態(tài)代理,JDK 動(dòng)態(tài)代理通過接口實(shí)現(xiàn),并通過反射調(diào)用目標(biāo)類。簡單理解,在saveUser()方法中,調(diào)用this.doInsert()時(shí),this是真實(shí)對(duì)象,因此會(huì)直接執(zhí)行doInsert的業(yè)務(wù)邏輯,而不是代理邏輯,從而導(dǎo)致事務(wù)失效。

解決方案:

方案 1:直接在saveUser方法上添加@Transactional注解。

方案 2:可以將這兩個(gè)方法拆分到不同的類中。

方案 3:不使用注解實(shí)現(xiàn)事務(wù),而是使用編程式事務(wù)來包裹需要開啟事務(wù)的代碼塊。例如:transactionTemplate.execute()

public void doInsert() throws IOException {
    transactionTemplate.execute(() -> {
        User user = new User();
        UserService.insert(user);
        throw new IOException();
    });
}

4. 方法使用了finalstatic關(guān)鍵字

如果 Spring 使用 Cglib 代理實(shí)現(xiàn)(當(dāng)你的代理類沒有實(shí)現(xiàn)接口時(shí)),而你的業(yè)務(wù)方法恰好使用了finalstatic關(guān)鍵字,那么事務(wù)控制也會(huì)失效。因?yàn)?Cglib 使用字節(jié)碼增強(qiáng)技術(shù)生成被代理類的子類,并重寫被代理類的方法來實(shí)現(xiàn)代理。如果被代理的方法使用了finalstatic關(guān)鍵字,子類就無法重寫被代理的方法。

如果 Spring 使用 JDK 動(dòng)態(tài)代理實(shí)現(xiàn),JDK 動(dòng)態(tài)代理是基于接口實(shí)現(xiàn)的,那么被finalstatic修飾的方法也無法被代理。

總之,如果方法連代理都沒有,那么事務(wù)回滾肯定無法實(shí)現(xiàn)。

解決方案:

盡量移除方法上的finalstatic關(guān)鍵字。

5. 方法不是public

如果方法不是public,Spring 事務(wù)也會(huì)失效,因?yàn)樵?Spring 事務(wù)管理的源碼AbstractFallbackTransactionAttributeSource中,computeTransactionAttribute()方法會(huì)判斷目標(biāo)方法是否是public。如果不是public,則返回null

// Don't allow no-public methods as required.
if (allowPublicMethodsOnly() && !Modifier.isPublic(method.getModifiers())) {
    return null;
}

解決方案:

將當(dāng)前方法的訪問級(jí)別改為public

6. 傳播機(jī)制使用不當(dāng)

Spring事務(wù)的傳播機(jī)制指的是當(dāng)多個(gè)事務(wù)方法相互調(diào)用時(shí),事務(wù)應(yīng)該如何傳播的策略。Spring提供了七種事務(wù)傳播機(jī)制:REQUIREDSUPPORTSMANDATORYREQUIRES_NEWNOT_SUPPORTEDNEVERNESTED。如果你不了解這些傳播策略的原理,很容易導(dǎo)致事務(wù)失效。

@Service
publicclass TransactionsService {

    @Autowired
    private UserMapper userMapper;

    @Autowired
    private AddressMapper addressMapper;

    @Transactional(propagation = Propagation.REQUIRES_NEW, rollbackFor = Exception.class)
    public void doInsert(User user, Address address) throws Exception {
        // do something
        userMapper.insert(user);
        saveAddress(address);
    }

    @Transactional(propagation = Propagation.REQUIRES_NEW)
    public void saveAddress(Address address) {
        // do something
        addressMapper.insert(address);
    }
}

在上面的例子中,如果用戶插入失敗,不會(huì)導(dǎo)致saveAddress()回滾,因?yàn)檫@里使用的傳播機(jī)制是REQUIRES_NEWREQUIRES_NEW的原理是,如果當(dāng)前方法沒有事務(wù),則創(chuàng)建一個(gè)新事務(wù)。如果當(dāng)前方法已經(jīng)有事務(wù),則掛起當(dāng)前事務(wù)并創(chuàng)建一個(gè)新事務(wù)。父事務(wù)會(huì)等到當(dāng)前事務(wù)完成后才提交。如果父事務(wù)發(fā)生異常,不會(huì)影響子事務(wù)的提交。

解決方案:

將事務(wù)傳播策略改為默認(rèn)值REQUIREDREQUIRED的原理是,如果當(dāng)前有事務(wù),則加入該事務(wù)。如果沒有事務(wù),則創(chuàng)建一個(gè)新事務(wù)。父事務(wù)和被調(diào)用的事務(wù)處于同一個(gè)事務(wù)中。即使被調(diào)用的事務(wù)捕獲了異常,整個(gè)事務(wù)仍然會(huì)回滾。

7. 沒有被 Spring 管理

// @Service
public class OrderServiceImpl implements OrderService {
    @Transactional
    public void updateOrder(Order order) {
        // update order
    }
}

如果此時(shí)@Service注解被注釋掉,這個(gè)類就不會(huì)被 Spring 加載為 Bean,那么這個(gè)類就不會(huì)被 Spring 管理,事務(wù)自然也會(huì)失效。

解決方案:

確保每個(gè)使用事務(wù)注解的Service都被 Spring 管理。

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

@Service
publicclass UserService {

    @Autowired
    private UserMapper userMapper;
    @Autowired
    private RoleService roleService;

    @Transactional
    public void add(UserModel userModel) throws Exception {
        userMapper.insertUser(userModel);
        new Thread(() -> {
            try {
                test();
            } catch (Exception e) {
                roleService.doOtherThing();
            }
        }).start();
    }
}

@Service
publicclass RoleService {

    @Transactional
    public void doOtherThing() {
        try {
            int i = 1 / 0;
            System.out.println("save role table data");
        } catch (Exception e) {
            thrownew RuntimeException();
        }
    }
}

我們可以看到,在事務(wù)方法add中,調(diào)用了事務(wù)方法doOtherThing,但doOtherThing是在另一個(gè)線程中被調(diào)用的。

這會(huì)導(dǎo)致兩個(gè)方法不在同一個(gè)線程中,獲取的數(shù)據(jù)庫連接也不同,因此是兩個(gè)不同的事務(wù)。如果在doOtherThing方法中拋出異常,add方法是不可能回滾的。

我們所說的同一個(gè)事務(wù),實(shí)際上指的是同一個(gè)數(shù)據(jù)庫連接。只有在同一個(gè)數(shù)據(jù)庫連接下,才能同時(shí)提交和回滾。如果在不同的線程中,獲取的數(shù)據(jù)庫連接肯定不同,因此它們是不同的事務(wù)。

解決方案:

這有點(diǎn)像分布式事務(wù)。盡量確保在同一個(gè)事務(wù)中處理。

9. 沒有配置開啟事務(wù)

如果在項(xiàng)目中沒有配置 Spring 的事務(wù)管理器,即使使用了 Spring 的事務(wù)管理功能,Spring 的事務(wù)也不會(huì)生效。例如,如果你是一個(gè) Spring Boot 項(xiàng)目,并且沒有在 Spring Boot 項(xiàng)目中配置以下代碼:

@EnableTransactionManagement

解決方案:

確保在項(xiàng)目中正確配置了事務(wù)管理器。

總結(jié)

本文簡要闡述了 Spring 事務(wù)的實(shí)現(xiàn)原理,并列出了 9 種 Spring 事務(wù)失效的場景。相信很多朋友可能都遇到過這些問題。文章也詳細(xì)解釋了失效的原因,希望大家對(duì) Spring 事務(wù)有新的理解。

責(zé)任編輯:武曉燕 來源: 程序猿技術(shù)充電站
相關(guān)推薦

2022-04-26 21:49:55

Spring事務(wù)數(shù)據(jù)庫

2024-04-01 08:05:27

Go開發(fā)Java

2022-02-14 16:53:57

Spring項(xiàng)目數(shù)據(jù)庫

2022-09-29 09:35:56

線程池

2019-08-09 15:03:53

2018-09-11 09:14:52

面試公司缺點(diǎn)

2025-04-29 10:17:42

2019-09-25 15:30:15

2024-09-09 08:29:25

2024-01-29 08:28:01

Spring事務(wù)失效

2024-05-07 08:23:03

Spring@Async配置

2025-04-15 02:00:00

API版本項(xiàng)目

2021-09-04 07:56:44

Spring事務(wù)失效

2021-12-13 11:12:41

Spring事務(wù)失效

2025-10-30 07:45:06

2025-08-06 00:00:01

事務(wù)失效聲明式

2023-07-05 08:45:18

Spring事務(wù)失效場景

2021-01-21 14:07:24

區(qū)塊鏈行業(yè)發(fā)展物聯(lián)網(wǎng)

2023-08-29 10:51:44

2025-01-20 09:00:00

架構(gòu)開發(fā)代碼
點(diǎn)贊
收藏

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

欧美精品videossex性护士| 欧美日韩一区国产| 国产私拍一区| 日本韩国欧美中文字幕| 久久99国产精一区二区三区| 在线视频你懂得一区| 亚洲蜜桃av| 精品国产亚洲一区二区麻豆| 亚洲高清免费| 中日韩午夜理伦电影免费| 亚洲国产日韩在线一区| 青青青免费在线视频| 国产精品乱人伦中文| 鬼打鬼之黄金道士1992林正英| 手机在线看片1024| 亚洲最大黄网| 亚洲精品一区久久久久久| 男女视频在线看| 国产精品四虎| 国产精品自产自拍| 国产成人高清激情视频在线观看| 亚洲国产精品免费在线观看| 亚洲资源网你懂的| 日韩一级片在线观看| 久久综合久久色| av手机免费在线观看| 国产精品国产三级国产aⅴ中文| 国产精品一区在线观看| 国产精品乱码久久久| 欧美一级视频| 欧美精品videossex88| www.4hu95.com四虎| 欧美网色网址| 精品乱码亚洲一区二区不卡| 在线观看国产福利| 一区二区三区短视频| 亚洲最大成人网4388xx| 中文字幕99| 男同在线观看| 成人av电影在线播放| 亚洲一区美女视频在线观看免费| 在线观看你懂的网站| 新狼窝色av性久久久久久| 欧美激情喷水视频| 麻豆视频在线免费看| 日韩精品二区| 怡红院精品视频| 中文字幕免费看| 欧美人与动xxxxz0oz| 亚洲成人精品在线| 亚洲妇女无套内射精| 中文成人在线| 欧美女孩性生活视频| 日本免费观看网站| 九色成人搞黄网站| 欧美在线视频全部完| 免费黄色特级片| 久久电影tv| 色偷偷久久一区二区三区| 国产高清精品在线观看| 日韩精品美女| 精品久久久久久久久久久久| 日韩小视频在线播放| 91超碰在线免费| 性做久久久久久免费观看欧美| 黄色片免费在线观看视频| 99在线播放| 亚洲自拍偷拍网站| 黄色激情在线视频| segui88久久综合| 亚洲va欧美va天堂v国产综合| 欧美中日韩在线| 91超碰在线免费| 狠狠躁天天躁日日躁欧美| 国产最新免费视频| 蜜桃精品在线| 7777精品伊人久久久大香线蕉的| 伊人国产精品视频| 99这里只有精品视频| 亚洲精品国产美女| 在线观看免费小视频| 五月天久久网站| 欧美福利小视频| 国产成人无码精品久在线观看 | 蜜桃久久久久久久| 成人做爰www免费看视频网站| 99精品免费观看| 波多野结衣中文字幕一区 | 成人国产精品一级毛片视频| 神马久久久久久| 欧美日韩免费一区二区| 国产精品日本| 成人福利视频网| 人妻少妇精品无码专区| 国产夜色精品一区二区av| 亚洲精品9999| 国产极品人妖在线观看| 91高清在线观看| 永久av免费在线观看| 欧美18免费视频| 综合网日日天干夜夜久久| 丰满少妇高潮久久三区| 国产欧美不卡| 成人欧美在线视频| 污视频在线免费| 亚洲欧美自拍偷拍色图| av之家在线观看| 看片一区二区| 日韩午夜电影av| 精品欧美一区二区久久久| 中文字幕亚洲综合久久五月天色无吗''| 97国产在线视频| 国产又粗又大又黄| 99re热这里只有精品视频| 精品久久免费观看| 成人性生活av| 欧美变态凌虐bdsm| 呻吟揉丰满对白91乃国产区| 在线视频日韩| 91网站在线免费观看| 国产精品四虎| 欧美日韩中文在线| 国产人妖在线观看| 羞羞色午夜精品一区二区三区| 欧美最近摘花xxxx摘花| 国产成人手机在线| 国产精品卡一卡二| 人妻少妇被粗大爽9797pw| 999在线精品| 国产香蕉一区二区三区在线视频| 久久久久99精品| 国产一区二区电影| 亚洲精品国产精品国自产| 日本а中文在线天堂| 欧美成人精品二区三区99精品| 亚洲激情图片网| 日韩制服丝袜av| 免费在线成人av电影| 男插女视频久久久| 日韩一卡二卡三卡国产欧美| 我要看黄色一级片| 久久99精品久久久| 亚洲五月六月| 国产精品麻豆成人av电影艾秋| 精品无人区乱码1区2区3区在线| 国产精品suv一区二区| 国产精选一区二区三区| 艳母动漫在线免费观看| 欧美一区=区三区| 色系列之999| 中文字幕视频一区二区| 国产日产欧美一区| 无码人妻精品一区二区三区66| 亚洲小说图片视频| 国产精品盗摄久久久| 国产在线网站| 在线视频你懂得一区二区三区| 国产三级av在线播放| 日日摸夜夜添夜夜添国产精品| 欧美日韩国产高清视频| 深夜成人影院| 一级做a爰片久久毛片美女图片| 亚洲午夜无码久久久久| 中文字幕乱码亚洲精品一区| 中文字幕国产传媒| 色婷婷一区二区三区| 91在线播放国产| 欧美色图天堂| 亚洲成人久久久久| 中文字幕一区二区人妻电影| 国产女人aaa级久久久级| 性生活免费在线观看| 中文字幕一区二区三区在线视频| av电影成人| 在线观看欧美日韩电影| 在线视频中文亚洲| 国产成人免费看一级大黄| 亚洲一区av在线| 在线免费观看成年人视频| 玖玖视频精品| 在线观看精品视频| 精品一区二区三区中文字幕| 午夜美女久久久久爽久久| 毛片网站在线观看| 欧美日韩国产乱码电影| 久久成人国产精品入口| 91美女精品福利| 中文字幕免费高清在线| 亚洲精品1234| 亚洲精品白虎| 精品国内亚洲2022精品成人| 国产成人精品最新| www在线免费观看视频| 亚洲精品wwwww| 亚洲性生活大片| 亚洲午夜影视影院在线观看| 91成人破解版| 国产成人一区在线| 虎白女粉嫩尤物福利视频| 无码一区二区三区视频| 精品免费国产| 欧洲亚洲精品久久久久| 97香蕉久久夜色精品国产| av每日在线更新| 亚洲第一视频在线观看| 最新在线中文字幕| 亚洲高清视频在线| 黄色av片三级三级三级免费看| 福利一区福利二区| 日日噜噜夜夜狠狠| 亚洲欧美日韩国产一区二区| 97精品国产97久久久久久粉红| 自拍欧美一区| 国产精品毛片va一区二区三区| 国产成人亚洲一区二区三区| 91wwwcom在线观看| gogogogo高清视频在线| 亚洲天堂av高清| 狠狠躁日日躁夜夜躁av| 56国语精品自产拍在线观看| 精品人妻一区二区三区潮喷在线| 亚洲一区在线观看免费观看电影高清| 少妇一级黄色片| 91偷拍与自偷拍精品| 男人女人拔萝卜视频| 蜜臂av日日欢夜夜爽一区| 欧美日韩亚洲一| 亚洲一级高清| www.69av| 中国成人一区| 在线视频欧美一区| 欧美午夜精品一区二区三区电影| 久久综合婷婷综合| 国产高清日韩| 成人www视频在线观看| 欧美日韩国产网站| 国产va免费精品高清在线观看| 538在线视频| 欧美肥老妇视频| 亚洲丝袜精品| 欧美精品制服第一页| 欧美边添边摸边做边爱免费| 国产亚洲人成网站在线观看 | 亚洲国产精品嫩草影院久久| 亚洲第一视频在线| 日韩欧美电影一区| 亚洲a视频在线| 日韩精品影音先锋| 午夜精品久久久久久久第一页按摩 | 亚洲精选成人| 男女日批视频在线观看| 精品成人国产| 草b视频在线观看| 国产在线欧美| 国产高清av在线播放| 91久久亚洲| 成人毛片视频网站| 亚洲小说区图片区| 亚洲不卡中文字幕无码| 免费看黄裸体一级大秀欧美| 国产成人免费高清视频| 日韩在线高清| 99中文字幕在线观看| 欧美黄色一区| 五十路熟女丰满大屁股| 中文欧美日韩| 国产成人av影视| 最新国产乱人伦偷精品免费网站| 国产老熟妇精品观看| 欧美专区18| 日韩久久一级片| 麻豆免费精品视频| 国产又黄又猛又粗| 国产呦精品一区二区三区网站| www.99r| 成人污污视频在线观看| 三叶草欧洲码在线| 久久婷婷成人综合色| 国产人妻一区二区| 国产三级精品视频| 欧美人禽zoz0强交| 精品高清美女精品国产区| 成人黄色三级视频| 欧美一三区三区四区免费在线看| 亚洲女同志亚洲女同女播放| 亚洲另类xxxx| 米奇777四色精品人人爽| 欧美精品video| 无人区在线高清完整免费版 一区二| 成人精品一区二区三区电影黑人| 6080成人| 日韩av一级大片| 国产精品jizz在线观看美国| 欧美黄色一级片视频| 国产精品一区二区在线观看网站| 国产精品嫩草av| 日韩毛片精品高清免费| 97免费在线观看视频| 色久综合一二码| av免费在线不卡| 亚洲欧美一区二区三区久久 | 久久久久久久久亚洲| 成人网ww555视频免费看| 成人在线观看91| 秋霞欧美视频| 人人妻人人澡人人爽欧美一区双 | 秋霞av国产精品一区| 国产亚洲字幕| 精品视频一区二区| 亚洲h色精品| 国产精品亚洲a| 激情文学综合丁香| 麻豆精品免费视频| 亚洲午夜免费福利视频| 夜夜嗨aⅴ一区二区三区| 亚洲另类图片色| 青青青国内视频在线观看软件| 国产精品一区二区3区| 欧美日韩一本| 日韩a级黄色片| 久久国产乱子精品免费女| 成人网站免费观看| 亚洲一区在线视频| hs视频在线观看| 亚洲欧美精品suv| 2024最新电影免费在线观看| 国产精品丝袜一区二区三区| 最新国产一区| koreanbj精品视频一区| 福利电影一区二区| 久久久久久国产免费a片| 欧美日韩国产综合新一区| 国产免费叼嘿网站免费| 神马国产精品影院av| 亚洲电影有码| 天堂av一区二区| 日韩精品一二三| 扒开jk护士狂揉免费| 亚洲一区二区三区激情| 午夜美女福利视频| www.xxxx欧美| 性欧美video另类hd尤物| 日韩三级电影网站| 蘑菇福利视频一区播放| 成人免费毛片日本片视频| 香蕉av福利精品导航| 后入内射欧美99二区视频| 久久精品美女视频网站| 在线欧美激情| 91精品国产吴梦梦| 国产成人精品亚洲777人妖 | 亚洲制服在线观看| 亚洲人成亚洲人成在线观看图片 | 日韩国产一区久久| 爽好多水快深点欧美视频| 丰腴饱满的极品熟妇| 色婷婷国产精品久久包臀| 少妇性bbb搡bbb爽爽爽欧美| 欧美一级黑人aaaaaaa做受| 亚洲免费专区| 久久国产精品偷| av中文在线资源| 国产精品一区二区三区免费观看 | 91精品短视频| 日韩a级黄色片| 99re在线精品| 免费在线不卡av| 日韩一中文字幕| 老司机亚洲精品一区二区| 久久精品xxx| 在线国产一区| 亚洲色图欧美日韩| 国产亚洲福利| 国产欧美在线一区| 国产美女主播视频一区| 精品在线视频免费| 亚洲人成网站999久久久综合| 亚洲小说区图片区都市| 久久久99爱| 久久精品国产秦先生| 毛片aaaaa| 亚洲欧美一区二区三区情侣bbw | 成人写真福利网| 国产综合欧美| 日韩网站在线播放| 欧美三级中文字| 天堂亚洲精品| 鲁丝一区二区三区免费| 美腿丝袜亚洲三区| 久久亚洲AV无码| 亚洲美女福利视频网站| 四虎国产精品成人免费影视| 国产一区 在线播放| 久久久亚洲精品石原莉奈| 国产美女自慰在线观看| 91av网站在线播放| 日韩成人三级| 伊人成人免费视频| 色综合久久中文字幕综合网| 日韩精品黄色|