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

美團二面:SpringBoot讀取配置優先級順序是什么?

開發 前端
啟動Spring Boot應用時,可以直接通過命令行參數來覆蓋或設置配置屬性。命令行參數通常以--?開頭,后面緊跟屬性名和值,如--server.port=8080。這種方式可以在不修改配置文件的前提下臨時調整應用配置。

引言

Spring Boot作為一種輕量級的Java應用程序框架,以其開箱即用、快速搭建新項目的特性贏得了廣大開發者的青睞。其核心理念之一就是簡化配置過程,使開發者能夠快速響應復雜多變的生產環境需求。為了實現這一點,Spring Boot支持豐富的外部化配置機制,允許應用程序根據不同的部署環境靈活加載相應的配置屬性,而無需修改代碼本身。

在Spring Boot生態系統中,配置屬性可以從各種來源獲取,比如:Java屬性文件、YAML文件、環境變量、命令行參數等。這些配置屬性能夠在運行時動態注入到Bean中,極大地提高了系統的可擴展性和可配置性。然而,為了確保一致性和防止配置沖突,Spring Boot在加載這些外部配置時遵循一套嚴格的優先級順序。掌握這套優先級規則至關重要,因為它直接影響著最終生效的配置屬性值,進而決定了應用程序的行為模式。

本文將深入探討Spring Boot加載外部配置屬性的優先級規則,詳盡梳理各個配置源的加載順序,并結合實際應用場景舉例說明,以便我們能夠更高效地管理和遷移配置,確保在不同環境下應用程序都能穩定、準確地運行。

Spring Boot外部化配置概述

Spring Boot的核心價值之一在于其強大的外部化配置能力,這使得應用程序能夠在不改變代碼的情況下適應不同的運行環境。外部化配置意味著將應用程序的關鍵配置信息移至應用程序代碼之外,便于根據不同環境(如開發、測試、生產等)進行定制化配置。Spring Boot提供了多樣化的外部配置源以及便捷的屬性注入方式,使得這種配置機制變得異常靈活且易于管理。

多樣化配置源

Spring Boot支持多種類型的外部配置源,主要有如下幾個方面:

Properties文件: 通常使用.properties格式,采用鍵值對的形式存儲配置信息。

server.port=8080
logging.level.root=DEBUG

YAML文件: 相較于傳統的properties文件,YAML提供了更直觀、層次更分明的數據結構,尤其適合存儲復雜配置。使用.yml格式。

server:
  port: 8080
logging:
  level:
    root: DEBUG

1. 環境變量: 操作系統級別的環境變量可以被Spring Boot識別并作為配置源,這對于云環境和容器化部署尤為實用。

2. 命令行參數: 啟動Spring Boot應用時,可以傳入命令行參數(以--開頭)直接覆蓋已有配置。

屬性注入方式

在Spring Boot中,外部配置的屬性值可以通過以下幾種方式方便地注入到Bean中。

? @Value注解:可以直接在字段或方法參數上使用此注解,將配置屬性值注入到目標對象中。

? Environment接口:Spring框架提供的環境抽象類,可以用來查詢所有已加載的配置信息。

? @ConfigurationProperties注解:用于綁定一組相關配置到一個專門的Java Bean中,提供更結構化的配置管理方式。

配置加載優先級

Spring Boot對來自不同配置源的同名屬性可以按照一定的優先級順序進行覆蓋。其優先級從上到下變高,即后面的配置源將覆蓋前面的配置源。

1. 默認屬性(通過SpringApplication.setDefaultProperties方法設置)

2. @PropertySource注解加載的配置

3. Config Data(配置數據)(本地文件系統或打包在jar中的application.properties和application-{profile}.properties)

4. 特殊屬性源(如隨機數生成器、環境變量、系統屬性、JNDI屬性等)

5. Servlet容器相關的初始化參數

6. SPRING_APPLICATION_JSON格式的環境變量或系統屬性

7. 命令行參數

8. 測試相關的屬性注入方式(如@SpringBootTest、@DynamicPropertySource和@TestPropertySource)

以上優先級順序來源于官網:Spring Boot Reference Documentation

Spring Boot配置加載順序詳解

默認屬性

默認屬性是指Spring Boot框架內置的一些默認配置值。可以在創建SpringApplication實例時,通過調用setDefaultProperties(Map<String, Object> defaultProperties)方法來提供一組默認屬性,這些屬性將被優先加載,但是也會被其他配置覆蓋。

