精品欧美一区二区三区在线观看 _久久久久国色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)

欧美福利专区| 亚洲国产91视频| 91丨porny丨中文| 欧美中文在线观看国产| 五月天精品在线| 亚洲一区二区小说| 亚洲国产精品久久久男人的天堂| 蜜桃成人在线| 国产三级精品在线观看| 国产色综合网| 久久久国产视频| 性欧美丰满熟妇xxxx性久久久| 成人网ww555视频免费看| 亚洲精品第1页| 欧美另类一区| www.爱爱.com| 美女视频黄a大片欧美| 韩国国内大量揄拍精品视频| 亚洲 欧美 国产 另类| 久久婷婷国产| 欧美一级理论性理论a| 成年人视频在线免费| 暖暖在线中文免费日本| 欧美激情一区在线观看| 精品国产一区二区三区四区精华| 91好色先生tv| 老司机精品导航| 91国内精品久久| 免费中文字幕在线观看| 久久综合成人| 国产性猛交xxxx免费看久久| 国产精品久久AV无码| 美女久久精品| 欧美老女人第四色| 一区二区三区国产免费| 手机在线理论片| 亚洲高清视频中文字幕| 成人性做爰片免费视频| 在线观看av的网站| 久久精品夜色噜噜亚洲a∨| 国产亚洲欧美一区二区| av中文字幕观看| 国产原创一区二区| 国产日产久久高清欧美一区| 国产精品欧美综合| 性欧美精品高清| 97久久伊人激情网| 久久视频免费在线观看| 伊人成人网在线看| 久久久亚洲天堂| 18精品爽视频在线观看| 欧美精品国产一区二区| 美女性感视频久久久| www.xx日本| 国产大片一区| 久久精品在线视频| 人妻人人澡人人添人人爽| 亚欧美无遮挡hd高清在线视频| 日韩最新在线视频| 午夜三级在线观看| 仙踪林久久久久久久999| 色偷偷偷亚洲综合网另类| 一级免费黄色录像| 羞羞答答成人影院www| 欧美久久精品一级黑人c片| 三级全黄做爰视频| 你懂的国产精品| 久久久久久久999| 日本少妇毛茸茸高潮| 日韩视频一区| 日本欧美中文字幕| 最近国语视频在线观看免费播放| 美腿丝袜亚洲三区| 成人午夜黄色影院| 亚洲精品视频网| 菠萝蜜视频在线观看一区| 久久精品国产第一区二区三区最新章节 | 欧美精品欧美精品| www 日韩| 亚洲乱码国产乱码精品精98午夜 | 真实乱视频国产免费观看| 成人嘿咻视频免费看| zzijzzij亚洲日本成熟少妇| 黄色一级视频免费| 精品成人在线| 国产v综合v亚洲欧美久久| 亚洲系列第一页| 国产成人在线免费| 欧洲亚洲一区二区| 高清免费电影在线观看| 五月婷婷久久丁香| 2025韩国理伦片在线观看| 欧美一区在线观看视频| 精品香蕉在线观看视频一| 免费91在线观看| 亚洲国产婷婷| 91精品免费久久久久久久久| 欧美天堂在线视频| 国产精品无圣光一区二区| 妺妺窝人体色www看人体| a一区二区三区| 日韩一区二区影院| 国产黄色大片免费看| 欧美成人69| 国产激情久久久| 国模私拍视频在线| 国产精品国产精品国产专区不片| 91黄色在线看| 四虎影视精品永久在线观看| 亚洲国产日韩欧美在线99| 国产在线免费av| 一区二区三区国产盗摄| 亚洲最大av网站| 成人福利在线| 欧美日韩国产在线播放| 中文字幕第10页| 日本不卡电影| 欧美做受高潮1| 高h震动喷水双性1v1| 国产精品亲子乱子伦xxxx裸| 人妻熟妇乱又伦精品视频| 精品入口麻豆88视频| 在线电影欧美日韩一区二区私密| 日韩男人的天堂| 国产成人综合在线| 国产麻豆电影在线观看| 嫩草伊人久久精品少妇av杨幂| 亚洲国产成人精品久久| 久久精品黄色片| 模特精品在线| 国产日韩欧美亚洲一区| 在线不卡日本v二区707| 欧美丰满少妇xxxxx高潮对白 | 亚洲三区在线观看无套内射| 一区二区高清视频在线观看| 污网站在线免费| 色呦哟—国产精品| 国产精品午夜一区二区欲梦| 九一国产在线| 色综合色综合色综合色综合色综合 | 视频精品一区二区三区| 神马久久桃色视频| 涩涩视频在线观看| 国产女同性恋一区二区| 国产裸体免费无遮挡| 国产中文精品久高清在线不| 日韩av电影免费观看高清| 视频午夜在线| 欧美性xxxx极品高清hd直播| 国产成人无码一区二区在线观看| 亚洲激情婷婷| 就去色蜜桃综合| 自由日本语热亚洲人| 亚洲欧美日本精品| 三级网站在线播放| 欧美国产日韩一二三区| 亚欧美在线观看| 97精品国产| 91精品天堂| 国产福利在线免费观看| 亚洲激情小视频| 色一情一乱一伦| 国产无一区二区| 欧美一级xxxx| 欧美日韩国产一区精品一区| 国产日韩欧美亚洲一区| 久久人体大尺度| 中文字幕亚洲综合久久筱田步美 | 精品国产伦一区二区三区免费| 久久免费精彩视频| 91网上在线视频| youjizzxxxx18| 亚洲一本二本| 国产日韩欧美精品| 亚洲第一会所| 美女性感视频久久久| 三级在线观看网站| 在线观看av一区| 欧美片一区二区| 91丨porny丨中文| 天天干天天av| 亚洲欧洲午夜| 五月天丁香综合久久国产| 精品国产三区在线| 91chinesevideo永久地址| youjizz在线播放| 日韩欧美色综合| 亚洲熟女综合色一区二区三区| 亚洲国产高清在线| 免费黄色a级片| 日韩综合小视频| 日韩中文在线字幕| 妖精视频一区二区三区免费观看| 国产精品亚洲片夜色在线| 日本三级在线观看网站| 亚洲亚裔videos黑人hd| 性生活三级视频| 色婷婷av一区二区| 久久网免费视频| 国产精品污污网站在线观看 | 国产蜜臀av在线一区二区三区| 91欧美一区二区三区| 国产精品毛片在线| 亚洲欧美一二三| 国产91一区| 国产精品一区在线播放| 欧洲亚洲精品久久久久| 欧美综合国产精品久久丁香| 99在线播放| 中文字幕久精品免费视频| 免费看国产片在线观看| 8v天堂国产在线一区二区| 在线能看的av| 亚洲一区在线电影| 手机在线免费看片| 中文子幕无线码一区tr| 巨胸大乳www视频免费观看| 国产精品一区久久久久| 亚洲老女人av| 久久久久久9| 91视频最新入口| 精品av久久久久电影| 国产911在线观看| 天天影视欧美综合在线观看| 日本一区二区高清视频| 欧美福利在线播放网址导航| 99视频在线播放| 国产精品视频首页| 国产日韩欧美黄色| 成人在线不卡| 国产精品一区=区| aaaa欧美| 国产日韩欧美夫妻视频在线观看| 日韩av超清在线观看| 日韩av电影在线免费播放| 国产乱码精品一区二三赶尸艳谈| 欧美区二区三区| fc2ppv国产精品久久| 久久精彩免费视频| 免费黄色网页在线观看| 中文字幕在线看视频国产欧美在线看完整 | 欧美日韩爱爱| 欧美一区二区三区在线免费观看 | 久久亚洲精品一区| 免费黄色网址在线观看| www.精品av.com| 国产福利在线播放麻豆| 欧美另类交人妖| 青青在线视频| 久久久亚洲影院你懂的| 国产在线美女| 欧美在线视频一二三| 黄色综合网址| 国产精品尤物福利片在线观看| 成人在线免费电影网站| 91精品久久久久久久久久久久久久| www.精品国产| 91亚洲va在线va天堂va国| 久久中文字幕一区二区| 99久久精品久久久久久ai换脸| 清纯唯美激情亚洲| 国产在线精品一区二区三区| 天美av一区二区三区久久| 欧美人xxxxx| 国产一区二区三区四区五区传媒| 亚洲第一导航| 一区二区三区中文| 日本a视频在线观看| 久久综合导航| 九一精品久久久| 懂色一区二区三区免费观看 | 亚洲国产www| 日韩精品日韩在线观看| 国产大学生校花援交在线播放| 久久久999国产精品| 成全电影大全在线观看| 国产精品wwww| 深夜福利一区| 欧美成人dvd在线视频| 久久一区二区三区喷水| 久久av综合网| 日本特黄久久久高潮| 国产又黄又嫩又滑又白| 26uuu欧美日本| 欧美日韩午夜视频| 婷婷中文字幕一区三区| 夜夜骚av一区二区三区| 欧美大片在线观看一区二区| 欧美高清电影在线| 欧美另类99xxxxx| **欧美日韩在线观看| 成人区精品一区二区| 国产欧美日韩影院| 久久福利一区二区| 日韩av一二三| 香港三日本8a三级少妇三级99| 中文字幕不卡在线| 成人在线免费看视频| 日韩欧美一级二级三级久久久| 麻豆国产在线播放| 欧美黄色www| 麻豆久久久久| 欧美人与性禽动交精品| 一区免费视频| 人人爽人人爽av| 久久精品一区二区三区av| 日韩av女优在线观看| 91精品国产综合久久香蕉的特点| 日韩精品视频在线观看一区二区三区| 久久久电影免费观看完整版| 先锋欧美三级| 精品一区二区三区国产| 牛牛国产精品| 日韩av片免费观看| 国产日韩欧美精品电影三级在线| 国产又大又黑又粗免费视频| 91精品国产aⅴ一区二区| 国产在线小视频| 97在线观看视频国产| 榴莲视频成人app| 在线观看日韩片| 日本在线播放一区二区三区| 亚洲一区二区乱码| 午夜在线成人av| 成人午夜视频一区二区播放| 久热精品视频在线免费观看| 玖玖精品在线| 亚洲欧洲一区二区福利| 久热国产精品| 国产全是老熟女太爽了| 精品国产乱码久久久久久天美 | 欧美精品做受xxx性少妇| 日本免费在线一区| 亚洲国产一区二区三区在线播| 久久亚洲综合| 日韩在线免费观看av| 欧美色视频日本高清在线观看| 国模无码一区二区三区| 久久久久久久久久久免费| 亚洲一级大片| 六月婷婷激情综合| 国产99精品在线观看| 久视频在线观看| 亚洲福利视频久久| av资源在线播放| 久久久精品动漫| 午夜亚洲影视| 成人黄色免费网址| 欧美性淫爽ww久久久久无| 最新97超碰在线| 91精品一区二区| 欧美二区不卡| 国产性生活毛片| 欧美性色19p| 福利成人在线观看| 91精品国产综合久久香蕉| 一区二区日韩欧美| jjzz黄色片| 欧美日韩中文字幕日韩欧美| 你懂的在线看| 国产精品一二三在线| 欧美影视一区| yy6080午夜| 欧美在线啊v一区| 欧美69xxx| 国产 高清 精品 在线 a | 日本精品久久久久久久| 精品香蕉视频| 免费不卡av网站| 天天色综合成人网| jizz在线免费观看| 91香蕉电影院| 在线午夜精品| 久久久精品成人| 91精品国产综合久久久久| xxxx成人| 日韩免费av一区二区三区| 激情综合五月天| 日韩欧美中文字幕一区二区| 亚洲品质视频自拍网| 成人亚洲精品| 日韩激情免费视频| 综合自拍亚洲综合图不卡区| 黄色一级大片在线免费看国产一 | 中文永久免费观看| 色综合91久久精品中文字幕| 免费av一区二区三区四区| 亚洲第一区第二区第三区| 欧美日韩亚洲激情| 成人av免费| 欧洲亚洲一区| 成人三级在线视频| 中文字幕黄色av| 国产69精品久久久久99| 久久福利综合| a级在线观看视频| 日韩欧美国产综合| 日韩欧美少妇| 日本三级免费网站| 亚洲最新在线观看|