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

揭秘 @Autowired 自動(dòng)裝配原理與實(shí)現(xiàn)機(jī)制

開(kāi)發(fā) 前端
在Java開(kāi)發(fā)中,Spring框架憑借強(qiáng)大的依賴(lài)注入(Dependency Injection,DI)功能極大地提升了代碼的可維護(hù)性和可擴(kuò)展性。其中,@Autowired注解作為Spring實(shí)現(xiàn)依賴(lài)注入的核心手段之一,被開(kāi)發(fā)者廣泛使用。

前言

在Java開(kāi)發(fā)中,Spring框架憑借強(qiáng)大的依賴(lài)注入(Dependency Injection,DI)功能極大地提升了代碼的可維護(hù)性和可擴(kuò)展性。其中,@Autowired注解作為Spring實(shí)現(xiàn)依賴(lài)注入的核心手段之一,被開(kāi)發(fā)者廣泛使用。

但@Autowired究竟是如何實(shí)現(xiàn)自動(dòng)裝配的呢?本文將深入剖析其原理與實(shí)現(xiàn)機(jī)制,揭開(kāi)它的神秘面紗。

自動(dòng)裝配的核心流程

啟動(dòng)容器時(shí)的掃描與解析

當(dāng)Spring容器啟動(dòng)時(shí),會(huì)根據(jù)配置(如XML 配置或注解配置)掃描指定包路徑下的類(lèi)。對(duì)于被@Component、@Service、@Repository、@Controller等注解標(biāo)注的類(lèi),Spring會(huì)將其注冊(cè)為Bean,并存儲(chǔ)在容器的BeanDefinition注冊(cè)表中。在這個(gè)過(guò)程中,如果遇到帶有@Autowired注解的字段、方法或構(gòu)造函數(shù),會(huì)記錄下依賴(lài)關(guān)系信息。

實(shí)例化與依賴(lài)注入

在創(chuàng)建Bean實(shí)例時(shí),Spring會(huì)根據(jù)BeanDefinition中的信息,首先實(shí)例化Bean(對(duì)于單例Bean,只會(huì)實(shí)例化一次)。在實(shí)例化完成后,Spring會(huì)處理@Autowired注解。對(duì)于字段上的@Autowired,Spring會(huì)在容器中查找與字段類(lèi)型匹配的Bean。查找過(guò)程中,會(huì)優(yōu)先按照類(lèi)型匹配,如果存在多個(gè)同類(lèi)型的Bean,則會(huì)根據(jù)字段名或使用@Qualifier注解指定的名稱(chēng)進(jìn)一步篩選。找到匹配的Bean后,將其注入到對(duì)應(yīng)字段。

循環(huán)依賴(lài)處理

圖片圖片

在自動(dòng)裝配過(guò)程中,可能會(huì)遇到循環(huán)依賴(lài)的情況,即兩個(gè)或多個(gè)Bean之間相互依賴(lài)。Spring容器通過(guò)三級(jí)緩存機(jī)制來(lái)處理循環(huán)依賴(lài)問(wèn)題。一級(jí)緩存存儲(chǔ)完全初始化好的Bean;二級(jí)緩存存儲(chǔ)早期暴露的Bean(尚未完成屬性填充和初始化);三級(jí)緩存存儲(chǔ)Bean 的創(chuàng)建工廠。當(dāng)檢測(cè)到循環(huán)依賴(lài)時(shí),Spring會(huì)從二級(jí)緩存中獲取早期暴露的Bean,避免因循環(huán)依賴(lài)導(dǎo)致的死循環(huán)問(wèn)題。

Bean的初始化過(guò)程

Spring的可以分為5個(gè)小的階段:實(shí)例化、初始化、注冊(cè)Destruction回調(diào)、Bean的正常使用以及Bean的銷(xiāo)毀。

圖片圖片

  • 實(shí)例化(Instantiation):
  • 實(shí)例化是創(chuàng)建對(duì)象的過(guò)程。在Spring中,這通常指的是通過(guò)調(diào)用類(lèi)的構(gòu)造器來(lái)創(chuàng)建Bean的實(shí)例。這是對(duì)象生命周期的開(kāi)始階段。對(duì)應(yīng)doCreateBean中的createBeanInstance方法。
  • 初始化(Initialization):
  • 初始化是在Bean實(shí)例創(chuàng)建后,進(jìn)行一些設(shè)置或準(zhǔn)備工作的過(guò)程。在Spring中,包括設(shè)置Bean的屬性,調(diào)用各種前置&后置處理器。對(duì)應(yīng)doCreateBean中的populateBean和initializeBean方法。