@SpringBootApplication
public class SpringBootBaseApplication {

    public static void main(String[] args) {
        Map<String, Object> defaultProperties = new HashMap<>();
        defaultProperties.put("server.port", "9000"); // 自定義默認端口
        SpringApplication app = new SpringApplication(SpringBootBaseApplication.class);
        app.setDefaultProperties(defaultProperties);
        app.run(args);
    }
}

圖片圖片

@PropertySource注解

@PropertySource注解用于在Spring Boot的@Configuration類上加載外部屬性文件。當我們在配置類上使用@PropertySource時,需要注意的是,這些屬性源并不會立即被添加到Spring的Environment中。它們是在Spring應用上下文刷新(refresh)階段才會被真正加載并合并到環境變量中。

有興趣的可以跟一下源碼,org.springframework.context.support.AbstractApplicationContext#invokeBeanFactoryPostProcessors中執行的。

Spring Boot的主引導配置,如服務器端口(server.port)、日志框架的初始化(例如日志級別設置)等,也是在應用上下文刷新之前就被讀取并應用的。因此,對于這類早期就需要讀取的配置,應該直接在application.properties或者環境變量等更早被加載的配置源中進行設置。

我們創建一個propertysource.properties文件:

server.port = 9001
coderacademy.name = CoderAcademy

然后我們在@Configuration配置上使用@PropertySource導入propertysource.properties文件。

@PropertySource(value = "classpath:propertysource.properties")
@Configuration
public class MyConfig {

}

我們在應用啟動后看一下上述配置:

@SpringBootApplication
public class SpringBootBaseApplication {

    public static void main(String[] args) {
        Map<String, Object> defaultProperties = new HashMap<>();
        defaultProperties.put("server.port", "9000"); // 自定義默認端口
        SpringApplication app = new SpringApplication(SpringBootBaseApplication.class);
        app.setDefaultProperties(defaultProperties);
        ConfigurableApplicationContext context = app.run(args);
        Environment environment = context.getEnvironment();
        System.out.println("coderacademy.name: " + environment.getProperty("coderacademy.name"));
    }
}

打印結果:

可以看出server.port變成了9001,即@PropertySource加載的配置覆蓋了SpringBoot默認的屬性值。

Config Data(配置數據)

Config Data(配置數據)是Spring Boot中用于外部化應用配置的核心部分。主要由內部配置文件以及外部配置文件。

內部配置文件

內部配置文件最基礎的應用配置文件,位于項目構建后的jar包內部。位于src/main/resource目錄下的文件。

外部配置文件

可以將配置文件放在jar包外面的某個路徑下。這種方式有助于在不修改jar包的情況下變更配置。比如我們使用的配置中心(nacos,apollo等),也可以通過spring.config.location或者spring.config.additional-location指定的文件等。

SpringBoot在啟動時會默認從特定的目錄中加載這些配置文件。我們可以從ConfigDataEnvironment中找到這些目錄:

其目錄的加載順序由低到高為:

file:./
file:./config/
file:./config/*/
classpath:/
classpath:/config/

其中file代表應用根目錄下的文件,而classpath為resources下的文件。

這些配置文件的配置優先級順序由低到高為:

classpath:/
classpath:/config/
file:./
file:./config/
file:./config/*/

本例基于SpringBoot2.7版本。 關于SpringBoot加載內部配置文件的執行流程以及原理,請參考: 華為二面:SpringBoot讀取_配置文件_的原理是什么?加載順序是什么?

我們分別在這些目錄下創建配置文件application.properties:

我們在對應文件中寫入他們的目錄路徑:

1: config.data.path = classpath:./
2: config.data.path = classpath:./config/
3: config.data.path = file:./
4: config.data.path = file:./config/
5: config.data.path = file:./config/dev

我們在SpringBoot啟動時打印config.data.path的值:

@SpringBootApplication
public class SpringBootConfigApplication {

    public static void main(String[] args) {
        Map<String, Object> defaultProperties = new HashMap<>();
        defaultProperties.put("server.port", "9000"); // 自定義默認端口
        SpringApplication app = new SpringApplication(SpringBootConfigApplication.class);
        app.setDefaultProperties(defaultProperties);
        ConfigurableApplicationContext context = app.run(args);
        Environment environment = context.getEnvironment();
        System.out.println("config.data.path: " + environment.getProperty("config.data.path"));
    }
}

我們分步進行驗證,先驗證1,2,打印結果:

config.data.path: classpath:./config/

