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

大牛深入解析SpringBoot核心運行原理和運作原理源碼

開發(fā) 前端
本章會帶領(lǐng)大家通過源碼學(xué)習(xí) Spring Boot 的核心運作原理,內(nèi)容涉及自動配置的運作原理、核心功能模塊、核心注解以及使用到的核心源代碼分析。

SpringBoot核心運行原理

Spring Boot 最核心的功能就是自動配置,第 1 章中我們已經(jīng)提到,功能的實現(xiàn)都是基于“約定優(yōu)于配置”的原則。那么 Spring Boot 是如何約定,又是如何實現(xiàn)自動配置功能的呢?

本章會帶領(lǐng)大家通過源碼學(xué)習(xí) Spring Boot 的核心運作原理,內(nèi)容涉及自動配置的運作原理、核心功能模塊、核心注解以及使用到的核心源代碼分析。

核心運行原理

使用 Spring Boot 時,我們只需引|入對應(yīng)的 Starters, Spring Boot 啟動時便會自動加載相關(guān)依賴,配置相應(yīng)的初始化參數(shù),以最快捷、簡單的形式對第三方軟件進(jìn)行集成,這便是 SpringBoot 的自動配置功能。我們先從整體上看一下 Spring Boot 實現(xiàn)該運作機(jī)制涉及的核心部分,如圖 2-1 所示。

 

大牛深入解析SpringBoot核心運行原理和運作原理源碼

圖 2-1 描述了 Spring Boot 自動配置功能運作過程中涉及的幾個核心功能及其相互之間的關(guān)系包括@EnableAutoConfiguration、spring.factories、各組件對應(yīng)的 AutoConfiguration 類、@Conditional 注解以及各種 Starters。

可以用一句話來描述整個過程:Spring Boot 通過@EnableAutoConfiguration 注解開啟自動配置,加載 spring.factories 中注冊的各種 AutoConfiguration 類,當(dāng)某個 AutoConfiguration類滿足其注解@Conditional 指定的生效條件(Starters 提供的依賴、配置或 Spring 容器中是否存在某個 Bean 等)時,實例化該 AutoConfiguration 類中定義的 Bean(組件等),并注入 Spring 容器,就可以完成依賴框架的自動配置。

我們先從概念及功能上了解一下圖 2-1 所示部分的作用及相互關(guān)系,在后面章節(jié)中會針對每個功能及組件進(jìn)行源代碼級別的講解。

  • ·@EnableAutoConfiguration:該注解由組合注解@SpringBootApplication 引入,完成自動配置開啟,掃描各個jar包下的spring.factories文件,并加載文件中注冊的AutoConfiguration類等。
  • ·spring.factories:配置文件,位于 jar 包的 META-INF 目錄下,按照指定格式注冊了自動配置的 AutoConfiguration 類。spring.factories 也可以包含其他類型待注冊的類。該配置文件不僅存在于 Spring Boot 項目中,也可以存在于自定義的自動配置(或 Starter)項目中。
  • ·AutoConfiguration 類:自動配置類,代表了 Spring Boot 中一類以 XXAutoConfiguration命名的自動配置類。其中定義了三方組件集成 Spring 所需初始化的 Bean 和條件。
  • ·@Conditional:條件注解及其衍生注解,在 AutoConfiguration 類上使用,當(dāng)滿足該條件注解時才會實例化 AutoConfiguration 類。
  • ·Starters:三方組件的依賴及配置,Spring Boot 已經(jīng)預(yù)置的組件。Spring Boot 默認(rèn)的Starters 項目往往只包含了一個 pom 依賴的項目。如果是自定義的 starter,該項目還需包含 spring.factories 文件、AutoConfiguration 類和其他配置類。

以上在概念層面介紹了 Spring Boot 自動配置的整體流程和基本運作原理,下面將會詳細(xì)介紹這幾個核心部分的組成結(jié)構(gòu)及源代碼。

運作原理源碼解析 Z@EnableAutoConfiguration