自動(dòng)裝配其實(shí)發(fā)生在Instantiation -> Populate -> Initialization的過(guò)程中,屬于Bean的生命周期中的populate階段。

  • 在實(shí)例化Bean的時(shí)候在createBeanInstance方法中會(huì)調(diào)用 AutowiredAnnotationBeanPostProcessor中的方法來(lái)獲取需要自動(dòng)注入的構(gòu)造方法,AutowiredAnnotationBeanPostProcessor的方法來(lái)完成對(duì)所有需要自動(dòng)注入的屬性和方法的解析和緩存。
  • populatedBean方法中調(diào)用到AutowiredAnnotationBeanPostProcessor中的方法來(lái)完成需要自動(dòng)注入屬性的注入工作。
protected void populateBean(String beanName, RootBeanDefinition mbd, BeanWrapper bw) {
    // 獲取Bean定義中的屬性值    
    PropertyValues pvs = mbd.getPropertyValues();
    // 如果BeanWrapper為空,則無(wú)法設(shè)置屬性值    
    if (bw == null) {
        if (!pvs.isEmpty()) {
            throw new BeanCreationException(
                    mbd.getResourceDescription(), beanName, "Cannot apply property values to null instance");
        } else {
            // 對(duì)于null實(shí)例,跳過(guò)設(shè)置屬性階段            
            return;
        }
    }
    // 在設(shè)置屬性之前,給InstantiationAwareBeanPostProcessors機(jī)會(huì)修改Bean狀態(tài)    
    // 這可以用于支持字段注入等樣式    
    boolean continueWithPropertyPopulation = true;
    // 如果Bean不是合成的,并且存在InstantiationAwareBeanPostProcessor,執(zhí)行后續(xù)處理    
    if (!mbd.isSynthetic() && hasInstantiationAwareBeanPostProcessors()) {
        for (BeanPostProcessor bp : getBeanPostProcessors()) {
            if (bp instanceof InstantiationAwareBeanPostProcessor) {
                InstantiationAwareBeanPostProcessor ibp = (InstantiationAwareBeanPostProcessor) bp;
                if (!ibp.postProcessAfterInstantiation(bw.getWrappedInstance(), beanName)) {
                    continueWithPropertyPopulation = false;
                    break;
                }
            }
        }
    }
    // 如果上述處理后決定不繼續(xù),則返回    
    if (!continueWithPropertyPopulation) {
        return;
    }
    // 根據(jù)自動(dòng)裝配模式(按名稱(chēng)或類(lèi)型),設(shè)置相關(guān)的屬性值    
    if (mbd.getResolvedAutowireMode() == RootBeanDefinition.AUTOWIRE_BY_NAME ||
            mbd.getResolvedAutowireMode() == RootBeanDefinition.AUTOWIRE_BY_TYPE) {
        MutablePropertyValues newPvs = new MutablePropertyValues(pvs);
        // 如果是按名稱(chēng)自動(dòng)裝配,添加相應(yīng)的屬性值        
        if (mbd.getResolvedAutowireMode() == RootBeanDefinition.AUTOWIRE_BY_NAME) {
            autowireByName(beanName, mbd, bw, newPvs);
        }
        // 如果是按類(lèi)型自動(dòng)裝配,添加相應(yīng)的屬性值        
        if (mbd.getResolvedAutowireMode() == RootBeanDefinition.AUTOWIRE_BY_TYPE) {
            autowireByType(beanName, mbd, bw, newPvs);
        }
        pvs = newPvs;
    }
    // 檢查是否需要進(jìn)行依賴(lài)性檢查    
    boolean hasInstAwareBpps = hasInstantiationAwareBeanPostProcessors();
    boolean needsDepCheck = (mbd.getDependencyCheck() != RootBeanDefinition.DEPENDENCY_CHECK_NONE);
    // 如果需要,則進(jìn)行依賴(lài)性檢查    
    if (hasInstAwareBpps || needsDepCheck) {
        PropertyDescriptor[] filteredPds = filterPropertyDescriptorsForDependencyCheck(bw, mbd.allowCaching);
        if (hasInstAwareBpps) {
            for (BeanPostProcessor bp : getBeanPostProcessors()) {
                if (bp instanceof InstantiationAwareBeanPostProcessor) {
                    InstantiationAwareBeanPostProcessor ibp = (InstantiationAwareBeanPostProcessor) bp;
                    pvs = ibp.postProcessPropertyValues(pvs, filteredPds, bw.getWrappedInstance(), beanName);
                    if (pvs == null) {
                        return;
                    }
                }
            }
        }
        if (needsDepCheck) {
            checkDependencies(beanName, mbd, filteredPds, pvs);
        }
    }
    // 應(yīng)用屬性值    
    applyPropertyValues(beanName, mbd, bw, pvs);
}

