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

揭秘Spring容器創建與啟動:從零到運行的全過程

開發 前端
在Spring中,Bean是指由Spring容器管理的對象。這些對象通常是應用程序的組件,如服務、數據訪問對象(DAO)、實體等。Bean由Spring容器負責實例化、組裝和管理

前言

Spring以其強大的IOC(控制反轉)和依賴注入功能而聞名,Bean的加載流程是整個應用程序初始化的核心步驟之一,它涉及到一系列的生命周期過程和初始化的步驟,確保Bean被正確地配置、依賴注入,并且能夠以可預測的方式運行。

配置方式有:

  • 基于XML方式
  • 基于注解方式

基礎概念

  • Bean:在Spring中,Bean是指由Spring容器管理的對象。這些對象通常是應用程序的組件,如服務、數據訪問對象(DAO)、實體等。Bean由Spring容器負責實例化、組裝和管理
  • Spring容器:Spring容器是一個負責創建、配置和管理Bean的容器。主要有兩種容器:BeanFactory和ApplicationContext。BeanFactory提供了基本的DI(依賴注入)功能,而ApplicationContext是BeanFactory的擴展,提供了更多的企業級功能,例如事件傳播、AOP、國際化等。
  • BeanPostProcessor:BeanPostProcessor是一個接口,允許在Bean實例化和初始化過程中插入自定義的處理邏輯。通過實現該接口,開發者可以在Bean初始化前后執行額外的邏輯操作。

正文

演示代碼

@ComponentScan("org.yian.bean")
@Configuration
public class BeanConfig {

    @Bean
    public Test test(){
        return new Test();
    }
}
@Test
public void test03(){
    AnnotationConfigApplicationContext applicationContext = new AnnotationConfigApplicationContext(BeanConfig.class);

    applicationContext.close();
}

初始化

重點關注 refresh() 方法,該方法實際是調用的父類 AbstractApplicationContext 的方法:

public AnnotationConfigApplicationContext(Class<?>... componentClasses) {
    this();
    this.register(componentClasses);
    this.refresh();
}
public void refresh() throws BeansException, IllegalStateException {
    synchronized(this.startupShutdownMonitor) {
        StartupStep contextRefresh = this.applicationStartup.start("spring.context.refresh");
        this.prepareRefresh();
        ConfigurableListableBeanFactory beanFactory = this.obtainFreshBeanFactory();
        this.prepareBeanFactory(beanFactory);

        try {
            this.postProcessBeanFactory(beanFactory);
            StartupStep beanPostProcess = this.applicationStartup.start("spring.context.beans.post-process");
            this.invokeBeanFactoryPostProcessors(beanFactory);
            this.registerBeanPostProcessors(beanFactory);
            beanPostProcess.end();
            this.initMessageSource();
            this.initApplicationEventMulticaster();
            this.onRefresh();
            this.registerListeners();
            this.finishBeanFactoryInitialization(beanFactory);
            this.finishRefresh();
        } catch (BeansException var10) {
            if (this.logger.isWarnEnabled()) {
                this.logger.warn("Exception encountered during context initialization - cancelling refresh attempt: " + var10);
            }

            this.destroyBeans();
            this.cancelRefresh(var10);
            throw var10;
        } finally {
            this.resetCommonCaches();
            contextRefresh.end();
        }

    }
}

1.刷新前的預處理:

圖片圖片

prepareRefresh():

  • initPropertySources():初始化一些屬性設置;子類自定義個性化的屬性設置方法;
  • getEnvironment().validateRequiredProperties():檢驗屬性的合法等
  • earlyApplicatinotallow= new LinkedHashSet<ApplicationEvent>():保存容器中的一些早期的事件

2.獲取BeanFactory:

圖片圖片

obtainFreshBeanFactory()

  • refreshBeanFactory():刷新【創建】BeanFactory

創建了一個this.beanFactory = new DefaultListableBeanFactory()

設置id

  • getBeanFactory():返回剛才GenericApplicationContext創建的BeanFactory對象
  • 將創建的BeanFactory【DefaultListableBeanFactory】返回

3.BeanFactory的預準備工作:

圖片圖片