@EnableAutoConfiguration 是開啟自動配置的注解,在創(chuàng)建的 SpringBoot 項目中并不能直接看到此注解,它是由組合注解@SpringBootApplication 引入的。下面我們先來了解一下 入口類和@SpringBootApplication 注解的功能,然后再深入了解@EnableAutoConfiguration注解的構(gòu)成與作用。

入口類和@SpringBootApplication 注解

Spring Boot 項目創(chuàng)建完成會默認(rèn)生成-個*Application 的入口類。 在默認(rèn)情況下,無論是通過 IDEA 還是通過官方創(chuàng)建基于 Maven 的 Spring Boo 項目,入口類的命名規(guī)則都是artifactld+Application。通過該類的 main 方法即可啟動 Spring Boot 項目,代碼如下。

  1. @SpringBootApplication 
  2. public class SpringLearnApplication { 
  3. public static void main(String[] args) { 
  4. SpringApplication. run(DemoApplication. class, args); 
  5. }} 

這里的 main 方法并無特別之處,就是一一個標(biāo)準(zhǔn)的 Java 應(yīng)用的 main 方法,用于啟動 SpringBoot 項目的入口。在默認(rèn)情況下,按照上述規(guī)則命名并包含 main 方法的類稱為入口類。

在 Spring Boot 入口類(除單元測試外)中,唯一的一個注解就是@SpringBootApp-lication。

它是 Spring Boot 項目的核心注解,用于開啟自動配置,準(zhǔn)確說是通過該注解內(nèi)組合的@EnableAutoConfiguration 開啟了自動配置。