@Autowired 實(shí)現(xiàn)的關(guān)鍵源碼解析

@Autowired注解的實(shí)現(xiàn)主要涉及到AutowiredAnnotationBeanPostProcessor類(lèi),它繼承自InstantiationAwareBeanPostProcessorAdapter(后期被棄用,改實(shí)現(xiàn)SmartInstantiationAwareBeanPostProcessor),該類(lèi)實(shí)現(xiàn)了postProcessProperties方法,用于處理Bean的屬性注入。

@Override
public PropertyValues postProcessProperties(PropertyValues pvs, Object bean, String beanName) {
    InjectionMetadata metadata = findAutowiringMetadata(beanName, bean.getClass(), pvs);
    try {
        metadata.inject(bean, beanName, pvs);
    }catch (BeanCreationException ex) {
        throw ex;
    }catch (Throwable ex) {
        throw new BeanCreationException(beanName, "Injection of autowired dependencies failed", ex);
    }
    return pvs;
}

在postProcessProperties方法中,首先通過(guò)findAutowiringMetadata方法獲取與@Autowired相關(guān)的元數(shù)據(jù)(包括要注入的字段、方法等信息),然后調(diào)用metadata.inject方法進(jìn)行實(shí)際的依賴(lài)注入操作。metadata.inject方法會(huì)遍歷需要注入的元素,通過(guò)反射機(jī)制獲取對(duì)應(yīng)的Bean并完成注入。

總結(jié)

如果你在面試中遇到這個(gè)問(wèn)題,可以這樣回答:

  1. @Autowired是Spring提供的自動(dòng)裝配注解,它通過(guò)AutowiredAnnotationBeanPostProcessor實(shí)現(xiàn)依賴(lài)注入。
  2. 這個(gè)處理器在Bean初始化階段介入,掃描字段或方法的注解,找到需要注入的地方,然后根據(jù)類(lèi)型從容器中查找Bean,通過(guò)反射完成注入。
  3. 如果存在多個(gè)實(shí)現(xiàn),可以通過(guò)@Qualifier或@Primary來(lái)指定注入對(duì)象。構(gòu)造器注入則在實(shí)例化時(shí)完成,推薦用于強(qiáng)依賴(lài)場(chǎng)景。
責(zé)任編輯:武曉燕 來(lái)源: 一安未來(lái)
相關(guān)推薦

2025-01-14 10:09:43

硬中斷Linux系統(tǒng)

2022-08-08 07:33:11

自動(dòng)裝配Java容器

2024-12-25 16:01:01

2012-11-28 10:37:25

Linux集群安裝配置

2020-09-22 08:52:50

平臺(tái)實(shí)現(xiàn)消息

2011-06-13 10:21:25

QT 信號(hào) 槽機(jī)制

2025-05-27 01:00:00

2010-04-29 10:11:07

Linux集群

2024-10-10 17:46:06

2021-07-19 09:25:19

數(shù)據(jù)庫(kù)MySQL技術(shù)

2022-04-08 08:32:40

mobx狀態(tài)管理庫(kù)redux

2024-10-10 12:12:45

SpringAI版本

2012-02-17 10:50:10

Java

2010-08-06 09:45:50

Flex事件機(jī)制

2010-08-06 10:15:35

Flex綁定

2009-09-04 10:37:50

Java堆棧溢出

2020-02-25 16:48:35

AndroidGoogle 移動(dòng)系統(tǒng)

