久久福利_99r_国产日韩在线视频_直接看av的网站_中文欧美日韩_久久一

您的位置:首頁技術文章
文章詳情頁

Spring Boot如何通過java -jar啟動

瀏覽:108日期:2022-08-12 08:28:01
目錄Pre引導新建工程 打包 啟動java -jar 干啥的打包插件spring-boot-maven-plugin簡介包結(jié)構(gòu)Archive的概念JarFileJarLauncher工作流程小結(jié)Pre

大家開發(fā)的基于Spring Boot 的應用 ,jar形式, 發(fā)布的時候,絕大部分都是使用java -jar 啟動。 得益于Spring Boot 的封裝 , 再也不用操心搭建tomcat等相關web容器le , 一切變得非常美好, 那SpringBoot是怎么做到的呢?

Spring Boot如何通過java -jar啟動

引導新建工程 打包 啟動

我們新創(chuàng)建一個Spring Boot的工程

Spring Boot如何通過java -jar啟動

其中打包的配置為

<build><plugins> <plugin><groupId>org.springframework.boot</groupId><artifactId>spring-boot-maven-plugin</artifactId> </plugin></plugins> </build>

先打包一下

Spring Boot如何通過java -jar啟動

查看target目錄

Spring Boot如何通過java -jar啟動

然后啟動

Spring Boot如何通過java -jar啟動

Spring Boot如何通過java -jar啟動

java -jar 干啥的

我們先看看 java -jar 干了啥 ?

在oracle官網(wǎng)找到了該命令的描述:

If the -jar option is specified, its argument is the name of the JAR file containing class and resource files for the application. The startup class must be indicated by the Main-Class manifest header in its source code.

使用-jar參數(shù)時,后面的參數(shù)是的jar 【spring-0.0.1-SNAPSHOT.jar】,該jar文件中包含的是class和資源文件; 在manifest文件中有Main-Class的定義;Main-Class的源碼中指定了整個應用的啟動類;

簡單來說: java -jar會去找jar中的manifest文件,去找到Main-Class對應的真正的啟動類;

那看看去吧

Spring Boot如何通過java -jar啟動

咦 ,這個Main-Class 是Spring Boot 的。

我們還看到有個Start Class

Spring Boot如何通過java -jar啟動

官方文檔中,只提到過Main-Class ,并沒有提到Start-Class;Start-Class的值是com.artisan.spring.Application,這是我們的java代碼中的唯一類,包含main方法, 是能夠真正的應用啟動類

Spring Boot如何通過java -jar啟動

所以問題就來了:理論上看,執(zhí)行java -jar命令時JarLauncher類會被執(zhí)行,但實際上是com.artisan.spring.Application被執(zhí)行了,這其中發(fā)生了什么呢?why?

Spring Boot如何通過java -jar啟動

打包插件

事實上,Java沒有提供任何標準的方式來加載嵌套的jar文件 (jar中包含jar ,即Spring Boot 中的fat jar)

Spring Boot 默認的打包插件如下:

<build><plugins><plugin><groupId>org.springframework.boot</groupId><artifactId>spring-boot-maven-plugin</artifactId></plugin></plugins></build>

執(zhí)行maven clean package之后,會生成兩個文件,剛才我們也看到了

Spring Boot如何通過java -jar啟動

spring-boot-maven-plugin簡介

spring-boot-maven-plugin項目存在于spring-boot-tools目錄中。

spring-boot-maven-plugin默認有5個goals:repackage、run、start、stop、build-info。在打包的時候默認使用的是repackage。

spring-boot-maven-plugin的repackage能夠?qū)vn package生成的軟件包,再次打包為可執(zhí)行的軟件包,并將mvn package生成的軟件包重命名為.original*

spring-boot-maven-plugin的repackage在代碼層面調(diào)用了RepackageMojo的execute方法,而在該方法中又調(diào)用了repackage方法。