繼續驗證1,2,3,打印結果:

config.data.path: file:./

驗證1,2,3,4,打印結果:

config.data.path: file:./config/

驗證1,2,3,4,5,打印結果:

config.data.path: file:./config/dev

隨機值屬性源

RandomValuePropertySource 在Spring Boot中,RandomValuePropertySource是一個特殊屬性源,它并不來源于固定的配置文件或環境變量,而是由Spring Boot框架在啟動時自動添加。這個屬性源提供的屬性名以random.*開頭,可以用于生成隨機值。例如,你可以在配置文件中引用random.int或random.long等屬性,Spring Boot在啟動時會為這些屬性生成隨機整數值。這對于需要在運行時生成一些臨時或隨機值的場景非常有用,如臨時密碼、緩存密鑰等。

比如我們在application.properties中設置random.int=100

random.int=100

我們在SpringBoot啟動時獲取``random.int`的值:

@SpringBootApplication
public class ConfigApplication
{
    public static void main( String[] args )
    {
        SpringApplication app = new SpringApplication(ConfigApplication.class);
        ConfigurableApplicationContext context = app.run(args);
        Environment environment = context.getEnvironment();
        System.out.println("random.int: " + environment.getProperty("random.int"));
    }
}

打印結果為:

random.int: -510589238

并且每次重新啟動應用,打印的結果都不一樣。

操作系統環境變量

在Spring Boot中,環境變量可以用作配置源,Spring Boot會自動檢測并加載這些環境變量作為應用的配置屬性。例如,如果在操作系統中設置了環境變量MY_APP_PORT=8080,那么在Spring Boot應用中可以通過${MY_APP_PORT}來引用這個值。

我們設置環境變量為config.data.path=環境變量:

我們啟動引用,依然打印config.data.path的結果為:

config.data.path: 環境變量

Java系統屬性

Java系統屬性是通過System.setProperty()方法設置一系列鍵值對。

@SpringBootApplication
public class ConfigApplication
{
    static {
        System.setProperty("config.data.path", "SystemProperty"); // 設置系統屬性
    }

    public static void main( String[] args )
    {
        SpringApplication app = new SpringApplication(ConfigApplication.class);
        ConfigurableApplicationContext context = app.run(args);
        Environment environment = context.getEnvironment();
        System.out.println("config.data.path: " + environment.getProperty("config.data.path"));
    }
}

打印結果為:

config.data.path: SystemProperty

SPRING_APPLICATION_JSON環境變量中的內嵌JSON屬性

SPRING_APPLICATION_JSON 是 Spring Boot 提供的一種機制,允許通過環境變量傳遞 JSON 格式的配置給應用程序。這個環境變量的內容會被解析成一個 JSON 對象,并合并到Spring的Environment中,就像其他屬性源一樣。

@SpringBootApplication
public class ConfigApplication
{
    static {
        System.setProperty("config.data.path", "SystemProperty"); // 設置系統屬性
        System.setProperty("SPRING_APPLICATION_JSON", "{\"config.data.path\":\"SPRING_APPLICATION_JSON環境變量中的內嵌JSON屬性\"}");
    }

    public static void main( String[] args )
    {
        SpringApplication app = new SpringApplication(ConfigApplication.class);
        ConfigurableApplicationContext context = app.run(args);
        Environment environment = context.getEnvironment();
        System.out.println("config.data.path: " + environment.getProperty("config.data.path"));
    }
}

打印結果:

config.data.path: SPRING_APPLICATION_JSON環境變量中的內嵌JSON屬性

命令行參數

啟動Spring Boot應用時,可以直接通過命令行參數來覆蓋或設置配置屬性。命令行參數通常以--開頭,后面緊跟屬性名和值,如--server.port=8080。這種方式可以在不修改配置文件的前提下臨時調整應用配置。命令行參數具有較高的優先級,可以覆蓋其它配置源中的屬性值。

我們使用java -jar啟動SpringBoot:

java -jar ./springboot-config-1.0-SNAPSHOT.jar --config.data.path=命令行參數

打印結果為:

config.data.path: 命令行參數

責任編輯:武曉燕 來源: 碼農Academy
相關推薦

2025-06-05 03:10:00

mmapmalloc共享內存

2012-08-14 09:38:29

WAN優化

2023-08-08 08:28:03

消息消費端Spring

2025-02-03 08:23:33

2023-04-03 07:57:00

2023-04-21 13:57:38

Redis阻塞半自動

2022-12-23 09:41:14

優先級反轉

2024-04-23 14:13:38

開發配置文件

2023-04-03 10:24:00

spring事務場景

2022-09-08 13:56:49

MySQL事務記錄鎖

2024-04-30 11:00:10

數據中心

2010-09-01 14:10:36

CSS優先級

2009-08-28 17:10:59

C#線程優先級

2010-08-31 11:04:48

CSS優先級

2010-09-13 17:30:07

CSS優先級

2023-10-25 10:21:24

瀏覽器HTTP請求

2021-04-06 10:45:18

React前端優先級

2020-09-30 09:07:37

DevOps

2010-03-18 14:09:20

Java線程同步

2025-05-26 09:40:02

!importantCSS 優先級開發
點贊
收藏

51CTO技術棧公眾號

国产精品视频一二三| 久久aaaa片一区二区| 最近中文字幕无免费| 国产三级在线| 99久久香蕉| 国产精品国产自产拍高清av | 国产999免费视频| 欧美日韩经典丝袜| 麻豆91小视频| 亚洲精选中文字幕| 不卡视频一区二区| 成人一级黄色大片| 秋霞国产精品| 久久亚洲影视婷婷| 97视频国产在线| 四川一级毛毛片| 黄毛片在线观看| 99久久综合色| 7m精品福利视频导航| 日韩少妇一区二区| 波多野结衣乳巨码无在线观看| 国产一区二区三区在线观看精品| 中文字幕亚洲国产| 日韩中文字幕二区| 日本一区视频| 日韩专区中文字幕一区二区| 日韩成人中文字幕| 欧美精品一区免费| 色播色播色播色播色播在线| 激情六月婷婷综合| 久久久精品国产网站| 四虎成人在线播放| 激情图片在线观看高清国产| 欧美国产精品一区| 蜜桃网站成人| 国产婷婷色一区二区在线观看| 四虎5151久久欧美毛片| 色偷偷一区二区三区| 任我爽在线视频精品一| 国产精品成人无码| 国产精品成人a在线观看| 欧美精品第1页| 国产青草视频在线观看| 老牛影视av牛牛影视av| 亚洲欧美日韩国产一区| 中文字幕日韩专区| mm131美女视频| 成人久久网站| 亚洲一区在线观看免费观看电影高清 | 日韩欧美一级二级| 300部国产真实乱| 欧美在线 | 亚洲| 日韩精品视频网站| 青草热久免费精品视频| 国产视频123区| 国产黄色精品| 在线观看亚洲一区| 老司机午夜网站| 亚洲搞黄视频| 99这里只有久久精品视频| 成人三级在线| 最近中文字幕在线观看| 久久一区中文字幕| 欧美成人在线网站| 法国伦理少妇愉情| 亚洲成a人片77777在线播放| 6080国产精品一区二区| 又粗又黑又大的吊av| 成人免费高清观看| 精品久久久久久中文字幕| 亚洲自拍三区| 婷婷丁香花五月天| 精品一二线国产| 成人综合国产精品| 中文字字幕在线中文| 99国内精品久久久久久久| 日韩在线观看免费av| 亚洲av成人精品一区二区三区| 日本在线中文字幕一区二区三区| 在线观看不卡视频| 天堂在线一区二区三区| 午夜影院一区| 亚洲午夜三级在线| www.中文字幕在线| 国产资源一区| 色综合天天综合网国产成人综合天| 亚洲中文字幕无码专区| 日本精品久久久久久久| 妓院一钑片免看黄大片| 成人在线app| 久久综合九色综合欧美就去吻| 麻豆亚洲一区| 色综合久久影院| 亚洲一区二区视频| 女性隐私黄www网站视频| 日韩午夜电影免费看| 欧美性猛xxx| 欧美这里只有精品| 亚洲色图官网| 欧美日韩国产电影| www.国产区| 精品一区二区三区视频在线播放| 色综合久久88色综合天天| 三上悠亚在线一区| 黄瓜视频成人app免费| 香蕉成人啪国产精品视频综合网| 免费观看中文字幕| 婷婷免费在线视频| 亚洲图片一区二区| 亚欧美在线观看| 中文.日本.精品| 日韩欧美三级在线| av网站免费在线看| 国产精品一线天粉嫩av| 日韩成人久久久| 日本爱爱小视频| 另类av一区二区| 日韩美女激情视频| 亚洲爱爱综合网| youjizz久久| 一区二区免费在线视频| 欧美伦理91| 色综合色狠狠天天综合色| 在线观看日本www| 欧美日韩中文一区二区| 欲色天天网综合久久| 国产成人免费观看网站| 欧美少妇xxxx| 日韩中文综合网| 亚洲GV成人无码久久精品| 国产99久久久精品| 精品欧美一区二区久久久伦| 天天综合网在线观看| 亚洲精品日韩专区silk| 国产精品www在线观看| 久久男人av资源站| 日韩欧美在线一区二区三区| 国产a√精品区二区三区四区| 成人爽a毛片| 欧美日韩国产成人高清视频| 国产一级做a爱免费视频| 亚洲三级色网| 国产精品成人一区二区| 92久久精品一区二区| 国产馆精品极品| 精品日韩电影| 久久久久黄久久免费漫画| 制服丝袜亚洲播放| 三级影片在线观看| 亚洲韩日在线| 国产高清自拍一区| 国产www视频在线观看| 日韩精品一区二区三区视频在线观看| a一级免费视频| 精品一区二区av| 日韩精品福利片午夜免费观看| 成人51免费| 6080国产精品一区二区| 老熟妻内射精品一区| 亚洲精品美女| 国产精品一区二区欧美黑人喷潮水| 国产女人在线观看| 色婷婷综合在线| 久久久免费看片| 久久99精品国产| 久久一区二区三区欧美亚洲| 国产h片在线观看| 精品偷拍各种wc美女嘘嘘| 黄视频网站免费看| 国产乱码精品一品二品| 欧美一区二区三区精美影视| 日韩不卡免费高清视频| 精品日韩在线观看| 91香蕉视频在线播放| 狠狠v欧美v日韩v亚洲ⅴ| 强开小嫩苞一区二区三区网站| 日韩视频在线直播| 中文字幕视频一区二区在线有码 | 欧美激情1区2区3区| 97超级碰碰碰久久久| 久草视频在线看| 亚洲大型综合色站| 欧美xxxxxbbbbb| 亚洲三级观看| 先锋影音欧美| 三上悠亚激情av一区二区三区 | 成人av资源网| 在线成人av观看| 精品国产乱码久久久久久老虎| 欧美大波大乳巨大乳| 久久国产人妖系列| 你真棒插曲来救救我在线观看| 青青草国产一区二区三区| 欧美日本中文字幕| 国产日本在线| 精品国产sm最大网站免费看| 无码人妻一区二区三区免费| 成人动漫中文字幕| 国产亚洲精品久久久久久久| 日韩午夜视频在线| 91精品国产91久久久久久吃药| 成年人视频免费在线观看| 欧美性猛交丰臀xxxxx网站| av在线免费播放网址| 99精品国产一区二区三区不卡| 大西瓜av在线| 第四色成人网| 九色综合日本| 老司机2019福利精品视频导航| 久久久999国产| 美国一级片在线免费观看视频| 精品日本美女福利在线观看| 亚洲熟女乱综合一区二区三区| 免费高清成人在线| 亚洲欧洲久久| av日韩一区| 国产精品久久久久久久久久小说 | 久久久久久久av| 亚洲国产精彩视频| 欧美日韩免费一区二区三区| www.国产色| 国产亚洲一本大道中文在线| 手机看片福利日韩| 日韩成人综合| 亚洲在线免费视频| av资源中文在线天堂| 国产丝袜一区二区三区| 午夜精品久久久久久久99老熟妇| 一区二区三区 在线观看视频| 亚洲国产精品第一页| 久久99精品久久久久| 超碰在线播放91| 伊人久久大香线蕉综合四虎小说| 97免费资源站| 天堂中文在线播放| 欧美精品激情在线观看| 国产秀色在线www免费观看| 欧美大片日本大片免费观看| 中文字幕一二三四| 一区二区三区四区五区视频在线观看 | www国产在线观看| 色偷偷噜噜噜亚洲男人的天堂 | 亚洲成人激情在线| 国产无人区码熟妇毛片多| 亚洲午夜国产一区99re久久| 欧美成欧美va| 久久亚洲捆绑美女| 亚洲av无码一区二区二三区| 91天堂素人约啪| 日本xxxx黄色| 日本中文在线一区| 国产自产在线视频| 亚洲激情社区| 国产极品粉嫩福利姬萌白酱| 四季av一区二区三区免费观看| y111111国产精品久久婷婷| 欧美大片91| 99久久精品免费看国产四区| 大伊香蕉精品在线品播放| 国产精品大片wwwwww| 欧美不卡高清一区二区三区| 国产精品黄页免费高清在线观看| 欧美xnxx| 91精品国产自产在线| 日本在线影院| 国产成人久久久| 电影k8一区二区三区久久| 97国产精品久久| 芒果视频成人app| 国产精品无码专区在线观看| 女厕盗摄一区二区三区| 日韩美女激情视频| 欧美亚洲福利| 成人黄色片视频网站| 亚洲婷婷伊人| 亚洲午夜精品一区二区| 国产精品videosex极品| 宅男一区二区三区| 国产一区二区三区四区| 亚洲日本欧美在线| 欧美区亚洲区| 中文字幕第一页亚洲| 国产精品免费大片| 一区精品在线| 亚洲精品一二| 亚洲综合婷婷久久| 粉嫩在线一区二区三区视频| 久久久久亚洲av无码专区桃色| 亚洲欧美在线观看| 日本视频在线免费| 亚洲国产精品自拍| 一区精品在线观看| 亚洲第一偷拍网| 亚洲精品承认| 2019中文字幕免费视频| aa视频在线观看| 国产精品亚洲美女av网站| 视频精品二区| 亚洲国产精品www| 亚洲精华国产欧美| 日韩av一卡二卡三卡| 91免费小视频| 免费在线观看一级片| 欧美在线观看视频在线| 日韩中文字幕高清| 在线视频你懂得一区| 亚洲成熟女性毛茸茸| 中文字幕av一区中文字幕天堂| 538在线观看| 91免费福利视频| 国产成人短视频在线观看| 国产精品一色哟哟| 韩国视频一区二区| 谁有免费的黄色网址| 亚洲国产精品一区二区www在线| 中文字幕你懂的| 亚洲乱码国产乱码精品精| 午夜伦理大片视频在线观看| 欧美精品videofree1080p| 色狠狠一区二区三区| 日韩电影天堂视频一区二区| 久久激情电影| 亚洲中文字幕无码中文字| 成人午夜激情影院| 最近中文字幕无免费| 一区av在线播放| 国产av一区二区三区| 亚洲精品国精品久久99热| 日本不卡免费播放| 久久久在线观看| 偷拍精品精品一区二区三区| 国产欧美丝袜| 国产一区二区观看| 日本www在线播放| 99精品久久免费看蜜臀剧情介绍 | 欧美性猛交xxxx富婆| 黄色一级大片在线免费看国产一| 欧美成人黄色小视频| 日韩一区二区三区精品| 久久久久久久久影视| 国产一区二区三区免费在线观看| 亚洲激情图片网| 欧美日精品一区视频| 丰满人妻一区二区三区无码av| 久久成人亚洲精品| 天堂8中文在线最新版在线| 国产偷国产偷亚洲高清97cao| 国产一区激情| 亚洲成av人片在线观看无| 香港成人在线视频| 无码国产精品高潮久久99| 中文字幕免费精品一区高清| 日韩中文在线播放| 亚洲成人a**址| 久久成人免费网| 日韩女优一区二区| 欧美成人一区二区三区在线观看| 影音先锋在线视频| 国产精品高潮呻吟久久av无限| 国产一区2区| 天天看片天天操| 亚洲精品国产品国语在线app| 精品久久久中文字幕人妻| 欧美激情一级精品国产| 欧美a一欧美| 亚洲人成网站在线播放2019| 精品在线亚洲视频| 五月婷婷一区二区| 亚洲电影免费观看| 台湾佬成人网| 亚洲欧美一二三| 成人动漫中文字幕| 亚洲婷婷久久综合| 欧美xxxx综合视频| 麻豆精品99| 高清无码视频直接看| 99在线精品免费| 这里只有精品免费视频| 久久久精品一区二区| 都市激情亚洲欧美| 青青在线视频免费| 亚洲欧美另类图片小说| 人妻偷人精品一区二区三区| 国产精品va在线播放| 欧美三区在线| 老头老太做爰xxx视频| 色狠狠色噜噜噜综合网| 香蕉视频国产在线| 国产精品高精视频免费| 激情成人综合| 亚洲成a人片在线www| 色综合天天狠狠| 亚洲wwwww| 日日夜夜精品网站| 国产成人av电影在线观看| 免费视频网站在线观看入口| 九九热这里只有在线精品视| 经典一区二区| 国产白袜脚足j棉袜在线观看| 在线亚洲欧美专区二区|