2021-05-13 23:30:17

JavaScript 原理揭秘

2015-03-27 09:50:37

2021-12-20 00:03:38

Webpack運(yùn)行機(jī)制
點(diǎn)贊
收藏

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

亚洲无线看天堂av| 波多野结衣影片| 91成人午夜| 天涯成人国产亚洲精品一区av| 久久狠狠久久综合桃花| 伊人精品一区二区三区| 在线国产一区| 精品调教chinesegay| 中日韩av在线播放| 成年男女免费视频网站不卡| 国产欧美精品日韩区二区麻豆天美 | 在线观看网站黄| 欧美激情网站| 亚洲少妇中出一区| 国产乱码精品一区二区三区中文| 91视频在线视频| 国产一区日韩欧美| 中文字幕久久久av一区| 日本中文字幕有码| 国产综合av| 亚洲午夜影视影院在线观看| 五月天色一区| 亚洲色图欧美视频| 国产精品乡下勾搭老头1| 全球成人中文在线| 久久精品免费av| 999久久久精品国产| 日韩精品免费在线| www.四虎在线| 亚洲伦理一区二区| 色94色欧美sute亚洲线路一ni| 日韩国产小视频| 1024国产在线| 久久精品亚洲精品国产欧美 | 毛片毛片毛片毛片毛片毛片毛片毛片毛片 | 亚洲最大在线视频| 人体私拍套图hdxxxx| 视频精品一区二区三区| 欧美丰满美乳xxx高潮www| 欧美极品欧美精品欧美图片| 97人人在线视频| 一区二区三区四区在线播放 | 亚洲电影在线| 色综合老司机第九色激情| 顶级黑人搡bbw搡bbbb搡| 精品国产精品| 国产亚洲欧洲在线| 五月天综合视频| 性人久久久久| 日韩精品视频三区| 日韩中文字幕电影| 香蕉久久夜色精品国产使用方法 | 国产性生活毛片| 日韩精品成人在线观看| 日韩一区二区三区在线视频| 99中文字幕在线| 成人国产精品久久| 欧美一区二区三区视频| gogo亚洲国模私拍人体| 日韩高清一区| 亚洲激情成人网| 一本色道综合久久欧美日韩精品| 麻豆精品av| 亚洲精品一二区| 国产精品扒开腿做爽爽| 国产亚洲一卡2卡3卡4卡新区 | 黄色网页网址在线免费| 日韩一区中文字幕| 日韩中文字幕亚洲精品欧美| 欧美亚洲天堂| 五月天亚洲婷婷| 草草草在线视频| 69堂免费精品视频在线播放| 欧美女孩性生活视频| 欧洲在线免费视频| www.豆豆成人网.com| 亚洲激情第一页| 久久中文字幕精品| 欧美电影《轻佻寡妇》| 欧美精品在线免费播放| 日本一区二区免费在线观看| 久久av一区| 91精品视频播放| 成人av手机在线| 91蜜桃传媒精品久久久一区二区| 日韩视频在线观看国产| 91精品久久| 岛国av一区二区在线在线观看| 成人在线免费在线观看| 欧洲亚洲精品| 亚洲国产精品系列| 免费成人深夜天涯网站| 欧美91精品| 人九九综合九九宗合| 在线观看免费高清视频| 成人av高清在线| 亚洲欧美99| 国产天堂在线播放视频| 在线视频亚洲一区| 97免费公开视频| 国产乱码精品一区二区亚洲| 欧美大码xxxx| 波多野结衣视频在线观看| 国产乱码精品一区二区三| 久久综合一区| 羞羞电影在线观看www| 91福利区一区二区三区| 亚洲av无码久久精品色欲| 免费av一区二区三区四区| 久久精品国产一区二区电影| 日本中文字幕在线| 国产成人免费xxxxxxxx| 色之综合天天综合色天天棕色| 丝袜美女在线观看| 欧美日本韩国一区二区三区视频 | 91成品人影院| 91丨porny丨首页| 青青视频免费在线| 国产91欧美| 亚洲摸下面视频| 国产一级aa大片毛片| 久久国产日韩欧美精品| 欧洲久久久久久| 成人影音在线| 日韩丝袜美女视频| 国产wwwwxxxx| 日韩成人免费看| 国产伦理久久久| 欧美xxxx视频| 欧美肥妇毛茸茸| 欧美人与禽zoz0善交| 国产精品美女久久久| 99久久一区三区四区免费| 很黄的网站在线观看| 欧美日韩久久一区| 免费一级特黄3大片视频| 午夜一级久久| 国精产品99永久一区一区| 亚洲无线看天堂av| 日韩欧美aaaaaa| 内射一区二区三区| 精品在线播放午夜| 一区二区三区精品国产| 成人免费一区| 国产亚洲精品久久| 手机av免费观看| 国产午夜一区二区三区| 久久久久人妻精品一区三寸| 首页亚洲中字| 日韩av片免费在线观看| 日本人妖在线| 一本久道中文字幕精品亚洲嫩| 国产美女喷水视频| 亚洲免费一区二区| 欧美日韩国产高清视频| 9i看片成人免费高清| 亚洲精品网站在线播放gif| 亚洲GV成人无码久久精品 | 国产成人av免费在线观看| 久久精品国产在热久久| 中文字幕久久一区| 国产亚洲字幕| 欧美国产视频日韩| 三级网站在线看| 欧美日韩一区二区精品| 久久久久无码精品国产sm果冻| 日韩精品视频网| 这里只有精品66| 视频二区欧美| 欧美在线中文字幕| a视频网址在线观看| 欧美卡1卡2卡| 久久久久97国产| 99亚偷拍自图区亚洲| 亚洲成熟丰满熟妇高潮xxxxx| 久久91麻豆精品一区| 国产狼人综合免费视频| 91国内在线| 亚洲美女av在线| 一区二区三区精彩视频| 亚洲一区视频在线观看视频| 天天插天天射天天干| 奇米色一区二区三区四区| 国产人妻人伦精品| 天堂成人娱乐在线视频免费播放网站 | 日韩女优视频免费观看| 韩国av免费观看| 日本一区二区免费在线观看视频| 国产精欧美一区二区三区白种人| 国内视频精品| 视频在线一区二区三区| 国产亚洲观看| 国产福利精品视频| 少妇视频在线| 亚洲欧洲一区二区三区在线观看 | 国产河南妇女毛片精品久久久| 男人的天堂狠狠干| 久久婷婷蜜乳一本欲蜜臀| 国产亚洲自拍偷拍| 国产亚洲精彩久久| 午夜精品久久久久久久99热浪潮| 在线免费av网站| 亚洲国产欧美久久| 国产又粗又黄又爽| 欧美日韩激情网| 91porn在线视频| 久久精品视频网| 好吊操视频这里只有精品| 日韩av网站免费在线| 妞干网在线视频观看| 久久久久久久久久久久久久久久久久| 久久综合狠狠综合久久综青草| 日韩一区二区三区精品| 国产伦精品一区二区三区精品视频| freexxx性亚洲精品| 久久精品99久久久香蕉| 麻豆app在线观看| 精品99久久久久久| 国产欧美日韩成人| 欧美日韩在线电影| 亚洲影院在线播放| 亚洲丰满少妇videoshd| 国产成人免费在线观看视频| 国产亚洲精品中文字幕| 无码成人精品区在线观看| 国产剧情一区二区| 欧美女同在线观看| 日韩精品免费专区| 波多野结衣50连登视频| 激情成人亚洲| 免费看日本黄色| 91tv官网精品成人亚洲| 亚洲成人一区二区三区| 国产精品一区二区99| 玖玖玖精品中文字幕| 精品欧美午夜寂寞影院| 成人91视频| 国产精品欧美大片| 国产成人av一区二区三区| 久久精品九色| 亚洲永久免费观看| 日韩黄色av| 99视频日韩| 亚洲一区二区三区日本久久九| 亚洲一区亚洲二区| 国产免费av国片精品草莓男男| 国产精品永久在线| 欧美韩国日本| 91香蕉亚洲精品| 美国十次综合久久| 99久久99久久精品国产片| 9l视频自拍蝌蚪9l视频成人| 高清日韩一区| 麻豆一区一区三区四区| 久久66热这里只有精品| 杨幂一区二区三区免费看视频| 久久精品中文字幕一区二区三区| 免费观看成人www动漫视频| 精品欧美国产一区二区三区不卡| 精品福利一区| 久久99久久99精品蜜柚传媒| 在线日韩网站| 翔田千里亚洲一二三区| yw视频在线观看| 国产精品456露脸| 欧美xxxxxbbbbb| 国产福利视频一区二区三区| www.色.com| www.欧美色图| 蜜桃精品一区二区| 中文字幕乱码日本亚洲一区二区| 99热6这里只有精品| 伊人色综合久久天天人手人婷| 欧美成人aaaaⅴ片在线看| 欧美丝袜一区二区| 中文字幕久久久久| 欧美一卡在线观看| 天堂v在线观看| 亚洲欧美在线看| 欧美人xxx| 91精品国产91久久久久久| 国产精品极品美女在线观看| 91久久久久久久一区二区| 精品av导航| 亚洲精品在线视频观看| 欧美日韩三级| 国产真实乱子伦| 国产一区二区三区香蕉 | 久久九九精品视频| 精品在线一区| 91综合久久| 欧美在线观看成人| 久久国产精品无码网站| 免费的av网站| 亚洲精品免费看| 波多野结衣在线观看视频| 欧美一区二区播放| 国产爆初菊在线观看免费视频网站| 久久亚洲国产精品成人av秋霞| 中文在线中文资源| 91免费精品视频| 国产午夜一区| 国产高清av在线播放| 久久99精品久久久久久久久久久久 | 亚洲欧美www| 国产天堂在线播放视频| 国产欧美欧洲在线观看| 亚洲激情播播| 久久手机在线视频| 麻豆国产精品一区二区三区 | 91精品视频网站| 伊人成综合网yiren22| 毛片av在线播放| 美女一区二区久久| 三级电影在线看| 亚洲高清久久久| 国产又黄又猛又爽| 亚洲香蕉成人av网站在线观看| 国产伦久视频在线观看| 亚洲自拍欧美色图| 国产精品久久久久久| 国产免费人做人爱午夜视频| 成人av高清在线| 久久久久亚洲av无码专区 | 欧美在线一级va免费观看| 8x国产一区二区三区精品推荐| 在线免费观看成人| 日日夜夜精品视频天天综合网| 黄色网址在线视频| 一区二区久久久| 精品毛片在线观看| 久久久国产91| 电影中文字幕一区二区| 中文字幕一区二区三区四区五区六区| 久久高清一区| 黄色国产在线观看| 精品久久久久久| 色一情一乱一区二区三区| 久久久久久com| 2021年精品国产福利在线| 日韩视频 中文字幕| 国产成人精品影视| 精品无码久久久久| 精品国产一区二区三区av性色| 四虎亚洲精品| av一区二区三区免费| 欧美久久一级| 久久久久国产免费| 亚洲第一福利视频在线| 亚洲精品无amm毛片| 性欧美亚洲xxxx乳在线观看| 国内精品麻豆美女在线播放视频 | 在线观看v片| 欧美久久综合性欧美| 久久九九精品| 欧美午夜激情影院| 欧美日产国产精品| 黄色免费网站在线| 俄罗斯精品一区二区| 99精品国产一区二区青青牛奶| 精品黑人一区二区三区观看时间| 色噜噜偷拍精品综合在线| 都市激情在线视频| 91久久久在线| 国产精品草草| 变态另类丨国产精品| 欧美日韩在线综合| 天堂va在线| 欧美污视频久久久| 九一九一国产精品| 久草视频免费在线| 国产视频一区在线| 日韩久久99| 国产女教师bbwbbwbbw| 久久综合丝袜日本网| 在线观看中文字幕av| 欧美巨乳美女视频| 日韩最新在线| 在线观看av免费观看| 天天综合天天综合色| 91电影在线播放| 亚洲综合精品伊人久久| 亚洲经典在线看| 久操视频在线观看免费| 日韩一区二区三区三四区视频在线观看| wwwww亚洲| 日韩欧美激情一区二区| 国产成人小视频| 精品国产免费观看| 色噜噜狠狠狠综合曰曰曰| 激情小说亚洲色图| 日韩av在线中文| 精品免费在线视频| 老司机av在线免费看| 欧美lavv| 国产成人精品三级| 中文字幕乱码一区二区| 国内精品久久久久久中文字幕| 日韩久久精品| 全黄一级裸体片|