prepareBeanFactory(beanFactory)

  • 設置BeanFactory的類加載器、支持表達式解析器...
  • 添加部分BeanPostProcessor【ApplicationContextAwareProcessor】
  • 設置忽略的自動裝配的接口EnvironmentAware、EmbeddedValueResolverAware、xxx
  • 注冊可以解析的自動裝配,我們能直接在任何組件中自動注入:BeanFactory、ResourceLoader、ApplicationEventPublisher、ApplicationContext
  • 添加BeanPostProcessor【ApplicationListenerDetector】
  • 添加編譯時的AspectJ;
  • 給BeanFactory中注冊一些能用的組件;
  • environment【ConfigurableEnvironment】
  • systemProperties【Map<String, Object>】
  • systemEnvironment【Map<String, Object>】

4.后置處理工作:

圖片圖片

postProcessBeanFactory(beanFactory)

  • 子類通過重寫這個方法來在BeanFactory創建并預準備完成以后做進一步的設置

5.執行BeanFactoryPostProcessor的方法:

圖片圖片

invokeBeanFactoryPostProcessors(beanFactory)

  • BeanFactoryPostProcessor:BeanFactory的后置處理器,在BeanFactory標準初始化之后執行的
  • 先執行BeanDefinitionRegistryPostProcessor的方法

獲取所有的BeanDefinitionRegistryPostProcessor

先執行實現了PriorityOrdered優先級接口的BeanDefinitionRegistryPostProcessor:postProcessor.postProcessBeanDefinitionRegistry(registry)

再執行實現了Ordered順序接口的BeanDefinitionRegistryPostProcessor:postProcessor.postProcessBeanDefinitionRegistry(registry)

最后執行沒有實現任何優先級或者是順序接口的BeanDefinitionRegistryPostProcessors:postProcessor.postProcessBeanDefinitionRegistry(registry)

  • 再執行BeanFactoryPostProcessor的方法
  • 獲取所有的BeanFactoryPostProcessor

  • 先執行實現了PriorityOrdered優先級接口的BeanFactoryPostProcessor:postProcessor.postProcessBeanFactory()

  • 再執行實現了Ordered順序接口的BeanFactoryPostProcessor:postProcessor.postProcessBeanFactory()

  • 最后執行沒有實現任何優先級或者是順序接口的BeanFactoryPostProcessor:postProcessor.postProcessBeanFactory()

6.注冊BeanPostProcessor:

圖片圖片

registerBeanPostProcessors(beanFactory)

  • 獲取所有的 BeanPostProcessor,后置處理器都默認可以通過PriorityOrdered、Ordered接口來執行優先級
  • 先注冊PriorityOrdered優先級接口的BeanPostProcessor,把每一個BeanPostProcessor添加到BeanFactory中,beanFactory.addBeanPostProcessor(postProcessor)
  • 再注冊Ordered接口的
  • 再注冊沒有實現任何優先級接口的
  • 再注冊MergedBeanDefinitionPostProcessor
  • 最后注冊一個ApplicationListenerDetector,來在Bean創建完成后檢查是否是ApplicationListener,如果是applicationContext.addApplicationListener((ApplicationListener<?>) bean)

7.初始化MessageSource組件:

圖片圖片

initMessageSource()

  • 獲取BeanFactory
  • 看容器中是否有id為messageSource的,類型是MessageSource的組件,如果有賦值給messageSource,如果沒有自己創建一個DelegatingMessageSource【MessageSource:取出國際化配置文件中的某個key的值;能按照區域信息獲取】
  • 把創建好的MessageSource注冊在容器中,以后獲取國際化配置文件的值的時候,可以自動注入MessageSource

8.初始化事件派發器:

圖片圖片

  • initApplicationEventMulticaster()
  • 獲取BeanFactory
  • 從BeanFactory中獲取applicationEventMulticaster的ApplicationEventMulticaster
  • 如果上一步沒有配置;創建一個SimpleApplicationEventMulticaster
  • 將創建的ApplicationEventMulticaster添加到BeanFactory中,以后其他組件直接自動注入

9.容器刷新:

圖片圖片

  • onRefresh():留給子容器(子類)
  • 子類重寫這個方法,在容器刷新的時候可以自定義邏輯

10.注冊監聽器:

圖片圖片

  • registerListeners(),給容器中將所有項目里面的ApplicationListener注冊進來;
  • 從容器中拿到所有的ApplicationListener
  • 將每個監聽器添加到事件派發器中:getApplicationEventMulticaster().addApplicationListenerBean(listenerBeanName)
  • 派發之前步驟產生的事件;

