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

一個(gè) JAR 就能跑!Spring Boot 自運(yùn)行的秘密,你真的懂了嗎?

開發(fā) 開發(fā)工具
竟能讓整個(gè) Web 應(yīng)用“即裝即跑”。?你或許已經(jīng)無數(shù)次使用過這種方式啟動(dòng)服務(wù),但它為什么能做到“一包走天下”??這篇文章,我們就帶你從底層打包機(jī)制、啟動(dòng)流程到類加載策略,完整解析 Spring Boot 的自運(yùn)行秘密。

在 Java 世界里,應(yīng)用的部署一向被認(rèn)為是“繁瑣的代名詞”:依賴沖突、服務(wù)器配置、JAR 與 WAR 的混用問題層出不窮。 而 Spring Boot 橫空出世后,一句簡(jiǎn)單的命令:

java -jar myapp.jar

竟能讓整個(gè) Web 應(yīng)用“即裝即跑”。 你或許已經(jīng)無數(shù)次使用過這種方式啟動(dòng)服務(wù),但它為什么能做到“一包走天下”? 這篇文章,我們就帶你從底層打包機(jī)制、啟動(dòng)流程到類加載策略,完整解析 Spring Boot 的自運(yùn)行秘密。

Spring Boot Fat JAR 解剖:一個(gè)能自己跑的 JAR 是怎么生出來的?

Spring Boot 構(gòu)建的可執(zhí)行包,本質(zhì)上是一種特殊結(jié)構(gòu)的 Fat JAR(胖 JAR)。 它并不僅僅包含業(yè)務(wù)代碼,還把所有依賴、類加載器以及嵌入式服務(wù)器一并封裝進(jìn)去——就像把整個(gè)應(yīng)用系統(tǒng)塞進(jìn)了一個(gè)“集裝箱”。

當(dāng)我們解壓一個(gè)典型的 Spring Boot JAR,可以看到如下結(jié)構(gòu)(路徑采用 Linux 風(fēng)格):

/BOOT-INF/classes/        # 編譯后的業(yè)務(wù)代碼與配置文件
/BOOT-INF/lib/            # 所有項(xiàng)目依賴的第三方庫
/org/springframework/boot/loader/  # Spring Boot 啟動(dòng)加載器核心
/META-INF/MANIFEST.MF     # 指定應(yīng)用元數(shù)據(jù)和啟動(dòng)入口

其中:

  • BOOT-INF/classes:包含你寫的 Controller、Service、Repository 等核心邏輯;
  • BOOT-INF/lib:聚合項(xiàng)目依賴,如 Spring 框架核心庫、數(shù)據(jù)庫驅(qū)動(dòng)、日志組件;
  • org/springframework/boot/loader:封裝了 Spring Boot 的引導(dǎo)器類(JarLauncher、LaunchedURLClassLoader 等);
  • 嵌入式 Tomcat/Jetty:被直接打入包內(nèi),無需外部服務(wù)器即可運(yùn)行。

這種結(jié)構(gòu)正是 Spring Boot 能“一鍵運(yùn)行”的核心所在:應(yīng)用邏輯 + 基礎(chǔ)依賴 + 容器環(huán)境一體化打包

META-INF/MANIFEST.MF:JAR 的“啟動(dòng)指南”

Fat JAR 的真正“魔法開關(guān)”藏在 /META-INF/MANIFEST.MF 文件中。 這個(gè)文件就像 JAR 包的身份證,告訴 JVM 如何正確啟動(dòng)應(yīng)用。

打開它,你會(huì)看到關(guān)鍵配置:

Main-Class: org.springframework.boot.loader.JarLauncher
Start-Class: com.icoderoad.demo.DemoApplication
Spring-Boot-Classes: BOOT-INF/classes/
Spring-Boot-Lib: BOOT-INF/lib/

解釋如下:

  • Main-Class:指定 Spring Boot 的啟動(dòng)加載器 JarLauncher
  • Start-Class:你的主應(yīng)用類(帶 @SpringBootApplication 注解);
  • Spring-Boot-Classes / Spring-Boot-Lib:定義了程序代碼與依賴庫的加載路徑;
  • 額外屬性如 Spring-Boot-Layers-Index 則用于支持 Docker 鏡像的分層優(yōu)化。