private void repackage() throws MojoExecutionException { // maven生成的jar,最終的命名將加上.original后綴 Artifact source = getSourceArtifact(); // 最終為可執(zhí)行jar,即fat jar File target = getTargetFile(); // 獲取重新打包器,將maven生成的jar重新打包成可執(zhí)行jar Repackager repackager = getRepackager(source.getFile()); // 查找并過濾項目運行時依賴的jar Set<Artifact> artifacts = filterDependencies(this.project.getArtifacts(), getFilters(getAdditionalFilters())); // 將artifacts轉(zhuǎn)換成libraries Libraries libraries = new ArtifactsLibraries(artifacts, this.requiresUnpack, getLog()); try { // 獲得Spring Boot啟動腳本 LaunchScript launchScript = getLaunchScript(); // 執(zhí)行重新打包,生成fat jar repackager.repackage(target, libraries, launchScript); }catch (IOException ex) { throw new MojoExecutionException(ex.getMessage(), ex); } // 將maven生成的jar更新成.original文件 updateArtifact(source, target, repackager.getBackupFile());}

執(zhí)行以上命令之后,便生成了打包結(jié)果對應的兩個文件。

Spring Boot如何通過java -jar啟動

包結(jié)構(gòu)

下面針對文件的內(nèi)容和結(jié)構(gòu)進行一探究竟。

spring-0.0.1-SNAPSHOT.jar├── META-INF│ └── maven(主要是pom文件)│ └── MANIFEST.MF├── BOOT-INF│ ├── classes│ │ └── 應用程序類│ └── lib│ └── 第三方依賴jar└── org └── springframework└── boot └── loader└── springboot啟動程序

META-INF內(nèi)容

Manifest-Version: 1.0Spring-Boot-Classpath-Index: BOOT-INF/classpath.idxImplementation-Title: springImplementation-Version: 0.0.1-SNAPSHOTSpring-Boot-Layers-Index: BOOT-INF/layers.idxStart-Class: com.artisan.spring.ApplicationSpring-Boot-Classes: BOOT-INF/classes/Spring-Boot-Lib: BOOT-INF/lib/Build-Jdk-Spec: 1.8Spring-Boot-Version: 2.4.1Created-By: Maven Jar Plugin 3.2.0Main-Class: org.springframework.boot.loader.JarLauncher Main-Class:org.springframework.boot.loader.JarLauncher ,這個是jar啟動的Main函數(shù)Start-Class: com.artisan.spring.Application,這個是我們應用自己的Main函數(shù)Archive的概念

在繼續(xù)了解底層概念和原理之前,我們先來了解一下Archive的概念:

archive即歸檔文件,這個概念在linux下比較常見 通常就是一個tar/zip格式的壓縮包 jar是zip格式

SpringBoot抽象了Archive的概念,一個Archive可以是jar(JarFileArchive),可以是一個文件目錄(ExplodedArchive),可以抽象為統(tǒng)一訪問資源的邏輯層

關于Spring Boot中Archive的源碼如下:

public interface Archive extends Iterable<Archive.Entry> { // 獲取該歸檔的url URL getUrl() throws MalformedURLException; // 獲取jar!/META-INF/MANIFEST.MF或[ArchiveDir]/META-INF/MANIFEST.MF Manifest getManifest() throws IOException; // 獲取jar!/BOOT-INF/lib/*.jar或[ArchiveDir]/BOOT-INF/lib/*.jar List<Archive> getNestedArchives(EntryFilter filter) throws IOException;}

SpringBoot定義了一個接口用于描述資源,也就是org.springframework.boot.loader.archive.Archive

Spring Boot如何通過java -jar啟動

該接口有兩個實現(xiàn),分別是

org.springframework.boot.loader.archive.ExplodedArchive org.springframework.boot.loader.archive.JarFileArchive

前者用于在文件夾目錄下尋找資源,后者用于在jar包環(huán)境下尋找資源。而在SpringBoot打包的fatJar中,則是使用后者JarFileArchive

JarFile

JarFile:對jar包的封裝,每個JarFileArchive都會對應一個JarFile。

JarFile被構(gòu)造的時候會解析內(nèi)部結(jié)構(gòu),去獲取jar包里的各個文件或文件夾,這些文件或文件夾會被封裝到Entry中,也存儲在JarFileArchive中。如果Entry是個jar,會解析成JarFileArchive。

比如一個JarFileArchive對應的URL為:

jar:file:/Users/format/Develop/gitrepository/springboot-analysis/springboot-executable-jar/target/executable-jar-1.0-SNAPSHOT.jar!/

它對應的JarFile為:

/Users/format/Develop/gitrepository/springboot-analysis/springboot-executable-jar/target/executable-jar-1.0-SNAPSHOT.jar

這個JarFile有很多Entry,比如:

META-INF/META-INF/MANIFEST.MFspring/spring/study/....spring/study/executablejar/ExecutableJarApplication.classlib/spring-boot-starter-1.3.5.RELEASE.jarlib/spring-boot-1.3.5.RELEASE.jar...

JarFileArchive內(nèi)部的一些依賴jar對應的URL(SpringBoot使用org.springframework.boot.loader.jar.Handler處理器來處理這些URL):

jar:file:/Users/Format/Develop/gitrepository/springboot-analysis/springboot-executable-jar/target/executable-jar-1.0-SNAPSHOT.jar!/lib/spring-boot-starter-web-1.3.5.RELEASE.jar!/

jar:file:/Users/Format/Develop/gitrepository/springboot-analysis/springboot-executable-jar/target/executable-jar-1.0-SNAPSHOT.jar!/lib/spring-boot-loader-1.3.5.RELEASE.jar!/org/springframework/boot/loader/JarLauncher.class

我們看到如果有jar包中包含jar,或者jar包中包含jar包里面的class文件,那么會使用 !/ 分隔開,這種方式只有org.springframework.boot.loader.jar.Handler能處理,它是SpringBoot內(nèi)部擴展出來的一種URL協(xié)議。

Spring Boot如何通過java -jar啟動

JarLauncher工作流程

從MANIFEST.MF可以看到Main函數(shù)是JarLauncher,下面來分析它的工作流程。JarLauncher類的繼承結(jié)構(gòu)是:

class JarLauncher extends ExecutableArchiveLauncherclass ExecutableArchiveLauncher extends Launcher

Launcher for JAR based archives. This launcher assumes that dependency jars are included inside a /BOOT-INF/lib directory and that application classes are included inside a /BOOT-INF/classes directory.

什么意思呢?

按照定義,JarLauncher可以加載內(nèi)部/BOOT-INF/lib下的jar及/BOOT-INF/classes下的應用class。

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

其主入口新建了JarLauncher并調(diào)用父類Launcher中的launch方法啟動程序。在創(chuàng)建JarLauncher時,父類ExecutableArchiveLauncher找到自己所在的jar,并創(chuàng)建archive。

JarLauncher繼承于org.springframework.boot.loader.ExecutableArchiveLauncher。該類的無參構(gòu)造方法最主要的功能就是構(gòu)建了當前main方法所在的FatJar的JarFileArchive對象。

下面來看launch方法。該方法主要是做了2個事情:

(1)以FatJar為file作為入?yún)ⅲ瑯?gòu)造JarFileArchive對象。獲取其中所有的資源目標,取得其Url,將這些URL作為參數(shù),構(gòu)建了一個URLClassLoader