11.初始化所有剩下的單實例bean

圖片圖片

  • finishBeanFactoryInitialization(beanFactory)
  • 獲取容器中的所有Bean,依次進行初始化和創建對象
  • 獲取Bean的定義信息,RootBeanDefinition
  • Bean不是抽象的,是單實例的,是懶加載

判斷是否是FactoryBean,是否是實現FactoryBean接口的Bean

不是工廠Bean,利用getBean(beanName)創建對象

檢查所有的Bean是否是SmartInitializingSingleton接口的,如果是就執行afterSingletonsInstantiated()

  • getBean(beanName):

圖片圖片

  • 先獲取緩存中保存的單實例Bean ,如果能獲取到說明這個Bean之前被創建過(所有創建過的單實例Bean都會被緩存起來)
  • 緩存中獲取不到,開始Bean的創建對象流程
  • 標記當前bean已經被創建
  • 獲取Bean的定義信息
  • 獲取當前Bean依賴的其他Bean,如果有按照getBean()把依賴的Bean先創建出來
  • 啟動單實例Bean的創建流程:

createBean(beanName, mbd, args)

resolveBeforeInstantiation(beanName, mbdToUse):讓BeanPostProcessor先攔截返回代理對象,InstantiationAwareBeanPostProcessor提前執行,先觸發postProcessBeforeInstantiation(),如果有返回值則觸發postProcessAfterInitialization()

doCreateBean(beanName, mbdToUse, args):創建Bean

將創建的Bean添加到緩存中singletonObjects

doCreateBean(beanName, mbdToUse, args):

圖片圖片

  • 創建Bean實例:利用工廠方法或者對象的構造器創建出Bean實例
  • 調用MergedBeanDefinitionPostProcessor的postProcessMergedBeanDefinition(mbd, beanType, beanName):bean合并后的處理,Autowired注解正是通過此方法實現諸如類型的預解析,可查看AutowiredAnnotationBeanPostProcessor#postProcessMergedBeanDefinition
  • getEarlyBeanReference(beanName, mbd, bean):創建這個Bean的ObjectFactory的對象,并且把他加到第三級緩存中,主要用來解決循環依賴
  • populateBean(beanName, mbd, instanceWrapper):Bean屬性賦值

拿到InstantiationAwareBeanPostProcessor后置處理器,執行postProcessAfterInstantiation()和postProcessPropertyValues()

applyPropertyValues(beanName, mbd, bw, pvs):應用Bean屬性的值,為屬性利用setter方法等進行賦值

  • initializeBean(beanName, exposedObject, mbd):Bean初始化
  • invokeAwareMethods(beanName, bean):執行xxxAware接口的方法

  • applyBeanPostProcessorsBeforeInitialization(wrappedBean, beanName):執行后置處理器初始化之前

  • invokeInitMethods(beanName, wrappedBean, mbd):執行初始化方法,是否是InitializingBean接口的實現;是否自定義初始化方法

  • applyBeanPostProcessorsAfterInitialization(wrappedBean, beanName):執行后置處理器初始化之后

  • 從一級或者二級緩存中獲取Bean的實例,不從三級緩存中取

  • 注冊Bean的銷毀方法

12.完成BeanFactory的初始化創建工作:

圖片圖片