這份元數(shù)據(jù)文件讓 JVM 能在執(zhí)行 java -jar 時(shí),準(zhǔn)確找到加載器與主類,實(shí)現(xiàn)自動(dòng)運(yùn)行。

Maven 打包背后的“魔術(shù)師”:spring-boot-maven-plugin

Spring Boot 的 Fat JAR 不是憑空生成的,而是 Maven 插件在構(gòu)建階段的“再加工”成果。 構(gòu)建流程核心在 spring-boot-maven-plugin 的 <goal>repackage</goal> 階段。

示例配置如下:

<build>
    <plugins>
        <plugin>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-maven-plugin</artifactId>
            <version>2.7.5</version>
            <executions>
                <execution>
                    <goals>
                        <goal>repackage</goal>
                    </goals>
                </execution>
            </executions>
        </plugin>
    </plugins>
</build>

當(dāng)執(zhí)行:

mvn clean package

時(shí),Maven 會(huì)先構(gòu)建普通 JAR,然后由該插件的 Repackager 類進(jìn)行“二次封裝”:

  1. 拷貝依賴庫 → /BOOT-INF/lib/
  2. 編譯業(yè)務(wù)代碼 → /BOOT-INF/classes/
  3. 注入啟動(dòng)類與元信息 → /META-INF/MANIFEST.MF
  4. 將加載器類寫入 /org/springframework/boot/loader/

最終生成一個(gè)可直接運(yùn)行的單體包,即 Spring Boot 的 Fat JAR。

Repackager 內(nèi)幕:Spring Boot 如何“再包裝”普通 JAR?

Spring Boot 的 Repackager 類是整個(gè)打包過程的中樞。 它的職責(zé)類似“自動(dòng)搬運(yùn)工”,把項(xiàng)目產(chǎn)物重新組織成可執(zhí)行結(jié)構(gòu)。

打包核心邏輯如下:

  • 從 Maven 原始 JAR 中讀取類文件;
  • 解析依賴樹,復(fù)制依賴至 /BOOT-INF/lib/
  • 寫入應(yīng)用類至 /BOOT-INF/classes/
  • 生成新的 MANIFEST.MF
  • 最終寫入啟動(dòng)入口為 org.springframework.boot.loader.JarLauncher

當(dāng)你遇到啟動(dòng)失敗或依賴未打入時(shí),通常是 Repackager 的布局定義或路徑出錯(cuò)。 理解這一機(jī)制能幫助你快速定位打包異常。

Spring Boot 啟動(dòng)原理:從 JarLauncher 到應(yīng)用啟動(dòng)

執(zhí)行命令:

java -jar app.jar

JVM 會(huì)讀取 MANIFEST.MF,發(fā)現(xiàn)入口是 org.springframework.boot.loader.JarLauncher,于是從該類啟動(dòng):

public class JarLauncher extends ExecutableArchiveLauncher {
    public static void main(String[] args) throws Exception {
        new JarLauncher().launch(args);
    }
    protected JarLauncher() throws Exception { }
}

這一啟動(dòng)鏈條如下:

  1. JarLauncher.main() 啟動(dòng);
  2. 調(diào)用 ExecutableArchiveLauncher.launch()
  3. 創(chuàng)建 LaunchedURLClassLoader
  4. 加載 /BOOT-INF/lib 下所有依賴;
  5. 反射調(diào)用 Start-Class(如 com.icoderoad.demo.DemoApplication)的 main()
  6. 啟動(dòng)嵌入式服務(wù)器(Tomcat/Jetty),初始化 Spring 容器。

整個(gè)過程實(shí)現(xiàn)了從“自引導(dǎo)加載器”到“應(yīng)用啟動(dòng)”的全自動(dòng)化封裝。

依賴加載與內(nèi)嵌服務(wù)器初始化

Spring Boot 的 LaunchedURLClassLoader 能突破 JVM 原生類加載限制,從嵌套的 JAR 中直接加載資源。 它通過 Spring-Boot-Lib 屬性遍歷 /BOOT-INF/lib/,將所有依賴動(dòng)態(tài)加入類路徑。

加載完成后,Spring Boot 自動(dòng)配置模塊開始發(fā)揮作用:

  • 讀取 application.yml 或 application.properties
  • 啟動(dòng)內(nèi)嵌 Tomcat;
  • 初始化 Spring 容器;
  • 執(zhí)行帶 @SpringBootApplication 注解的主類。