(2)以第一步構(gòu)建的ClassLoader加載MANIFEST.MF文件中Start-Class指向的業(yè)務類,并且執(zhí)行靜態(tài)方法main。進而啟動整個程序。

public abstract class ExecutableArchiveLauncher extends Launcher { private final Archive archive; public ExecutableArchiveLauncher() {try { // 找到自己所在的jar,并創(chuàng)建Archive this.archive = createArchive();}catch (Exception ex) { throw new IllegalStateException(ex);} }} public abstract class Launcher { protected final Archive createArchive() throws Exception {ProtectionDomain protectionDomain = getClass().getProtectionDomain();CodeSource codeSource = protectionDomain.getCodeSource();URI location = (codeSource == null ? null : codeSource.getLocation().toURI());String path = (location == null ? null : location.getSchemeSpecificPart());if (path == null) { throw new IllegalStateException('Unable to determine code source archive');}File root = new File(path);if (!root.exists()) { throw new IllegalStateException( 'Unable to determine code source archive from ' + root);}return (root.isDirectory() ? new ExplodedArchive(root): new JarFileArchive(root)); }}

在Launcher的launch方法中,通過以上archive的getNestedArchives方法找到/BOOT-INF/lib下所有jar及/BOOT-INF/classes目錄所對應的archive,通過這些archives的url生成LaunchedURLClassLoader,并將其設置為線程上下文類加載器,啟動應用。

至此,才執(zhí)行我們應用程序主入口類的main方法,所有應用程序類文件均可通過/BOOT-INF/classes加載,所有依賴的第三方jar均可通過/BOOT-INF/lib加載。

Spring Boot如何通過java -jar啟動

小結(jié) JarLauncher通過加載BOOT-INF/classes目錄及BOOT-INF/lib目錄下jar文件,實現(xiàn)了fat jar的啟動。 SpringBoot通過擴展JarFile、JarURLConnection及URLStreamHandler,實現(xiàn)了jar in jar中資源的加載。 SpringBoot通過擴展URLClassLoader?LauncherURLClassLoader,實現(xiàn)了jar in jar中class文件的加載。 WarLauncher通過加載WEB-INF/classes目錄及WEB-INF/lib和WEB-INF/lib-provided目錄下的jar文件,實現(xiàn)了war文件的直接啟動及web容器中的啟動。

通過spring-boot-plugin 生成了MANIFEST.MF , main-class 指定運行java -jar的主程序把依賴的jar文件 打包在fat jar.

到此這篇關于Spring Boot如何通過java -jar啟動的文章就介紹到這了,更多相關SpringBoot java -jar啟動內(nèi)容請搜索好吧啦網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關文章希望大家以后多多支持好吧啦網(wǎng)!

標簽: Java
相關文章:
主站蜘蛛池模板: 欧美一区二区三区精品 | 欧美日韩综合视频 | 亚洲乱码国产乱码精品精 | 3bmm在线观看视频免费 | 国产成人免费视频网站高清观看视频 | 日韩午夜视频在线观看 | 黄网站免费在线观看 | 国产第一区在线观看 | 精品久久久久久久久久久久久久 | 色综合天天综合网国产成人网 | 天堂久久一区 | 在线a电影 | 日韩午夜激情 | 精品国产乱码久久久久久88av | 性色av一区二区三区 | 久久se精品一区精品二区 | 亚洲国产自产 | 国产精品无码久久久久 | 国产一级毛片电影 | 成人免费激情视频 | 日本在线一区二区 | 久久久久久久一区 | 日韩性精品| 亚洲成人福利在线观看 | 人人看人人插 | 97影院在线午夜 | 国产精品成人在线观看 | 女人夜夜春高潮爽a∨片传媒 | 日本黄色激情片 | 日韩不卡在线 | 日韩国产免费观看 | 精品在线一区二区三区 | 日韩国产免费观看 | 日韩欧美在线一区 | 91精品国产色综合久久不卡98口 | 久久久久久久久99精品 | 久久亚洲天堂 | 精品二区| 99草在线视频 | 国产日韩一区二区 | 久草 在线 | 色www精品视频在线观看 | 男女视频在线观看 | 簧片免费网站 | 久久亚洲二区 | 免费日本视频 | 亚洲高清视频在线 | 91免费网| 二区三区 | 91.com在线| 亚洲一区二区三区免费看 | 91高清在线| 久久久久久久国产精品 | 男人的天堂亚洲 | 国产成人亚洲综合 | a久久| h免费观看 | 中文字幕在线第一页 | 日韩不卡一区 | 午夜精品久久久久久久久久久久 | 国产成人精品一区二区三区视频 | 日韩久久一区二区 | 亚洲国产高清高潮精品美女 | 久久久网站 | 欧美一区二区三区 | 性视频黄色 | 激情综合网五月婷婷 | 国产中文字幕在线播放 | 操操网 | 亚洲成人免费影院 | 成人h视频在线观看 | 亚洲精品视频在线看 | 国产精品久久久久久久午夜片 | a成人 | 欧美,日韩,国产精品免费观看 | 亚洲激情视频 | 天天澡天天狠天天天做 | 亚洲精品久久久久久久久久久久久 | 欧美激情a∨在线视频播放 成人免费共享视频 | 日本高清视频在线播放 | 日本一区二区三区中文字幕 | 国产亚洲欧美一区二区 | 日日夜夜狠狠 | av大片网 | 国产日韩欧美视频 | 亚洲黄色免费观看 | 一级黄色片欧美 | 成人午夜精品一区二区三区 | 日本免费xxxx | 成人一区二区三区久久精品嫩草 | 天堂在线中文 | 国产午夜精品久久久久久久 | 91免费观看视频 | 日本欧美久久久久免费播放网 | 黄色毛片在线看 | 嫩草影院在线观看91麻豆 | 国产精品一区二区三区四区 | 日韩在线免费观看视频 | 亚洲经典视频在线观看 | 久久久久久久久久久久网站 | 中文字幕免费看 | 国产精品久久久久久久久大全 | 久久久精品免费观看 | 国产精品久久 | 午夜免费看片 | 国产亚洲精品成人av久久ww | 国产免费黄色 | 中文字幕国产 | 成人99| 亚洲激情一区二区 | 久久久精品亚洲 | 日韩aaa视频 | 国产一区二区三区在线 | 中文字幕日韩欧美一区二区三区 | 日韩精品在线观看免费 | 久草视频在线播放 | av免费网站| 北条麻妃国产九九九精品小说 | 亚洲一区二区中文字幕在线观看 | 欧美日韩综合视频 | 视频一区在线 | 国产精品女教师av久久 | 久久成人免费观看 | 午夜成人免费电影 | 免费看黄色大片 | 国产成人在线免费观看 | 国产精品国产精品 | 午夜久久av| 久草在线观看福利视频 | 亚洲欧美综合 | 免费二区| 91在线一区二区 | 亚洲精品久久久久久久久 | 亚洲二区在线视频 | 欧美日韩综合 | 在线看片日韩 | 亚洲第一区在线 | 色猫猫国产区一区二在线视频 | 日韩一区二区在线视频 | 日韩成人免费视频 | 日韩欧美精品 | 丁香婷婷在线观看 | 深夜av在线 | 国产精品99一区二区三区 | 欧美日韩国产在线观看 | 国产91网址 | 日韩精品一91爱爱 | 久久久久久久 | 亚洲a在线观看 | 亚洲精品国产乱码在线看蜜月 | 99爱免费视频 | 国产成人精品网站 | 中文字幕日本视频 | 欧美一级视频 | 电影91久久久 | 国产激情亚洲 | 日韩高清在线一区 | 日干夜操 | 欧美在线视频一区 | 久久精品综合 | 精品久久久久一区二区国产 | 黄色成人在线观看视频 | 日本三级网站在线观看 | 日韩精品久久久久久 | 国产精品自拍视频网站 | 欧洲一级毛片 | 91一区二区| 国产午夜精品一区二区 | 99久久免费精品国产男女性高好 | 日韩av在线不卡 | 日韩三级| 国产91综合一区在线观看 | 91精品国产综合久久婷婷香蕉 | 亚洲国产精品99久久久久久久久 | 激情一区二区三区 | 人人草人人| 欧美一区永久视频免费观看 | 91久久久久久久久久久久久久久久 | 中文字幕一区在线观看视频 | 亚洲天堂一区二区 | 欧美精品99 | 精品久久久久久久久福利 | 国产性一级片 | 国产无套一区二区三区久久 | 国产视频一区在线 | 久久久91精品国产一区二区 | 高清日韩av | 欧美日本韩国一区二区 | 免费一级毛片 | 龙珠z普通话国语版在线观看 | 久久久免费精品 | 超碰3| 亚洲欧美日韩精品久久亚洲区 | 在线只有精品 | 成人免费黄色片 | 欧美日韩久久 | 成人精品鲁一区一区二区 | 国产精品永久免费自在线观看 | 中文字幕亚洲精品 | 亚洲aaa在线观看 | 久久免费视频观看 | 91影库 | 美女在线国产 | 亚洲精品一区二区网址 | 自拍视频在线播放 | 亚洲精品乱码久久久久久麻豆不卡 | 97av在线 | 欧美在线a | 免费成人在线观看 | 久久之精品 | 特黄一级| 国产99久久精品一区二区永久免费 | 精品一区在线视频 | 欧美亚洲高清 | 91精品国产自产精品男人的天堂 | 91成人精品 | 成人不卡视频 | 老妇女av | 一区二区在线视频 | 日韩在线观看高清 | 国产www视频 | 天天插天天操天天干 | av网站免费在线观看 | 欧美成人性生活 | 久草视频在线资源站 | 伊人网伊人 | 中文字幕精品一区久久久久 | www.久久久.com | 色一级 | 超碰人人爱 | 成人免费xxxxx在线观看 | 亚洲久草视频 | 99久久久国产精品 | 亚洲视频中文字幕 | 国产精品成人久久久久 | 国产精品香蕉 | 国产精品中文字幕在线 | 午夜av电影 | 狠狠入ady亚洲精品经典电影 | 久久视频免费 | 亚洲综合一区二区三区 | 亚洲免费观看视频 | 久久电影国产 | 一道本一二三区 | 亚洲黄色a级 | 精品国产一区二区三区久久久蜜臀 | 久久精品视频在线播放 | 日本色站 | 91精品视频在线播放 | 日韩中文在线视频 | 午夜视频黄 | 在线观看av国产一区二区 | 成人不卡在线 | 黄色片子视频 | 一区二区三区四区免费观看 | 国产精品高清在线 | 日韩免费网站 | 日本精品一区二区三区视频 | 日本成人午夜影院 | 国产一级大片 | 一区不卡 | 国产高清在线精品一区二区三区 | 山岸逢花在线观看 | 亚洲精品一区二区网址 | 午夜精品一区二区三区四区 | 免费午夜电影 | 成人亚洲视频在线观看 | 一级欧美一级日韩 | 在线h观看 | 欧美日韩在线免费 | 欧美aaaaa| 国产精品久久久久久吹潮 | 亚洲成人精品av | 一级一级国产片 | 午夜影院免费体验区 | 欧美日本精品 | 国产免费一区二区 | 欧美人妖在线 | 91精品国产高清一区二区三区 | 国产日韩一区二区三区 | 91免费视频在线 | 日本一本在线 | 黄色福利 | 视频一区二区三区中文字幕 | 在线国产一区 | 久久久久久久久99精品 | 欧美视频三区 | 日本久久国产 | 色综合久久久久 | 国产精品毛片久久久久久久 | www.av在线 | www.嫩草 | 久久久久久久国产精品 | 日韩在线免费观看视频 | 中文字幕视频在线 | 免费av在线网站 | 色悠久久久 | 影音先锋成人资源网 | 五月天婷婷国产精品 | www.成人 | 久久久久久久久国产 | 日韩精品视频在线播放 | 日韩精品一区二区三区视频播放 | 夜夜久久 | 欧美一区二区三区四区五区 | 成人看片在线 | www.一区| 国产精品一区二区三区在线播放 | 国产精品不卡 | 日韩国产欧美视频 | 国产玖玖 | 美女视频一区二区三区 | 日韩欧美综合在线 | 欧美综合视频在线观看 | 日韩性在线 | 蜜桃av在线播放 | 久久久成人精品 | 国产精品久久久久久久免费大片 | 一区二区在线免费观看 | 狠狠操一区二区三区 | 国产一区二 | 亚洲一二三| 天天干国产 | 亚洲高清视频在线 | 中文字幕一区在线观看视频 | 国产精品999 | 在线免费看黄视频 | 中文字幕av亚洲精品一部二部 | 精品日韩一区二区 | 精品国产不卡一区二区三区 | 天堂在线网 | 日韩欧美手机在线 | 91精品中文字幕一区二区三区 | 一级视频黄色 | 久久久久一区二区三区 | 免费成人高清在线视频 | 成人午夜精品久久久久久久3d | 午夜国产精品视频 | 久久久国产一区二区三区 | 国产日韩欧美一区 | 日韩精品一区二区三区四区五区 | 国模精品视频一区二区 | 91欧美在线 | 日韩3级在线观看 | 一区二区日本 | 国产一区久久久 | 欧美一级在线观看 | 依人99| 日韩不卡一区二区 | 日韩成人在线观看视频 | 日韩三级在线 | 亚洲精品一区二区三区 | 精品国产乱码一区二区三区a | 国产高清在线精品一区二区三区 | 一级黄色大片 | 日韩av免费在线观看 | 免费一级在线观看 | 欧美一区免费 | 精品视频二区三区 | 亚洲精品乱码久久久久久久 | 亚洲一区二区免费在线观看 | 免费观看毛片 | 91色在线观看 | 欧美精品一区二区在线观看 | 亚洲成人精品在线 | 成人av网址在线观看 | 99福利视频 | 国产一区二区三区欧美 | 亚洲精品国偷拍自产在线观看 | 国产 亚洲 网红 主播 | 久久精品 | 欧美第8页| 中文字幕在线免费看 | 国产毛片在线看 | jjzz18国产| 禁果av一区二区三区 | 久久伊 | 日韩一区二区三区在线 | 午夜tv | 99精品欧美一区二区蜜桃免费 | 成人免费一区二区三区 | 日本在线观看视频一区 | 国产视频二区 | 欧美日韩久久 | 久久久久亚洲精品 | 久久精品国产91精品亚洲高清 | 国内成人精品2018免费看 | 99精品亚洲 | 日韩不卡一区二区 | 亚洲视频在线观看 | 碰在线视频 | 日本久久久久久 | 欧美一级做性受免费大片免费 | 黄色片在线免费看 | 欧美猛交ⅹxxx乱大交视频 | 午夜影院免费视频 | 成人av小说 | 自拍偷拍亚洲视频 | 欧美成人手机在线 | 97色综合| 日韩一区二区三区在线 | 成人日批视频 | 精品国产91乱码一区二区三区 | 亚洲电影在线观看 | 日韩一区二区三区av | 久久综合久久综合久久综合 | 国产精品国产精品国产专区不蜜 | 国产成人免费 | 91亚洲国产成人久久精品网站 | 成人免费一区二区三区视频网站 | 日韩欧美一区二区三区免费观看 | 成人精品视频99在线观看免费 | 欧美日韩精品在线观看 | 亚洲精品在线免费观看视频 | 日韩精品一区二区三区第95 | 国产一区免费 | 亚洲精品一区中文字幕乱码 | a毛片毛片av永久免费 | 日韩成人免费 | 国产精品视频999 | 日韩欧美专区 | av网站免费观看 | 精品久久久久久 | 久久国产精品久久久久久久久久 | 成人 在线| 亚洲另类小视频 | 中文字幕一区在线观看视频 | 久久免费视频3 | 久久精品影片 | 男女av在线 | 毛片网站大全 | 国产精品国产a级 | 精品一区二区国产 | 亚洲精品国产a久久久久久 国产毛片毛片 | 午夜亚洲电影 | 国产一区二区三区四区在线观看 | 亚洲 欧美日韩 国产 中文 | av免费网站在线观看 | 桃色五月| 欧洲视频一区二区 | 操操网 | 亚洲国产自产 | 最新av网址大全 | 国产成人精品在线 | 久久综合九九 | 成人免费视频在线观看 | 精品视频网 | 精品在线不卡 | 久久久久久久久久久成人 | 亚洲深深色噜噜狠狠网站 | 一区二区在线视频 | 伊人网在线视频 | 亚洲男人天堂网 | 一区二区三区在线看 | 四虎免费看黄 | 亚欧毛片 | 黄色一级视频 | 亚洲精品国偷拍自产在线观看 | 国产视频91在线 | 久久中文字幕一区 | 国产综合区 | 久久99精品久久久久久琪琪 | 日韩视频在线免费观看 | 久久精品免费一区二区三区 | 欧美日韩久久精品 | 中文字幕国产区 | 久久久成人精品 | 免费看的av| 日韩激情网 | 成人国产在线 | 免费看的毛片 | ww8888免费视频 | 欧洲成人午夜免费大片 | 嫩草研究院在线观看入口 | 亚洲人成人一区二区在线观看 | 国产美女精品人人做人人爽 | 久久久精彩视频 | 日韩精品在线观看一区 | 成视频年人免费看黄网站 | 日本久久精品视频 | 午夜视频在线观看网站 | 日韩精品一 | 中文字幕在线亚洲 | 精品欧美一区二区三区 | 精品国产欧美一区二区三区成人 | 一区二区三区视频免费看 | 在线 亚洲 欧美 | 欧美精品一 | 午夜精| 91麻豆产精品久久久久久 | 久在线视频 | 亚洲 激情 在线 | 81精品国产乱码久久久久久 | 午夜影院普通用户体验区 | 国产第一区二区 | 日韩一区二区三区av | 亚洲第一天堂无码专区 | 久久久午夜爽爽一区二区三区三州 | 国产精品三级在线 | 成人一区二区三区久久精品嫩草 | 天堂资源最新在线 | 国产伦精品一区二区三区高清 | xnxx 美女19| 成全视频免费观看在线看黑人 | 欧美日韩精品久久久 | 影音先锋 色先锋 | 国产美女在线观看 | 日韩精品在线播放 | 日韩中文在线 | 久久国产亚洲精品 | 欧美激情综合色综合啪啪五月 | 国产ts余喵喵和直男多体位 | 九九久久久 | 四虎影院网 | 国产成人免费视频网站高清观看视频 | 欧美成人一区二免费视频软件 | 亚洲视频在线免费观看 | 欧美高清视频在线观看 | 欧美一级片在线观看 | 99热福利 | 日韩欧美大片在线观看 | 久久精品在线观看视频 | 久久久www | 久久激情五月丁香伊人 | 国产日韩欧美一区 | 国内自拍视频在线观看 | 久久久久久久国产精品 | 国产精品美乳一区二区免费 | 国产视频网| 一区二区三区国产在线 | 久久久久久影院 | 久久亚洲精品综合 | 91视频免费观看 | 成人免费视频观看视频 | 久久三区 | 国产精品久久片 | 中文字幕成人影院 | 狠狠干美女 | 精品国产黄a∨片高清在线 99热婷婷 | 精品二区视频 | 亚洲丶国产丶欧美一区二区三区 | 亚洲激情一区 | 天天爽夜夜春 | 国产成人久久精品一区二区三区 | 美女h视频 | 国产精品久久av | 成人久久18免费 | 精品国产一区二区三区久久久蜜月 | 亚洲精品自在在线观看 | 色婷婷一区二区三区四区 | 午夜电影网 | 欧美成人小视频 | 天天操网| 精品国产一区二区三区日日嗨 | 一级毛片免费网站 | 天天插天天操天天干 | 国产区在线 | 欧美激情欧美激情在线五月 | 爱爱爱av | 欧美日韩在线视频一区二区 | www.日本三级| 日韩福利一区二区 | 91在线观看视频 | 国产精品日韩在线观看 | 男人的天堂在线视频 | 亚洲性人人天天夜夜摸 | 成人免费一区 | 国产精品永久在线 | 亚洲 精品 综合 精品 自拍 | 黄色大片在线播放 | 中文字幕久久精品 | www.99精品 | 99热在线精品播放 | 国产精品一区二区三区在线 | 欧美福利在线观看 | 亚洲一区二区三区四区在线观看 | 久久久久国产精品www | 日韩免费在线观看视频 | 亚洲久草| 欧美黄色片免费观看 | 色九九| 精品在线二区 | 国产乱码精品1区2区3区 | 国产色| 久久久精品网站 | 久草视频免费看 | 国产91久久精品一区二区 | 国产激情在线观看视频 | 国产成人在线播放 | 欧美午夜精品久久久久久蜜 | 日本在线免费 | 色吧久久 | 久久精品国产清自在天天线 | 九色视频在线播放 | 成人练习生 | 青青久草 | 激情图区在线观看 | 九色视频在线播放 | 日本久久精品视频 | 色综合久久88色综合天天 | 日韩精品无码一区二区三区 | 久久在线视频 | 久久av网 | 在线播放三级 | 精品久久久久久国产 | 精品国产不卡一区二区三区 | 欧美日韩亚洲视频 | 一色一黄视频 | 国产精品高潮呻吟久久av黑人 | 亚洲高清av| 成人免费视频观看 | 青青草av | 久久人人网| 成人在线免费 | 中文字幕在线视频一区 |