finishRefresh()

  • initLifecycleProcessor():初始化和生命周期有關的后置處理器,默認從容器中找是否有lifecycleProcessor的組件,如果沒有new DefaultLifecycleProcessor()加入到容器
  • getLifecycleProcessor().onRefresh():拿到前面定義的生命周期處理器(BeanFactory回調onRefresh()
  • publishEvent(new ContextRefreshedEvent(this)):發布容器刷新完成事件
  • liveBeansView.registerApplicationContext(this):向容器中注冊spring.liveBeansView.mbeanDomain
責任編輯:武曉燕 來源: 一安未來
相關推薦

2024-01-03 10:12:07

Kubernetesdeploymentpod

2025-06-04 02:35:00

2010-11-19 10:11:49

Oracle物化視圖

2009-11-02 14:53:30

Oracle創建用戶權

2011-04-18 15:56:10

軟件測試

2011-02-22 10:46:02

Samba配置

2009-07-03 10:33:07

C#創建COM組件

2010-06-13 16:58:11

Grub 命令行

2024-01-02 09:19:15

kubernetes集群HTTP

2011-09-06 15:38:20

QT安裝

2011-01-21 17:51:52

2009-04-13 12:37:18

2009-12-08 17:56:16

WCF配置

2016-12-09 11:55:10

2024-05-23 13:26:27

2010-06-11 13:15:07

UML軟件

2017-04-25 18:03:11

Caffe深度學習框架

2011-03-11 10:39:02

YUM安裝LAMP

2010-07-21 14:51:19

telnet-serv

2019-05-14 15:27:31

MongoDB自動備份數據庫
點贊
收藏

51CTO技術棧公眾號

欧美大片免费观看在线观看网站推荐| 欧美体内she精视频| 国产欧美日韩亚洲| 久久久久在线视频| 天天做天天爱综合| 亚洲第一区中文字幕| 97在线免费公开视频| 日本成a人片在线观看| 粉嫩av一区二区三区| 日本成人在线视频网址| 国产高潮国产高潮久久久91| 免费一区二区| 日韩视频免费观看高清完整版 | 疯狂做受xxxx欧美肥白少妇| 婷婷五月色综合| 男人天堂综合网| 捆绑调教一区二区三区| 久久久免费电影| 战狼4完整免费观看在线播放版| aaa国产精品| 欧美日韩一区视频| 男人和女人啪啪网站| 黄网站免费在线观看| 久久中文字幕电影| 高清视频在线观看一区| 91福利在线观看视频| 美女诱惑一区| 韩国一区二区电影| 免费中文字幕日韩| 欧美色女视频| 亚洲精品自拍第一页| 免费在线观看日韩av| 国产原创一区| 欧美亚洲综合久久| 男人操女人免费| 91桃色在线观看| 亚洲理论在线观看| 国产精品12p| 午夜视频在线观看免费视频| 国产天堂亚洲国产碰碰| 精品午夜一区二区三区| 精品国产av 无码一区二区三区 | 九九热视频免费| av在线不卡精品| 色一区在线观看| 人妻内射一区二区在线视频| 欧美a级在线观看| 亚洲第一久久影院| 丰满少妇久久久| gogo久久| 亚洲成人激情自拍| 无码人妻少妇伦在线电影| 天使と恶魔の榨精在线播放| 综合在线观看色| 一区二区三区国| 香蕉视频网站在线观看| 亚洲欧美影音先锋| 男人j进女人j| 美女网站视频在线| 亚洲最大成人综合| 亚洲国产精品无码观看久久| av手机免费在线观看| 亚洲国产精品人人做人人爽| 日日摸日日碰夜夜爽无码| 僵尸再翻生在线观看| 欧美三级免费观看| 老熟妇仑乱视频一区二区| 国产成人精品123区免费视频| 欧美综合色免费| 污污网站免费观看| 韩国三级成人在线| 日韩精品专区在线影院重磅| 国产精品手机在线观看| 欧美日韩一本| 国产亚洲xxx| 九九热视频在线免费观看| 午夜日韩视频| 91高清视频免费| 超碰在线免费97| 国产又黄又猛又粗| 懂色av一区二区夜夜嗨| 在线视频日韩精品| 日韩一卡二卡在线观看| 日韩精品欧美| 久久国产精品久久久久久久久久 | 中文字幕乱码一区二区免费| 亚洲视频在线二区| av软件在线观看| 亚洲成人一区在线| 日本999视频| 国产精品一站二站| 亚洲精品久久久久久久久| 亚洲第一页av| 91成人国产| 456亚洲影院| 91免费视频播放| 成人免费视频caoporn| 日本电影一区二区三区| 午夜视频在线看| 精品福利在线看| 91看片破解版| 国产乱码精品一区二区亚洲| 久久精品电影网站| 国产精品第5页| 黑人精品欧美一区二区蜜桃| 黑人巨大精品欧美一区二区小视频 | 日本中文字幕不卡| 99se婷婷在线视频观看| 成年人在线视频| 亚洲电影一级黄| 911福利视频| 在线观看欧美理论a影院| 久久成人精品一区二区三区| 黄色污污网站在线观看| 国产成人一区在线| 亚洲精品中文字幕乱码三区不卡| 538在线观看| 欧美一卡2卡三卡4卡5免费| 91中文字幕永久在线| 黑丝一区二区三区| 成人美女av在线直播| 国产高清在线| 午夜电影一区二区| 国产乱淫av麻豆国产免费| 色琪琪久久se色| 青青久久av北条麻妃海外网| www.97超碰| 中文字幕日韩一区| 无码内射中文字幕岛国片| 美国一区二区| 欧美黑人xxxⅹ高潮交| 国产精品久久影视| 中文字幕不卡在线播放| 精品久久久久av| 欧美freesex8一10精品| 欧美黑人性生活视频| 国产女人爽到高潮a毛片| 国产精品毛片a∨一区二区三区| 成人黄色片视频| 欧美日韩精品一区二区三区在线观看| 欧美精品aaa| av中文字幕免费| 亚洲男同性视频| 999久久久精品视频| 99精品电影| 成人激情免费在线| 成人国产免费电影| 日韩一区二区三区在线观看| 国产一二三四区| 国产精品99久久久久久久女警 | 91黄色免费版| 欧美黄色激情视频| 免费高清不卡av| 亚洲精品乱码久久久久久蜜桃91| 欧美日韩女优| 色婷婷综合成人av| hs视频在线观看| 一区二区三区加勒比av| 天天躁日日躁狠狠躁免费麻豆| 国产综合久久| 久久久av水蜜桃| 欧美在线va视频| 中文字幕亚洲二区| 国产精品久久影视| 亚洲五月六月丁香激情| 成人免费无码大片a毛片| 久久国产成人| 亚洲欧美日韩不卡一区二区三区| 97色婷婷成人综合在线观看| 色综合久久天天综线观看| 欧美一区二区公司| 色综合久久久久| 天天色影综合网| 成人丝袜视频网| 免费观看成人在线视频| 欧美激情另类| 国产日韩三区| 日韩中文视频| 久久国内精品一国内精品| 午夜美女福利视频| 欧美日韩久久久久| 乱老熟女一区二区三区| 成人做爰69片免费看网站| 成人小视频在线看| 亚洲最新av| 久久久福利视频| 亚洲精品成a人ⅴ香蕉片| 久久久久国产精品免费| 国产一级免费在线观看| 欧美一卡二卡在线观看| 69亚洲精品久久久蜜桃小说| 亚洲欧美在线另类| 无码人妻精品一区二区三区温州| 蜜桃91丨九色丨蝌蚪91桃色| av在线观看地址| 精品一区二区三| 国产精品视频500部| 天堂久久午夜av| 午夜精品久久久久久久久久久久 | 波多野结衣欧美| 国产精品视频99| xxxx成人| 久久久成人精品视频| 亚洲人成色777777精品音频| 欧美高清www午色夜在线视频| 日韩三级小视频| 亚洲色图20p| 在线小视频你懂的| 成人av电影在线网| www.日本久久| 日精品一区二区三区| 加勒比成人在线| 婷婷另类小说| 日韩午夜视频在线观看| 欧美电影在线观看免费| 91在线看网站| 久久er热在这里只有精品66| 欧美在线视频播放| free性欧美| 欧美久久精品一级黑人c片| 成人在线免费看| 亚洲欧美一区二区三区情侣bbw| а√天堂资源在线| 91麻豆精品国产91久久久久| 樱花视频在线免费观看| 激情成人中文字幕| 精品无码人妻一区二区三区| 亚洲啪啪综合av一区二区三区| 无码人妻丰满熟妇啪啪欧美| 91色porny在线视频| 波多野结衣办公室双飞| 国产精品白丝jk白祙喷水网站| 国产野外作爱视频播放| 日本人妖一区二区| 少妇性l交大片| 免费看的黄色欧美网站| 国产视频九色蝌蚪| 国产麻豆综合| 激情五月开心婷婷| 午夜亚洲伦理| 国产成人精品无码播放| 日韩国产欧美一区二区三区| 日本成年人网址| 久久精品人人| 青青草av网站| 蜜桃精品视频在线| 欧美日韩一区二区三区69堂| 免费的成人av| 午夜激情影院在线观看| 久久99久久99| 手机在线播放av| 成人一区二区在线观看| 日本一区二区在线观看视频| gogo大胆日本视频一区| av网站有哪些| 国产欧美日韩久久| 四季av中文字幕| 中文字幕在线不卡国产视频| 男人av资源站| 亚洲成人一区在线| 黄色一级片免费在线观看| 色欧美片视频在线观看 | 久久裸体视频| 欧美婷婷精品激情| 国产一区二区免费视频| 成人免费看片载| 久久欧美中文字幕| 日本一区二区视频在线播放| 中文字幕一区在线观看视频| 青娱乐在线视频免费观看| 午夜激情综合网| 综合久久中文字幕| 欧美成人vps| 日韩电影网址| www国产精品视频| 日本在线观看大片免费视频| 国产91av在线| 日本午夜免费一区二区| 国产高清不卡av| 蜜桃a∨噜噜一区二区三区| 一本色道久久综合亚洲二区三区| 一区二区三区中文| 高清在线观看免费| 久久国产精品一区二区| 蜜臀aⅴ国产精品久久久国产老师| 久久综合久久综合久久| 任我爽在线视频| 亚洲高清视频的网址| 自拍偷拍福利视频| 亚洲成人免费在线视频| 成人18在线| 亚洲**2019国产| 伊人久久精品| 久久影院理伦片| 亚洲女同一区| 欧美少妇性生活视频| 国产激情偷乱视频一区二区三区| 右手影院亚洲欧美| 一区二区三区美女| 在线观看国产精品视频| 亚洲福利视频二区| 美女av在线播放| 日韩av片免费在线观看| 国产一区二区三区视频在线| 欧美日韩精品中文字幕一区二区| 欧美国产激情| 日韩精品视频一二三| av中文字幕不卡| 欧美日韩在线视频免费播放| 91国产精品成人| 五月婷婷六月激情| 久久99国产精品自在自在app| 99久久久国产精品免费调教网站| 国产一区二区精品免费| 天天综合精品| www.天天射.com| 337p粉嫩大胆噜噜噜噜噜91av| 玖玖爱这里只有精品| 欧美性大战久久| 青青九九免费视频在线| 欧美激情在线观看视频| 中文字幕综合| 亚洲欧美日产图| 日韩和欧美一区二区三区| 欧美 日本 国产| 五月综合激情网| 亚洲第一黄色片| 久久6精品影院| 国产精一区二区| 中文字幕免费高| 久久精品国产亚洲一区二区三区| 美女100%无挡| 色伊人久久综合中文字幕| | 色妞在线综合亚洲欧美| 粉嫩一区二区三区| 日本高清一区| 久久看片网站| 先锋影音av在线| 欧美亚洲国产怡红院影院| 免费在线看v| 青草热久免费精品视频| 最新亚洲精品| 北条麻妃av高潮尖叫在线观看| 久久久不卡影院| 免费精品一区二区| 在线日韩欧美视频| 黄色欧美视频| 9色视频在线观看| 国产精品白丝av| 日本三级午夜理伦三级三| 亚洲第一色中文字幕| 岛国av免费在线观看| 久久久久久久有限公司| 欧美亚洲三级| 免费一级做a爰片久久毛片潮| 在线国产电影不卡| 日本在线观看网站| 亚洲xxxxx性| 一区视频在线| 中国黄色a级片| 在线免费观看日韩欧美| 97在线观看免费观看高清 | 激情小说亚洲色图| www.com毛片| 国产欧美日韩亚州综合 | 日韩av在线一区二区| 亚洲天堂电影| 亚洲激情一区二区| 国产高清成人在线| 800av免费在线观看| 国产亚洲精品久久久久久777| 国产精品99久久久久久董美香 | 欧美日本韩国一区| 羞羞视频在线观看免费| 韩国成人av| 麻豆成人av在线| 久久久久人妻一区精品色欧美| 日韩精品免费视频| 国产精品成人国产| 成人在线国产视频| 国产日产亚洲精品系列| 国产乱码精品一区二三区蜜臂| 欧美黑人又粗大| 精品影片在线观看的网站| 三级性生活视频| 亚洲成人动漫精品| 91在线视频| 国产高清在线一区| 麻豆国产欧美一区二区三区| 亚洲国产成人精品综合99| 亚洲精品日韩在线| 国产精品亚洲综合在线观看| 欧美啪啪免费视频| 亚洲日本乱码在线观看| 完全免费av在线播放| 91在线色戒在线| 欧美亚洲专区| 国产亚洲精品女人久久久久久| 亚洲色图50p|