例如:

server.port=8081
server.servlet.context-path=/myapp

當(dāng)啟動(dòng)后,你的應(yīng)用即通過 http://localhost:8081/myapp 直接訪問,無需額外部署。

JVM 類加載機(jī)制回顧:Spring Boot 如何打破常規(guī)?

JVM 類加載過程分為:加載 → 驗(yàn)證 → 準(zhǔn)備 → 解析 → 初始化。 傳統(tǒng)機(jī)制遵循 雙親委派模型,即子加載器先請(qǐng)求父加載器查找類,若未找到再自行加載。

而 Spring Boot 的可執(zhí)行 JAR 結(jié)構(gòu)中,所有依賴都打包在內(nèi)部 JAR 中。 如果繼續(xù)沿用雙親委派,會(huì)導(dǎo)致版本沖突或無法加載嵌套資源。 因此,Spring Boot 實(shí)現(xiàn)了一個(gè)自定義加載器 LaunchedURLClassLoader,改變了加載順序:

@Override
protected Class<?> loadClass(String name, boolean resolve) throws ClassNotFoundException {
    synchronized (getClassLoadingLock(name)) {
        Class<?> loadedClass = findLoadedClass(name);
        if (loadedClass == null) {
            try {
                // 優(yōu)先從自身 JAR 加載
                loadedClass = findClass(name);
            } catch (ClassNotFoundException ex) {
                // 加載失敗時(shí)再委派父加載器
                loadedClass = super.loadClass(name, false);
            }
        }
        if (resolve) {
            resolveClass(loadedClass);
        }
        return loadedClass;
    }
}

這種機(jī)制讓 Spring Boot 優(yōu)先加載內(nèi)部依賴,防止與系統(tǒng)類庫沖突,也讓嵌套 JAR 的資源可被正常訪問。

JarURLConnection:讀取嵌套 JAR 的秘密武器