@SpringBootApplication 部分源代碼如下。

  1. @Target(ElementType . TYPE) 
  2. @Retent ion(Retent ionPolicy . RUNTIME) 
  3. @Documented 
  4. @Inherited 
  5. @SpringBootConfiguration 
  6. @EnableAutoConfi guration 
  7. @ComponentScan( excludeFilters = { 
  8. @Filter(type = FilterType .CUSTOM, classes = TypeExcludeFilter. class), 
  9. @Filter(type = FilterType. CUSTOM, 
  10. classes = AutoConf igurationExcludeFilter . class) })public @interface SpringBootApplication { 
  11. //排除指定自動配置類 
  12. @AliasFor(annotation = EnableAutoConfiguration.class) 
  13. Class<?>[] exclude() default {}; 
  14. //排除指定自動配置類名 
  15. @AliasFor( annotation = EnableAutoConfiguration. class) 
  16. String[] excludeName() default { 
  17. //指定掃描的基礎(chǔ)包,激活炷解組件的初始化 
  18. @AliasFor( annotation = ComponentScan. class, attribute = "basePackages"
  19. String[] scanBasePackages() default {}; 
  20. //指定掃描的類,用于初始化 
  21. @AliasFor( annotation = ComponentScan. class, attribute = "basePackageClass 
  22. Class<?>[] scanBasePackageClasses() default {}; 
  23. //指定是否代理@Bean 方法以強制執(zhí)行 bean 的生命周期行為 
  24. @AliasFor( annotation = Configuration.class) 
  25. boolean proxyBeanMethods() default true ; } 

通過源代碼可以看出,該注解提供了以下成員屬性(注解中的成員變量以方法的形式體現(xiàn))。

  • exclude:根據(jù)類(Class) 排除指定的自動配置,該成員屬性覆蓋了@SpringBoot-Application中組合的@ EnableAutoConfiguration 中定義的 exclude 成員屬性。
  • excludeName :根據(jù)類名排除指定的自動配置,覆蓋了@ EnableAutoConfiguration 中的excludeName 的成員屬性。
  • :scanBasePackages:指定掃描的基礎(chǔ) package,用于激活@Component 等注解類的初始化。
  • scanBasePackageClasses:掃描指定的類,用于組件的初始化。
  • :proxyBeanMethods:指定是否代理@ Bean 方法以強制執(zhí)行 bean 的生命周期行為。此功能需要通過運行時生成 CGLIB 子類來實現(xiàn)方法攔截。該子類有一定的限制,比如配置類及其方法不允許聲明為 final 等。

proxyBeanMethods 的默認(rèn)值為 true,允許配置類中進(jìn)行 inter-beanreferences (bean 之 間的引用)以及對該配置的@Bean 方法的外部調(diào)用。如果@Bean 方法都是自包含的,并且僅提供了容器使用的普通工程方法的功能,則可設(shè)置為 false,避免處理 CGLIB 子類。SpringBoot 2.2 版本上市后新增該成員屬性,后面章節(jié)涉及的自動配置類中基本都會用到proxyBeanMethods,一 般情況下都配置為 false。

通過以上源代碼我們會發(fā)現(xiàn),Spring Boot 中大量使用了@AliasFor 注解,該注解用于橋接到其他注解,該注解的屬性中指定了所橋接的注解類。如果點進(jìn)去查看,會發(fā)現(xiàn)@SpringBootApplication 定 義的屬性在其他注解中已經(jīng)定義過了。之所以使用@AliasFor注解并重新在@SpringBootApplication 中定義,更多是為了減少用戶使用多注解帶來的麻煩。

@SpringBootApplication

注 解 中 組 合 了 @SpringBootConfiguration 、@EnableAutoConfiguration 和@ComponentScan。因此,在實踐過程中也可以使用這 3 個注解來替代@SpringBootApplication。

在 Spring Boot 早期版本中并沒有@SpringBootConfiguration 注解,版本升級后新增了@SpringBootConfiguration 并在其內(nèi)組合了@Configuration。

@EnableAutoConfiguration 注解組合了@AutoConfigurationPackage.我們忽略掉一些基礎(chǔ)注解和元注解, @SpringBootApplication 注解的組合結(jié)構(gòu)可以參考圖2-2。

 

大牛深入解析SpringBoot核心運行原理和運作原理源碼

在圖2-2中,@SpringBootApplication除 了組合元注解之外,其核心作用還包括:激活SpringBoot 自 動 配 置 的 @EnableAutoConfiguration 、 激 活 @Component 掃 描 的@ComponentScan、激活配置類的@Configuration。

其中@ComponentScan 注解和@Configuration 注解在日常使用 Spring 時經(jīng)常用到,也非常 基 礎(chǔ) , 大 家應(yīng)該都有一些了 解 , 這 里 就 不 再 贅 述 了 。 下 面 詳 細(xì) 介 紹@EnableAuto-Configuration 的功能。

 

大牛深入解析SpringBoot核心運行原理和運作原理源碼

注解@EnableAutoConfiguration功能解析

在未使用 Spring Boot 的情況下,Bean 的生命周期由 Spring 來管理,然而 Spring 無法自動配置@Configuration 注解的類。而 Spring Boot 的核心功能之- 就是根據(jù)約定自動管理該注解標(biāo)注的類。用來實現(xiàn)該功能的組件之-便是@EnableAutoConfiguration 注解。

@EnableAutoConfiguration 位 于 spring-boot autoconfigure 包 內(nèi) , 當(dāng) 使 用@SpringBootApplication 注解時,@EnableAutoConfiguration 注 解會自動生效。

@EnableAutoConfiguration 的主要功能是啟動 Spring 應(yīng)用程序上下文時進(jìn)行自動配置,它會嘗試猜測并配置項目可能需要的 Bean。自動配置通常是基于項目 classpath 中引入的類和已定義的 Bean 來實現(xiàn)的。在此過程中,被自動配置的組件來自項目自身和項目依賴的 jar包中。

舉 個 例 子 : 如 果 將 tomcat-embedded.jar 添 加 到 classpath 下 , 那 么@EnableAutoConfiguration 會認(rèn)為你準(zhǔn)備用 TomcatServletWebServerFactory 類,并幫你初始化相關(guān)配置。與此同時,如果自定義了基于 ServletWebServerFactory 的 Bean ,那么@EnableAutoConfiguration 將不會進(jìn)行 TomcatServletWebServerFactory 類的初始化。這一系列的操作判斷都由 Spring Boot 來完成。

下面我們來看一下@EnableAutoConfiguration 注解的源碼。

  1. @Target(ElementType . TYPE) 
  2. @Retention( RetentionPolicy . RUNTIME) 
  3. @Documented 
  4. @Inherited 
  5. @AutoConfigurationPackage 
  6. @Import(AutoConf igurat ionImportSelector. class) 
  7. public @interface EnableAutoConfiguration { 
  8. //用來餐蓋配置開啟/關(guān)閉自動配置的功能 
  9. String ENABLED. OVERRIDE_ PROPERTY = "spring. boot . enableautoconf iguration" ; 
  10. //根據(jù)類(Class) 排除指定的自動配置 
  11. Class<?>[] exclude() default {}; 
  12. //根據(jù)類名排除指定的自動配置 
  13. String[] excludeName() default {}; 

@EnableAutoConfiguration 注解提供了一-個常量和兩個成員參數(shù)的定義。

ENABLED OVERRIDE PROPERTY:用來覆蓋開啟/關(guān)閉自動配置的功能。

  • -exclude:根據(jù)類(Class) 排除指定的自動配置。
  • excludeName:根據(jù)類名排除指定的自動配置。

正如上文所說,@EnableAutoConfiguration 會猜 測你需要使用的 Bean,但如果在實戰(zhàn)中你并不需要它預(yù)置初始化的 Bean,可通過該注解的 exclude 或 excludeName 參數(shù)進(jìn)行有針對性的排除。比如,當(dāng)不需要數(shù)據(jù)庫的自動配置時,可通過以下兩種方式讓其自動配置失效。

  1. //通過@SpringBootAppl ication 排除 DataSourceAutoConfiguration 
  2. @SpringBootApplication(exclude = DataSourceAutoConfiguration.class)public class SpringLearnApplication {}或://通過@Enabl eAutoConfiguration 排除 DataSourceAutoConfiguration 
  3. @Configuration@EnableAutoConfiguration( exclude = DataSourceAutoConfiguration. class)public class DemoConfiguration {} 

需要注意的是,被@EnableAutoConfiguration 注 解的類所在 package 還具有特定的意義,通常會被作為掃描注解@Entity 的根路徑。這也是在使用@SpringBootApplication 注解時需要將被注解的類放在頂級 package 下的原因,如果放在較低層級,它所在 package 的同級或上級中的類就無法被掃描到。

而 對 于 入 口 類 和 其 main 方 法 來 說 , 并 不 依 賴 @SpringBootApplication 注 解 或@EnableAuto-Configuration 注解,也就是說該注解可以使用在其他類上,而非入口類上。

責(zé)任編輯:未麗燕 來源: 今日頭條
相關(guān)推薦

2012-02-23 14:45:45

Linkedin運作原理

2020-10-22 08:25:22

JavaScript運作原理

2021-04-28 10:13:58

zookeeperZNode核心原理

2021-07-12 09:45:36

NameServer 核心Conusmer

2021-05-26 11:30:24

Java線程池代碼

2021-11-26 17:17:43

Android廣播運行原理源碼分析

2024-01-18 08:31:22

go實現(xiàn)gorm框架

2020-05-21 13:25:43

Spring組件架構(gòu)

2019-12-06 10:59:20

JavaScript運行引擎

2018-03-21 11:05:26

Spark大數(shù)據(jù)應(yīng)用程序

2015-10-10 09:39:42

Java線程池源碼解析

2013-06-08 10:11:31

Java線程池架構(gòu)

2025-02-06 08:24:25

AQS開發(fā)Java

2021-10-27 16:52:37

LayoutInfl源碼解析

2021-03-06 22:41:06

內(nèi)核源碼CAS

2010-09-09 10:09:07

Java內(nèi)存分配

2024-06-27 08:26:10

LooperAndroid內(nèi)存

2021-12-20 00:03:38

Webpack運行機(jī)制

2022-05-06 07:19:11

DOMDiff算法

2024-02-26 00:00:00

Nginx服務(wù)器HTTP
點贊
收藏

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

中文字幕的久久| 无码一区二区三区视频| 日韩欧美在线视频免费观看| 欧美日韩在线播放一区二区| 日韩黄色片网站| 日韩中文字幕高清在线观看| 欧美一级精品大片| 免费在线观看亚洲视频| 99精品老司机免费视频| 国产精品一区不卡| 欧美亚洲成人精品| 国产精品视频看看| 精品国产一区二区三区成人影院 | 亚洲男女性事视频| 亚洲精品免费一区亚洲精品免费精品一区 | 亚洲国产精品女人| 全色精品综合影院| 国产精品综合在线视频| 欧美在线视频a| 成人免费视频国产免费观看| 亚洲精品动态| 日韩一级二级三级| www.天天射.com| sm在线播放| 亚洲日本在线天堂| 欧美日韩电影一区二区| 丰满肉嫩西川结衣av| 免费在线视频一区| 欧美一级免费看| 五月天婷婷色综合| 日本一区二区在线看| 日韩高清有码在线| 性折磨bdsm欧美激情另类| 国产精品亲子伦av一区二区三区| 亚洲成人av在线电影| 欧美一级免费在线观看| 国产高清美女一级毛片久久| 99久久国产综合精品女不卡| 91嫩草视频在线观看| 中文字幕 国产| 久久成人免费| 亚州欧美日韩中文视频| 久久久久成人网站| 久久久久久免费视频| 中文字幕免费国产精品| 日韩一区二区a片免费观看| 精品国产导航| 精品国产乱码久久久久久牛牛| www.com久久久| 高清av一区| 在线观看免费亚洲| 国产精品亚洲a| 亚洲女色av| 欧美日韩免费一区| 浮妇高潮喷白浆视频| 台湾佬中文娱乐网欧美电影| 午夜激情一区二区| 国产免费观看高清视频| 丰满大乳少妇在线观看网站| 亚洲曰韩产成在线| av在线免费观看国产| 欧美xxxx黑人又粗又长| 亚洲欧美日本韩国| www国产无套内射com| 在线观看三级视频| 一区二区日韩av| 免费超爽大片黄| 国产美女高潮在线观看| 婷婷成人激情在线网| 国产精品xxxx喷水欧美| 24小时成人在线视频| 欧美三级电影一区| 性猛交ⅹ×××乱大交| 在线免费成人| 日韩一区二区三区观看| 亚洲熟妇一区二区| 极品尤物一区| 亚洲欧美另类中文字幕| 99久久99久久精品免费| 亚洲国产不卡| 欧美激情视频网站| 亚洲欧美精品一区二区三区| 日韩在线观看一区二区| 国产有码在线一区二区视频| 99久久精品国产色欲| 国产91精品免费| 久久久免费看| 免费大片黄在线| 亚洲一区二区黄色| 国产精品亚洲a| 国产激情综合| 精品国产乱码久久久久久1区2区| 少妇户外露出[11p]| 精品免费视频| 欧美高跟鞋交xxxxxhd| av大全在线观看| 久久精品999| 国产欧美日韩一区二区三区| 国产三区四区在线观看| 亚洲美女精品一区| 国产成人a亚洲精v品无码| 成人交换视频| 亚洲精品一区二区三区影院| 右手影院亚洲欧美| 亚洲成人二区| 日本欧美爱爱爱| 国产喷水福利在线视频| 久久久综合视频| 肉大捧一出免费观看网站在线播放| 美女的胸无遮挡在线观看| 欧美三区在线观看| 中文字幕精品视频在线| 欧美激情偷拍自拍| 欧洲日本亚洲国产区| 国产免费黄色片| 久久精品视频在线免费观看| 特大黑人娇小亚洲女mp4| 桃子视频成人app| 欧美va亚洲va| 久草福利资源在线| 模特精品在线| 国产精品国产精品国产专区不卡| 国产免费av在线| 亚洲成人免费在线| 992tv人人草| 郴州新闻综合频道在线直播| 91成人在线视频| 国内精品国产成人国产三级| 国产精品蜜臀av| 国语对白做受xxxxx在线中国| 51vv免费精品视频一区二区| 日韩三级成人av网| 欧美国产一级片| 久久亚洲免费视频| 国产日韩av网站| 亚洲不卡在线| 久久国产精品久久久久久| 在线观看免费中文字幕| 久久综合久色欧美综合狠狠| 欧美午夜性视频| 欧美成人毛片| 色爱av美腿丝袜综合粉嫩av| 国产剧情在线视频| 粉嫩绯色av一区二区在线观看 | 国产ts一区二区| 欧日韩在线视频| 亚洲精品国产成人久久av盗摄 | 不卡在线观看av| 国产 欧美 日韩 一区| 无码国模国产在线观看| 欧美另类老女人| 国产91视频在线| 亚洲免费av观看| 精品人妻一区二区三| 91精品蜜臀一区二区三区在线| 国产精品视频久久久| 成人在线免费观看| 欧美日韩国产欧美日美国产精品| 亚洲女人毛茸茸高潮| 秋霞电影一区二区| 亚洲欧洲一区二区在线观看| 日本a人精品| 欧美另类在线观看| 免费av一级片| 日韩欧美中文字幕在线观看| 91国模少妇一区二区三区| 久久中文精品| 在线观看亚洲视频啊啊啊啊| 日韩国产大片| 欧美国产日韩中文字幕在线| 亚洲欧美强伦一区二区| 韩曰欧美视频免费观看| 久久久视频6r| 精品一区二区三区的国产在线播放| 一区二区三区四区欧美日韩| 国产精品美女久久久久| 久久久在线视频| 日本人妖在线| 欧美日本国产视频| 免费在线观看亚洲| 91麻豆国产自产在线观看| 国产精品视频黄色| 久久精品免费一区二区三区| 国产精品区一区| 日韩免费va| 欧美成人黑人xx视频免费观看| 老牛影视av牛牛影视av| 色先锋资源久久综合| 少妇高潮在线观看| 99精品欧美一区二区三区小说| 日韩视频免费在线播放| 91精品亚洲| 久久久久久国产精品mv| 外国成人毛片| 久久青草福利网站| 免费在线性爱视频| 日韩视频在线一区二区| 国产日产精品一区二区三区| 亚洲欧洲美洲综合色网| 亚洲av成人精品一区二区三区 | 香蕉视频免费网站| 免费永久网站黄欧美| 亚洲综合欧美日韩| 日本欧美三级| 91视频婷婷| 欧洲成人一区| 97色在线观看| 成人在线免费看片| 亚洲人午夜精品| 欧美视频久久久| 欧美疯狂性受xxxxx喷水图片| 日产精品久久久| 一区二区在线观看视频| 能直接看的av| 久久免费偷拍视频| 免费黄色a级片| 久久成人羞羞网站| 北条麻妃av高潮尖叫在线观看| 极品裸体白嫩激情啪啪国产精品| 亚洲成人午夜在线| 伊人成综合网yiren22| 国产精品手机视频| 午夜电影一区| 成人网址在线观看| 四虎永久精品在线| 亚洲一区中文字幕在线| 亚洲午夜激情在线| 亚洲资源视频| 精品精品99| 乱色588欧美| 红杏视频成人| 91九色露脸| 999色成人| 国产精品视频999| 欧美成人黑人| 97精品国产91久久久久久| 黄在线免费观看| 亚洲人成电影网| 偷拍自拍在线| 精品国产一区二区三区不卡| 亚洲自拍偷拍另类| 欧美午夜精品一区| 精品免费囯产一区二区三区| 夜夜精品视频一区二区| 欧美激情精品久久| ●精品国产综合乱码久久久久| 亚洲综合网在线观看| 国产精品18久久久久| 污污的视频免费| 欧美日韩国产综合网| 91免费网站视频| 青青草综合网| 亚洲不卡中文字幕| 欧美黄色录像| 久久九九视频| 国产欧美一区二区精品久久久| 久久96国产精品久久99软件| 日韩三级精品| 国产精品日韩一区二区三区| 一区二区亚洲视频| av在线不卡观看| 1313精品午夜理伦电影| 91系列在线观看| 色妞ww精品视频7777| 91久久久久久国产精品| 亚洲精品三区| 国产精品福利视频| 伦理一区二区| 久久久精品有限公司| 国产精品一区二区99| 日本一区二区在线| 欧美日韩国产在线观看网站 | 免费97视频在线精品国自产拍| 网友自拍视频在线| 精品中文字幕在线2019| 性欧美video高清bbw| 欧美日韩成人网| 大桥未久在线播放| 国产成人精品亚洲精品| 小黄鸭精品aⅴ导航网站入口| 日韩av成人在线| 成人动漫一区| 成人在线中文字幕| 亚洲电影一区| 国产伦精品一区二区三| 妖精视频一区二区三区| 日本一区视频在线| 日韩在线综合| 131美女爱做视频| 久久这里只有| 精品亚洲视频在线| 99riav一区二区三区| 国产伦理片在线观看| 久久久久久综合| 538任你躁在线精品视频网站| 亚洲综合久久久久| www.日本精品| 日韩一级大片在线观看| 天堂av中文在线资源库| 一区二区欧美日韩视频| 丰满的护士2在线观看高清| 日韩av免费在线| 国产精品3区| 欧美亚洲免费高清在线观看| 久久免费av| 福利视频一区二区三区四区| 蜜桃91丨九色丨蝌蚪91桃色| 超碰91在线播放| 久久中文字幕电影| 久久久久久福利| 91福利视频网站| 国产高清视频免费| 中文字幕精品在线视频| 国产偷倩在线播放| 欧美在线一区二区视频| 中文在线综合| 日韩欧美在线一区二区| 中文字幕一区二区三区乱码图片| 亚洲成熟丰满熟妇高潮xxxxx| 久久精品国产999大香线蕉| 国产调教打屁股xxxx网站| 国产精品福利av | 亚洲综合激情另类小说区| 亚洲第一网站在线观看| 精品免费日韩av| 黄色在线网站| 2018日韩中文字幕| 日韩中文字幕视频网| 亚洲第一精品区| 久久久蜜桃一区二区人| 在线观看一区二区三区四区| 一区在线播放视频| 国产免费www| 日韩成人黄色av| 大菠萝精品导航| 国产欧美精品日韩精品| 自拍亚洲一区| 久久久免费视频网站| 国产69精品久久久久777| 四虎影成人精品a片| 黑人精品xxx一区一二区| 精品人妻久久久久一区二区三区 | 亚洲一区免费网站| 五月精品视频| www.se五月| 欧美激情一二三区| 成人黄色免费网| 亚洲香蕉伊综合在人在线视看| 182在线视频观看| 精品国产乱码久久久久久88av| 欧美激情1区2区3区| 黄色三级视频在线| 欧美韩国日本一区| 五月激情丁香网| 亚洲成人精品视频在线观看| 激情小说 在线视频| 热门国产精品亚洲第一区在线| 草莓视频一区二区三区| av之家在线观看| 99re视频这里只有精品| 欧美日韩大片在线观看| 亚洲福利影片在线| 7777kkk亚洲综合欧美网站| 久久99精品久久久久久水蜜桃| 狠狠爱成人网| 师生出轨h灌满了1v1| 五月婷婷综合在线| 色噜噜一区二区三区| 久久青草福利网站| 色综合中文网| 999精品视频在线| 亚洲婷婷国产精品电影人久久| 国产免费一区二区三区最新不卡| 日韩三级成人av网| 动漫3d精品一区二区三区乱码| 中国丰满熟妇xxxx性| 成人性生交大片免费看视频在线| 日本学生初尝黑人巨免费视频| 亚洲国语精品自产拍在线观看| 台湾佬中文娱乐网欧美电影| 欧美精品在线一区| 日本伊人色综合网| 青青草原国产视频| 欧美精品一区视频| 黄色精品视频| 在线视频欧美一区| 国产成人综合精品三级| 国产精品va无码一区二区三区| 国产一区二区三区高清在线观看| 欧美亚洲福利| 国产一区二区三区小说| av午夜精品一区二区三区| 中文字幕观看视频| 超碰97人人做人人爱少妇| 免费欧美网站| wwwxxx黄色片| 亚洲特黄一级片| 欧美成人片在线| 成人a级免费视频| 狠狠色狠狠色综合日日tαg|