在傳統(tǒng) JVM 中,類加載器無法直接讀取“JAR 中的 JAR”。 Spring Boot 通過 JarURLConnection 實(shí)現(xiàn)了資源訪問的橋梁,使得 /BOOT-INF/lib/*.jar 中的文件可被直接讀取。

這樣,配置文件、類、靜態(tài)資源等都能像普通文件一樣加載。 這一步,是 Spring Boot 能將整個(gè)世界“打包帶走”的最后一環(huán)。

結(jié)語:一個(gè) JAR 的優(yōu)雅哲學(xué)

Spring Boot 的可執(zhí)行 JAR 之所以強(qiáng)大,不僅因?yàn)椤澳芘堋保?nbsp;更因?yàn)樗鼘?fù)雜的構(gòu)建、依賴、加載與運(yùn)行過程無縫整合在了一起:

  • 打包層面:Maven 插件自動(dòng)封裝;
  • 運(yùn)行層面:自定義類加載器管理依賴;
  • 部署層面:內(nèi)嵌服務(wù)器開箱即用。

它讓 Java 應(yīng)用徹底告別傳統(tǒng)的 WAR 部署模式, 以“一包一世界”的理念,讓開發(fā)與運(yùn)維之間的鴻溝被徹底抹平。

所以,下次當(dāng)你敲下:

java -jar myapp.jar

不妨想一想: 在這短短一秒鐘背后,Spring Boot 正默默完成了一個(gè) JVM 級(jí)的奇跡。

責(zé)任編輯:武曉燕 來源: 路條編程
相關(guān)推薦

2022-04-07 08:20:22

typeinterface前端

2022-07-27 08:01:29

CMS垃圾回收器

2022-03-08 15:01:48

負(fù)載均衡IP服務(wù)器

2022-05-06 09:21:21

TypeScriptinterfacetype

2023-10-27 07:39:44

IOC容器Spring

2013-12-26 09:44:30

互聯(lián)網(wǎng)物聯(lián)網(wǎng)區(qū)別

2021-10-10 20:36:49

Android Root權(quán)限

2024-08-12 12:30:27

2016-10-19 09:00:57

漏洞郵箱秘密

2021-10-12 10:50:31

鴻蒙HarmonyOS應(yīng)用

2020-09-21 06:43:59

AtomicIntegNumber內(nèi)存

2024-04-07 08:23:01

JS隔離JavaScript

2011-06-14 12:56:55

SQL Server復(fù)災(zāi)

2013-07-15 16:55:45

2022-10-13 09:43:31

MySQL索引聯(lián)合索引

2022-06-15 08:00:50

磁盤RedisRocketMQ

2024-08-12 15:23:43

LangChain

2022-06-07 08:14:35

PGPAGETUPLE

2022-11-28 07:10:57

2021-07-14 07:21:57

JVM運(yùn)行數(shù)據(jù)
點(diǎn)贊
收藏

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

黑人巨大精品欧美一区二区一视频 | 欧美不卡一区| 精品国产一区二区三区不卡 | 99久久精品久久亚洲精品| av成人在线网站| 午夜精品福利视频网站| 色女孩综合网| 日批视频在线播放| 久久9热精品视频| 午夜精品一区二区三区在线 | 乱码一区二区三区| 欧美日韩亚洲国产| 亚洲亚洲人成综合网络| 日韩美女一区| 手机看片一区二区| 经典三级在线一区| 欧美性受xxxx黑人猛交| 久久久精品视频免费观看| 视频一区中文| 亚洲成色999久久网站| 在线观看日本一区二区| 色戒汤唯在线| 亚洲一区二区三区四区不卡| 亚洲国产精品一区在线观看不卡 | 亚洲国产精品午夜在线观看| 精品国产乱码久久久久久1区2匹| 人在线成免费视频| 91最新地址在线播放| 91亚洲精品在线| 人人妻人人爽人人澡人人精品| 欧美激情综合色综合啪啪| 日韩在线小视频| 熟女少妇内射日韩亚洲| 欧美美女啪啪| 精品国产乱码久久久久久蜜臀| 6080国产精品| 男人亚洲天堂| 欧美日韩一本到| 91香蕉视频污版| 九九热线视频只有这里最精品| 精品国产1区2区| 免费看日本黄色| 69av亚洲| 欧美国产精品v| 欧美最大成人综合网| 三级av在线| 粉嫩av一区二区三区| 国产成人av在线| 男人日女人网站| 国产精品女主播一区二区三区| 久久久久成人精品| 久久成人在线观看| 午夜天堂精品久久久久| 欧美大片欧美激情性色a∨久久| 免费看特级毛片| 91精品一区国产高清在线gif | 国产精品裸体一区二区三区| 国产激情视频在线播放| 国产乱码精品1区2区3区| 亚洲一区精品电影| 国产福利第一视频| 粉嫩av一区二区三区粉嫩| 国产福利一区二区三区在线观看| www久久久久久| eeuss国产一区二区三区| 精品国产乱码久久久久久88av | 国产精自产拍久久久久久| 亚洲国产精品无码久久久| 噜噜噜91成人网| 国产成人在线一区二区| 中文字幕网址在线| 久久99精品网久久| 95av在线视频| 手机看片福利永久| 久久久国产午夜精品| 视频二区一区| 亚洲精品白浆| 五月婷婷久久丁香| av免费在线播放网站| 国产极品嫩模在线观看91精品| 欧美精品v日韩精品v韩国精品v| 亚洲丝袜在线观看| 青青视频一区二区| 一区二区三区在线播| 一区二区三区视频观看| 97伦伦午夜电影理伦片| 区一区二视频| 欧美人与性动交a欧美精品| 成人在线免费看视频| 日本视频一区二区| av成人午夜| 男男激情在线| 亚洲女爱视频在线| 久久美女福利视频| 91九色成人| 亚洲精品999| 国产一区二区三区视频播放| 国色天香一区二区| 国产精品国模在线| www.久久久久久久久久| 26uuu国产电影一区二区| 曰韩不卡视频| 亚洲v.com| 日韩一区二区三区免费观看| 免费在线观看你懂的| 亚洲精彩视频| 国产91色在线播放| 亚洲精品综合网| 中文字幕第一区| 成年人午夜免费视频| 欧美大片网站| 国产手机视频精品| 午夜69成人做爰视频| 国产色综合网| 91在线精品一区二区| 成人午夜影院在线观看| 亚洲麻豆精品| 色综合亚洲欧洲| 美女日批在线观看| 日韩在线视屏| 欧美最猛黑人xxxx黑人猛叫黄| 国产xxxx孕妇| 中文字幕一区二区三区不卡| 熟女性饥渴一区二区三区| 亚洲国产中文在线| 久久久黄色av| 又污又黄的网站| 久久中文字幕电影| www.射射射| 日韩在线网址| 久久精品中文字幕电影| 中文字幕第三页| 久久久一区二区| 久久综合九色综合88i| 亚洲乱码一区| 蜜月aⅴ免费一区二区三区| 国产成人av免费| 久久久久国产一区二区三区四区 | 91精品婷婷国产综合久久| 先锋影音av在线| 丝袜国产日韩另类美女| 蜜桃精品久久久久久久免费影院| 啊啊啊久久久| 日韩电视剧在线观看免费网站| 久久精品性爱视频| 成人毛片视频在线观看| 国产乱人伦精品一区二区三区| 国产精品亚洲综合在线观看| 久久久精品一区| 国产手机视频在线| 亚洲乱码国产乱码精品精98午夜| 91精品视频国产| 综合激情婷婷| 97超级碰碰| 国产精品vvv| 日韩二区三区在线| 人妻丰满熟妇av无码区| 久久久99久久精品欧美| 激情综合网俺也去| 色综合蜜月久久综合网| 国产精品综合不卡av| 欧美第一页在线观看| 巨茎人妖videos另类| 欧美不卡一区二区三区四区| 久久久久97国产| 成人aa视频在线观看| 欧美一区二区三区爽大粗免费 | 亚州欧美一区三区三区在线| 国产成人久久精品麻豆二区| 日韩中文字幕视频| www日本高清| 午夜精品久久久久久| 亚洲天堂视频一区| 麻豆精品精品国产自在97香蕉| 在线观看福利一区| 97一区二区国产好的精华液| 欧美综合国产精品久久丁香| 成人精品一区| 日韩一区二区三区电影| 日本亚洲色大成网站www久久| 91丨九色丨国产丨porny| 日本熟妇人妻中出| 一区二区中文| 久久艳妇乳肉豪妇荡乳av| 欧美大片网站| 91精品国产沙发| 69久久精品| 亚洲国产精品国自产拍av秋霞| 波多野结衣一区二区三区在线| 亚洲欧美综合在线精品| 中文字幕在线视频播放| 日本视频一区二区| 韩日视频在线观看| 日韩精品二区| 国产综合18久久久久久| 国产精品传媒麻豆hd| 欧美高跟鞋交xxxxxhd| 免费在线一级视频| 精品久久久久久综合日本欧美| 国产精华7777777| 亚洲国产另类av| 久久av红桃一区二区禁漫| a级精品国产片在线观看| 亚洲精品www.| 男女av一区三区二区色多| 日本免费黄色小视频| 精品国产一区二区三区四区| 成人欧美一区二区三区在线观看| 韩国理伦片久久电影网| 97久久伊人激情网| av网站大全在线| 中文字幕亚洲第一| 你懂的视频在线观看| 粉嫩欧美一区二区三区高清影视| 久久久久久久久爱| 天堂中文在线资| 欧美一区二区日韩一区二区| 久久精品偷拍视频| 精品动漫一区二区| 久久在线视频精品| 18欧美亚洲精品| 91精品国自产在线| 久久久久久免费网| 午夜视频在线观看国产| 国产精品一品视频| caoporm在线视频| 免费在线观看精品| 又色又爽又高潮免费视频国产| 亚洲国产国产亚洲一二三| 精品少妇人妻av一区二区| 精品一区二区三| 蜜桃视频日韩| 日韩欧美黄色| 国产在线精品二区| 国产精品一线| 91久久精品国产91久久性色| 成人全视频在线观看在线播放高清| 欧美在线激情网| 日本三级一区| 欧美性在线观看| 天堂网在线最新版www中文网| 久久久久久久久综合| 福利网站在线观看| 久久久久国产精品www| 波多野结衣久久| 久久久久久网站| av手机在线观看| 欧美性受xxxx白人性爽| 综合另类专区| 国产精品成av人在线视午夜片 | 日本ー区在线视频| 亚洲老司机av| 国产永久免费高清在线观看 | 欧美一区国产二区| 国产人妖在线播放| 精品国产一区二区三区av性色| 国产刺激高潮av| 亚洲精品99久久久久| 爽爽视频在线观看| 亚洲日本中文字幕免费在线不卡| 国产天堂在线| 久久精品国产v日韩v亚洲| 顶级网黄在线播放| 久久久久国产精品www| av资源中文在线天堂| 欧洲亚洲女同hd| 美国一级黄色录像| 黄色成人91| 97视频久久久| 久久久久久一区二区| 久久婷婷综合色| 国产成人精品午夜视频免费| 香港三日本8a三级少妇三级99| 久久综合九色综合97婷婷女人| 欧美福利第一页| 亚洲精品成人悠悠色影视| 亚洲精品在线观看av| 色综合久久久久综合99| 亚洲一区二区人妻| 欧美精品一区二区在线观看| 青青草免费在线视频| 色婷婷久久av| 2021中文字幕在线| 国产精品偷伦免费视频观看的| 中文字幕一区日韩精品| 欧美另类一区| 伊人情人综合网| 久久美女福利视频| 国产久卡久卡久卡久卡视频精品| 三上悠亚ssⅰn939无码播放| 中文字幕一区二区三区不卡| 91av在线免费视频| 欧美精品黑人性xxxx| 香蕉久久国产av一区二区| xvideos亚洲人网站| 麻豆免费在线| 亚洲va电影大全| 国产午夜一区| 男人天堂av片| 久久国产三级精品| 人妻在线日韩免费视频| 综合网在线视频| 五月天激情四射| 精品人伦一区二区色婷婷| h视频在线观看免费| 97国产精品人人爽人人做| 九色精品蝌蚪| 午夜精品亚洲一区二区三区嫩草 | 97在线播放视频| 国产精品18久久久久久vr| 国产精品免费无码| 欧美日韩国产精品一区| aaa级黄色片| 三级精品视频久久久久| 韩漫成人漫画| 国产欧美日韩一区二区三区| 亚洲综合激情在线| 向日葵污视频在线观看| 91一区在线观看| 国产一级淫片a| 欧美xxxx老人做受| 在线xxxx| 91视频国产高清| 久久激情电影| 欧美欧美欧美欧美| 亚洲乱熟女一区二区| 久久精品一本久久99精品| 最新日韩一区| 欧美在线日韩精品| 午夜亚洲性色视频| 99re这里只有| 亚洲不卡一区二区三区| 午夜精品一区二区三| 久久夜精品香蕉| 91精品亚洲一区在线观看| 一区二区三区四区五区视频| 亚洲一区亚洲| 人妻丰满熟妇aⅴ无码| 亚洲成人tv网| 日本黄色不卡视频| 97在线免费观看视频| 国产精品巨作av| 男人添女荫道口女人有什么感觉| 国产精品一二三| 国产1区2区3区4区| 日韩欧美精品在线视频| 91精品国产91久久久久久青草| 国产女人精品视频| 亚洲一区二区三区| 亚洲av无码久久精品色欲| 亚洲一区二区三区四区在线| 欧美自拍偷拍一区二区| 98精品在线视频| 亚洲区小说区| 992kp快乐看片永久免费网址| 国产精品日日摸夜夜摸av| 中文区中文字幕免费看| 日韩一区二区久久久| 韩国一区二区三区视频| 欧美日韩激情四射| 成人激情动漫在线观看| 亚洲精品男人天堂| 国产一区二区三区视频免费| 福利一区视频| 成年人黄色在线观看| 国产精品秘入口| 久久久久久久久久久91| 第一区第二区在线| 777久久久精品一区二区三区| 久久嫩草精品久久久精品一| 波多野结衣一本一道| 久久精品小视频| 久久精品色综合| 亚洲性生活网站| 亚洲精品综合在线| 天堂av手机版| 国产精品主播视频| 精品成人一区| 久久婷婷五月综合| 日韩三级高清在线| 自拍网站在线观看| 色中文字幕在线观看| 成人精品国产一区二区4080| 三级网站在线播放 | 蜜臀av在线| 蜜桃成人在线| 国产精品资源网站| 天堂中文在线网| 久热精品在线视频| 香蕉久久夜色精品国产使用方法| 国产精品久久a| 一区二区三区在线视频观看| 国产在线小视频| 成人免费在线看片| 日本女优在线视频一区二区 | 日本美女一区二区三区| 中文字幕一区二区三区在线乱码 | 欧美大喷水吹潮合集在线观看| 91豆麻精品91久久久久久| 欧美xxxx少妇|