日韩av黄I国产麻豆传媒I国产91av视频在线观看I日韩一区二区三区在线看I美女国产在线I麻豆视频国产在线观看I成人黄色短片

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 前端技术 > javascript >内容正文

javascript

Spring Environment全解析

發布時間:2023/12/16 javascript 41 豆豆
生活随笔 收集整理的這篇文章主要介紹了 Spring Environment全解析 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

文章目錄

  • 一、前言
  • 二、Spring Environment簡介
    • 2.1 env 的 profiles 不同環境配置分組
      • 2.1.1 env 的 profiles 基本使用
      • 2.1.2 配置環境三地方:啟動類、application.properties配置文件、Run/Debug Configuration
      • 2.1.3 setActiveProfiles()參數是數組,可以設置多個
    • 2.2 env 的 properties:存放屬性的環境或文件信息 @Value("{xxx}")
      • 2.2.1 用@Value取出普通配置
      • 2.2.2 用@Value取出系統配置,如java.version
      • 2.2.3 用Environment實例bean取出系統配置,如java.version
      • 2.2.4 為什么可以用Environment實例bean取出java.version這種系統配置
  • 三、Spring Environment源碼解析
    • 3.1 從run()方法開始
    • 3.2 第一子方法:新建或獲取環境getOrCreateEnvironment()方法
      • 3.2.1 AbstractEnvironment類
      • 3.2.2 StandardEnvironment類
      • 3.2.3 StandardServletEnvironment類
      • 3.2.4 MutablePropertySources類
    • 3.3 第二子方法:準備環境configureEnvironment()
      • 3.3.1 SpringApplication類中的configureEnvironment()
      • 3.3.2 解析properties屬性:SpringApplication類的configurePropertySources()
      • 3.3.3 SpringApplication類的configureProfiles()
    • 3.4 第三子方法:開始加載springboot的配置listeners.environmentPrepared(environment)
      • 3.4.1 listeners.environmentPrepared(environment)
      • 3.4.2 onApplicationEnvironmentPreparedEvent()
      • RandomValuePropertySource類
  • 四、尾聲

一、前言

二、Spring Environment簡介

2.1 env 的 profiles 不同環境配置分組

2.1.1 env 的 profiles 基本使用

首先,我們知道,整個spring應用運行的環境信息:profiles + properties

先看profiles,在代碼中的配置為:

spring.profiles.active=prd/test/dev...

profiles作用:對bean邏輯分組

先定義一個ProfileService類,包含一個私有屬性profile,如下:

新建一個ProfileConfiguration配置類,將新建的ProfileService類的實例bean定義在這里,等到springboot項目啟動的時候,將可以將ProfileService實例bean裝載的ioc容器中去了,整個如下:

在ProfileConfiguraiton配置類的各個bean上,加上@Profile注解,模擬設置兩種不同環境下的bean,聲明不同環境的bean

金手指:使用@Profile對不同的bean邏輯分布 xml 和注解都可以

現在我們不使用SpringbootApplication類啟動了,直接寫一個main方法啟動即可,如下,在啟動之前,在Environment里面設置profile,setActiveProfile()蠶食是數組,可以設置躲著,這里測試之用,先設置“prd”,最后context.getBean可以取出ioc容器中的bean,打印到控制臺就好。

一般來說,getBean和@Autowired兩種方式都可以取出ioc容器中的bean.

運行springboot工程,如果打印出來的ioc容器中的bean,prd環境中的bean,就可以了。

至此,對于env 的 profiles設置成功。

2.1.2 配置環境三地方:啟動類、application.properties配置文件、Run/Debug Configuration

我們能夠配置環境的地方不止一個,不僅像上面在啟動類中可以配置,還是在application.properties配置文件中配置,還可以在 Run/Debug Configuration 中配置

2.1.3 setActiveProfiles()參數是數組,可以設置多個

setActiveProfiles()參數是數組,可以設置多個,如下:

至此,對于 env 的 profiles 的講解完成。

2.2 env 的 properties:存放屬性的環境或文件信息 @Value(“{xxx}”)

2.2.1 用@Value取出普通配置

新建一個UserController類,打印出application.properties配置文件中的env屬性即可,如下:

application.properties配置文件中的env屬性為“hello world”,配置如下:

運行成功,取出來了,如下:

所以,我們看到,properties存放屬性的環境或文件信息。

2.2.2 用@Value取出系統配置,如java.version

實際上,@Value注解還可以訪問到系統環境變量的信息,如java.version,取出當前jdk版本,試一試:

看,打印出來了。

2.2.3 用Environment實例bean取出系統配置,如java.version

我們用@Autowired取出spring ioc容器中的Environment實例bean,然后直接用Environment實例bean(不用@Value)來取,如下:

取出spring ioc容器中的實例bean有兩種方式,getBean方法 或 @Autowired注解。


看,也打印出來了。

2.2.4 為什么可以用Environment實例bean取出java.version這種系統配置

那問題來了,為什么可以用Environment取出java.version這種系統配置呢?一起來看看Spring中的Environment接口,如下:


理由很簡單,因為Environment實例bean已經在ioc容器中了,所以要取出系統配置java.version很簡單,因為這個系統配置java.version就是寫在Environment的實例bean里面的。

其他的,如BeanFactory、ApplicationContext實例bean也是在ioc容器里的,還實現了Environment接口,如下:

其實,作為Spring容器的內置接口,Environment中的配置有很多來源:系統的環境變量(如上面提到的java.version)、系統變量 System.propreties等。

大體上來說,Environment中的配置來源大體包括兩大類:系統屬性源 + springboot屬性源,如下:

這個圖很重要,本文接下來就講這個圖,講Environment是如何處理 “系統屬性源” 和 “springboot屬性源” 的。

金手指:springboot啟動類自動掃描所在包及其子包下spring+springmvc注解,但是不會掃描ibatis的@Mapper注解

三、Spring Environment源碼解析

先找到Environment接口

3.1 從run()方法開始

找打springboot工程的run方法,如下:

不斷ctrl+左鍵,進入到真正有意義的run方法中,如下:

在這個真正有意義的run方法中,使用prepareEnvironment方法得到一個env實例,然后將這個實例設置到context中去,如下:

金手指:源碼中,spring或springboot初始化加載時,env 在 context 之前,合乎常理。這里看的springboot的源碼,其實spring的源碼也一樣。

選擇prepareEnvironment方法

進入prepareEnvironment方法,先使用getOrCreateEnvironment方法新建或獲得一個環境變量,然后將這個env實例放到configureEnvironment方法中去完成相關配置,最后通過listeners.environmentPrepared方法,將env實例交給監聽事件,如下:

接下來看一下SpringApplication類prepareEnvironment()方法的三個子方法。

3.2 第一子方法:新建或獲取環境getOrCreateEnvironment()方法

可以看到,如果類變量env不為null,就直接返回,如果為null,就根據類變量webApplicationType的實例類型,new一個Env實現類實例返回。

所以說,getOrCreateEnvironment()方法中涉及三個類:StandardEnvironment StandardServletEnvironment StandardReactiveWebEnvironment,這三個類都繼承AbstractEnvironment,AbstractEnvironment又繼承于Environment接口,關系如下:

先看AbstractEnvironment類

3.2.1 AbstractEnvironment類

在AbstractEnvironment的構造方法中,調用一個自定義屬性源的方法,如下:

這個自定義屬性源的方法,在AbstractEnvironment中是空實現,只能看它的子類了。

值得注意的是,對于AbstractEnvironment構造函數,

public AbstractEnvironment() {customizePropertySources(this.propertySources); }

這是一個很優美的設計,可以將customizePropertySources的實現交給子類的處理,是模板模式。

AbstractEnvironment類就到這里的,我們看其子類StandardEnvironment類。

3.2.2 StandardEnvironment類

既然AbstractEnvironment類的customizePropertySources()是空實現,看看其子類StandardEnvironment類。

StandardEnvironment類只有一個customizePropertySources方法實現,也看完了,且看StandardServletEnvironment類。

3.2.3 StandardServletEnvironment類

直接轉到customizePropertySources方法實現,如下:

關于customizePropertySources()方法,customizePropertySources()接收可變參數源作為輸入。

該方法在AbstractEnvironment類中為空實現,在StandardEnvironment類中為將系統配置和系統環境變量放到env中,在StandardServletEnvironment類中為servlet配置屬性、servlet上下文屬性、JNDI屬性,并調用StandardEnvironment的customizePropertySources()方法,所以同時有了servlet配置屬性、servlet上下文屬性、JNDI屬性、系統配置和系統環境變量五種屬性。

源碼設計的優美之處1:StandardServletEnvironment類中的customizePropertySources()方法調用了StandardEnvironment的customizePropertySources()方法,因為是它里面將系統配置和系統環境變量放到env中;StandardEnvironment的customizePropertySources()方法沒有調用AbstractEnvironment的customizePropertySources()方法,因為是它里面將里面方法體為空,不需要調用;這體現了源碼的優美。

源碼設計優美之處2:

public AbstractEnvironment() {customizePropertySources(this.propertySources); }

AbstractEnvironment類的構造方法中調用customizePropertySources(),以后customizePropertySources()一層層被重寫,反正調用最后子類的,具體環境生產具體對象,這體現了源碼設計優美。

3.2.4 MutablePropertySources類

customizePropertySources()接收可變參數源作為輸入,實際上就是一個MutablePropertySources類對象,讓我們來看一下這個MutablePropertySources類,其定義如下:


讓我們看看StandardServletEnvironment添加的三個屬性是什么


在我們使用spring+springmvc的時候,需要配置一個web.xml,web.xml里面需要配置兩個標簽< context-params>< /context-params>和< init-params>< /init-params>,當時我們只是這樣這樣使用,實際上,web.xml中這兩個標簽作為屬性配置到env里面去了。

public static final String SERVLET_CONTEXT_PROPERTY_SOURCE_NAME = “servletContextInitParams”; 就是 < context-params>< /context-params>
public static final String SERVLET_CONFIG_PROPERTY_SOURCE_NAME = “servletConfigInitParams”; 就是 < init-params>< /init-params>

我們知道,StandardEnvironment:系統變量+系統環境變量

/** System environment property source name: {@value}. */ public static final String SYSTEM_ENVIRONMENT_PROPERTY_SOURCE_NAME = "systemEnvironment";/** JVM system properties property source name: {@value}. */ public static final String SYSTEM_PROPERTIES_PROPERTY_SOURCE_NAME = "systemProperties";

上面,前者表示系統環境變量,所以我們剛才使用@Value(“${java.version}”)訪問到了系統環境變量,后者表示系統屬性。

我們現在完善圖,一圖小結源碼結構:

最后一個問題,配置順序,優先級如何確定?

回答:不管是StandardEnvironment類和還是StandardServletEnvironment類,都是使用addLast添加屬性的,所有屬性的順序就是源代碼從上到下。


好了,ConfigurableEnvironment environment = getOrCreateEnvironment(); 這行代碼完了,回到SpringApplication類,看configureEnvironment(environment, applicationArguments.getSourceArgs());這行代碼。

3.3 第二子方法:準備環境configureEnvironment()

3.3.1 SpringApplication類中的configureEnvironment()

configureEnvironment()是在新建/獲取env實例后執行的,如下:

在configureEnvironment()方法中,第一個實參就是ConfigurableEnvironment類對象,就是env對象,剛剛看過了,第二個參數是一個DefaultApplicationArguments類對象.getSourceArgs(),它是在源碼中new出來的,如下(簡答了解就好,只要知道命令行參數也是可以被識別的就好):

進入到重點,看到configureEnvironment方法,如下:

類變量addConversionService 默認為true,

private boolean addConversionService = true;

它表示統一類型轉換,當其為true,執行if代碼塊,得到一個conversionService,并設置到Spring框架的env中去。

接著往下看,可以看到,configureEnvironment方法先后執行了兩個方法,就是 configurePropertySources(environment, args); 和 configureProfiles(environment, args); ,就是整個spring應用運行的環境信息:profiles + properties,就是在這兩個方法里面解析出來的。

3.3.2 解析properties屬性:SpringApplication類的configurePropertySources()

看到configurePropertySources()方法,這個方法解析開發者配置的所有properties屬性。

先獲得env實例中的屬性源,如果默認屬性不為空,將其添加到sources中,addLast就是在list末尾添加,如果啟動的時候,命令行中也傳入了參數,也添加進來,沒傳入也沒關系。

小結,繼續更新env圖

env中添加命令行參數很好懂,但是默認參數defaultproperties是什么?從哪里來的?先看這個defaultproperties的定義,它在SpringApplication類中,默認是一個map結構,定義如下:


值得注意的是,這個defaultproperties僅僅在springboot才有的,spring是沒有的。

關于這個defaultproperties,可以自己設置 setDefautProperties,嘗試一下,如下面springboot啟動類中。

運行啟動起來,看,在源碼中斷點,真的走到了這個地方,取出defaultProperties變量,看到自己手動添加的屬性。


好了,configurePropertySources()方法完成了,下面看configureProfiles()方法。

3.3.3 SpringApplication類的configureProfiles()

先打開configureProfiles()的源碼,看到就是根據類變量additionalProfiles新建一個LinkedHashSet,然后將env變量中的profiles屬性都放到這個新建的set中,最后將這個set變為字符串又放到env中去。

好了,我們進入到setActiveProfiles()方法,如下:

setActiveProfiles()設置env中的profile


關于configureProfiles方法,看起來好像沒什么意義?將env中的profiles放到set中,然后又將set放到env中。

但是,請注意,這里這個AbstractEnvironment類中的setActiveProfiles()方法接收String類型可變數組,同時將字符串類型的profile放到一個Set類型的集合activeProfiles中,因為set集合,可以配置多個,但是不能字符串重名。

實際上,這個方法我們一開始就用到,在env中設置profile,接受一個數組,包含兩個字符串 “prd” 和 “env” ,保證既是數組又不重名。

其實,在application.properties文件中設置和在Run/Debug Configurations中設置都是一個道理,底層都是調用這個方法setActiveProfiles()。

3.4 第三子方法:開始加載springboot的配置listeners.environmentPrepared(environment)

3.4.1 listeners.environmentPrepared(environment)

這里就是一個監聽邏輯了,復習一下,在Spring中,通用的監聽邏輯是:自定義一個事件類,事件發布者發布一個自定義事件,時間接受者listener接收自定義事件及其子類事件。

進入listeners.environmentPrepared(environment);

再進入environmentPrepared方法,如下:
看一下廣播事件的具體邏輯,如下:

再進去invokeListener方法,如下:

這個listener.onApplicationContext(event)就是表示監聽者監聽到事件觸發后要完成的相應邏輯。

好了,我們重溫一下這個調用關系,如下:

好了,我們來看看這個listener監聽到事件發生后的具體操作,進入onApplicationEvent方法,但是這種方法有很多個,如下:

任意找一個,這里找ConfigFileApplicationListener類,可以看到對于通過event類型,執行了不同操作,如下:

對于onApplicationEvent的第二個方法onApplicationPreparedEvent,如下:

EnvironmentPostProcessor有很多實現類,如下:

找到幾個EnvironmentPostProcessor的實現類,這里選擇SpringApplicationJsonEnvironmentPostProcessor類,這個類中,實現了兩個接口,EnvironmentPostProcessor接口是擴展,Ordered接口是排序,如下:

3.4.2 onApplicationEnvironmentPreparedEvent()

關于onApplicationEvent的第一個方法onApplicationEnvironmentPreparedEvent()方法,如下:

再次進入到postProcessEnvironment方法,如下:

好了,整理一下調用關系,如下:

繼續進入到addPropertySources方法,如下:

我們注意到,在ConfigFileApplicationListener類中,里面有三個重要的類變量,DEFAULT_PROPERTIES默認屬性,DEFAULT_SEARCH_LOCATIONS默認掃描位置(開發者的文件應該存放的路徑位置),DEFAULT_NAMES默認名稱(開發者的文件的默認名稱),如下:

在addPropertySources方法中,三步走,先添加,然后新建一個Loader,最后執行load方法,如下:

第一步,先添加,進入RandomValuePropertySource.addToEnvironment方法,如下:

RandomValuePropertySource類

我們先來認識一下這個RandomValuePropertySource類,類上的注釋就告訴我們怎么配置,如下:

類中有兩個常量,默認隨機屬性名稱為random,前綴為random.,如下:

getProperty方法:當實參name前綴不為random.,直接返回為null;當實參name的前綴為random.,調用getRandomValue方法返回一個隨機值。

getRandomValue方法:根據實參name取前綴長度的字符串匹配,返回具體的隨機值,


好了,我們按照RandomValuePropertySource類的配置,自動動手試一試,配置一個name為randomLong,值為random.long,底層是由RandomValuePropertySource類的getRandomValue方法生成的,配置如下:

主代碼中通過@Value或者Environment的bean實例取出屬性值,這里使用Environment的bean實例,如下:

運行,真的取出來了

刷新一次又變了,每一次都會生成一個隨機long,哈哈


好了,玩夠了,回到ConfigFileApplicationListener類的addPropertySources方法:添加,新建Loader,執行load方法。

進入到addToEnvironment()方法,這里的addAfter就是在后面添加隨機屬性。

env如圖:

回到ConfigFileApplicationListener類,查看new Loader(environment, resourceLoader).load();

Loader是資源文件加載器


這個Loader類的構造方法就是設置四個類屬性,如下:

看到第四句,如下:

this.propertySourceLoaders = SpringFactoriesLoader.loadFactories(PropertySourceLoader.class,getClass().getClassLoader());

先看到這個SpringFactoriesLoader.loadFactories方法,這個方法就是加載spring.factories配置文件中的數據,

再看PropertySourceLoader接口本身,這個接口僅包含兩個方法,獲取文件后綴名方法和加載方法。

看到load方法

進入FilteredPropertySource.apply()方法,如下:

FilteredPropertySource.javastatic void apply(ConfigurableEnvironment environment, String propertySourceName, Set<String> filteredProperties,Consumer<PropertySource<?>> operation) {// 取出env實例bean中的屬性源,放到可變屬性源propertySources中MutablePropertySources propertySources = environment.getPropertySources(); // 在可變屬性源propertySources中,取得指定propertySourceNamePropertySource<?> original = propertySources.get(propertySourceName);if (original == null) {operation.accept(null); // 如果取出為null,執行operation.acceptreturn;}// 如果取出不為null,即當前存在propertySourceName,新建一個過濾屬性源替換當前的propertySourceNamepropertySources.replace(propertySourceName, new FilteredPropertySource(original, filteredProperties));try {operation.accept(original);}finally {propertySources.replace(propertySourceName, original);} }



回到load方法,看到initializeProfiles方法

進入到initializeProfiles方法,該方法初始化profiles屬性,邏輯如下:


進入到getOtherActiveProfiles方法,如下:

經歷了Loader構造函數,有了Loader對象,看一下load方法,如下:


在進入load方法,如下:


debug執行,如下:


進入到loadForFileExtension方法,如下:




四、尾聲

Spring Environment全解析,完成了。

天天打碼,天天進步!!

總結

以上是生活随笔為你收集整理的Spring Environment全解析的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。

久久激情五月丁香伊人 | av久久久| 在线观看午夜 | 中文字幕 国产视频 | 久久精品96 | 欧美精品久久久 | 国内精品视频免费 | 国产特级毛片aaaaaa高清 | av片中文| 国产最顶级的黄色片在线免费观看 | 国产精品99久久免费黑人 | 97精品国产97久久久久久 | 2022久久国产露脸精品国产 | 91精品秘密在线观看 | 狠狠色丁香婷婷综合久小说久 | sesese图片 | 中文字幕国产一区 | 国产成人精品a | av一级在线 | 中日韩在线 | www.五月天色 | 亚洲国产精品人久久电影 | 久久久电影网站 | 日韩成年视频 | av免费电影网站 | 麻豆一二 | 欧美激情视频一区 | 免费观看性生活大片3 | 日韩国产精品久久久久久亚洲 | 国产九色视频在线观看 | 91亚洲精品在线 | 黄网站免费大全入口 | 黄色一级在线免费观看 | 中文字幕第一页在线vr | 国产精品五月天 | 国产黄色片久久久 | 久久乐九色婷婷综合色狠狠182 | 爱爱av在线| 五月天激情综合网 | 亚洲视频免费在线看 | 97香蕉超级碰碰久久免费软件 | 日本中文乱码卡一卡二新区 | av中文在线播放 | 一二三区高清 | 91.dizhi永久地址最新 | 夜夜爽88888免费视频4848 | 久久开心激情 | 免费观看完整版无人区 | 成人免费视频播放 | 国产高清免费视频 | 国产激情小视频在线观看 | 久久超碰97 | 中文字幕之中文字幕 | 欧美亚洲一区二区在线 | 日本三级久久久 | 国产精品第一视频 | 亚洲最大成人免费网站 | 国产一区二区在线免费观看 | 免费在线日韩 | 成人永久免费 | 亚洲国产三级 | a黄色一级片 | 国产午夜三级一二三区 | 国产精品日韩久久久久 | 最新久久久| 久久国产欧美日韩 | 99久久日韩精品视频免费在线观看 | 日韩成人精品一区二区 | 欧美精品v国产精品v日韩精品 | 丁香在线视频 | 国产破处在线视频 | 亚洲情婷婷 | 91精品久久久久久久久久久久久 | 一区二区欧美在线观看 | 国产精品 国产精品 | 少妇精品久久久一区二区免费 | 99精品免费在线观看 | 91视频 - x99av| 久久黄色免费观看 | 成年人免费看片 | 91麻豆精品国产91 | 国产一区在线视频观看 | 精品国产伦一区二区三区 | 国产精品专区一 | 91麻豆精品国产自产 | 日本久久综合网 | 成人性生交视频 | 中日韩欧美精彩视频 | 奇米影视777影音先锋 | 九色自拍视频 | 成人影音av | 中文字幕在线一区二区三区 | 国产在线探花 | 国产综合小视频 | 国产91学生粉嫩喷水 | 精品亚洲国产视频 | av资源在线看| 亚洲天堂网在线视频 | 午夜国产福利视频 | 色中文字幕在线观看 | 亚洲国产经典视频 | 国产小视频免费在线网址 | 精品国产成人在线 | 国产福利91精品一区 | 不卡国产视频 | 国产一区在线视频播放 | 黄视频网站大全 | 日韩一区在线免费观看 | 国产尤物一区二区三区 | 免费看片成年人 | 久久精视频 | 97在线观看免费高清 | 98精品国产自产在线观看 | 精品国产成人在线影院 | 国产一区欧美日韩 | 成人免费一区二区三区在线观看 | 精品久久久久久久久久久久久久久久 | 欧美在线久久 | 在线观看色网站 | 91九色成人 | 国产精品乱码久久 | 伊色综合久久之综合久久 | 午夜视频亚洲 | 久久精品久久久精品美女 | 九色精品在线 | 国产一级黄色免费看 | 国产精品美女久久久 | 久久久99久久 | 国产精品 美女 | 免费一级片在线 | 久久99亚洲精品 | 精品亚洲免费 | 久久久久国产精品免费网站 | 国产精品麻豆免费版 | 久草免费资源 | 中文区中文字幕免费看 | 日本在线观看中文字幕 | 成人国产综合 | 久久婷婷一区 | 免费视频99 | 婷婷在线色 | 456免费视频 | 日本视频高清 | 99久久精品久久久久久动态片 | 香蕉日日 | 日韩欧美一级二级 | 午夜精品久久久久久久久久 | 日韩精品视频在线观看免费 | 亚洲在线免费视频 | 在线中文字幕播放 | 精产嫩模国品一二三区 | 96精品视频 | 久久精品国产v日韩v亚洲 | 国产精品高潮久久av | 中文字幕电影网 | 999男人的天堂 | 美女网站免费福利视频 | 亚洲香蕉视频 | 激情综合六月 | 精品女同一区二区三区在线观看 | 中文综合在线 | 免费一级特黄毛大片 | 免费热情视频 | 999抗病毒口服液 | 天天操天天干天天干 | 狠狠干网址 | 国产精品久久久一区二区三区网站 | 97成人精品视频在线观看 | 人人舔人人插 | 深夜免费小视频 | 极品美女被弄高潮视频网站 | 色的网站在线观看 | 亚洲少妇xxxx | 色噜噜日韩精品欧美一区二区 | 国产人成在线视频 | 99婷婷狠狠成为人免费视频 | 麻豆系列在线观看 | 国产精品久久久久久69 | 伊人国产在线观看 | 国产不卡视频在线播放 | 麻豆va一区二区三区久久浪 | 日韩区欠美精品av视频 | 午夜色站| 国产视频一区二区三区在线 | 国产一级片免费观看 | 精品久久久久久一区二区里番 | 日本久久久久久 | 一级一级一片免费 | 日本护士三级少妇三级999 | 精品国产乱子伦一区二区 | 麻豆传媒视频在线免费观看 | 91中文在线视频 | 久久精品91久久久久久再现 | 中文字幕亚洲在线观看 | www.av免费| 在线亚洲午夜片av大片 | 日韩精品一区二区三区免费观看视频 | 黄色资源在线 | 亚洲欧美日韩国产一区二区 | 久久久久久久久亚洲精品 | 91中文在线视频 | 成人av地址 | 中文字幕精品一区二区三区电影 | 中文字幕在线资源 | 国产成人精品999在线观看 | 免费h精品视频在线播放 | 久久久99久久 | 久久久精品免费观看 | 美女视频黄的免费的 | 久久综合网色—综合色88 | av中文国产 | 久久久这里有精品 | 成人免费在线电影 | 国产黄大片| 国产人成精品一区二区三 | 国产精品视频一二三 | 国产精品久久久久久久免费大片 | 7777xxxx| 最新av在线免费观看 | 欧美大荫蒂xxx | 日日夜夜精品免费 | 久久午夜网 | 在线精品播放 | 中文字幕在线观看一区二区 | 中文字幕精品www乱入免费视频 | 日韩特级片 | 成人污视频在线观看 | 日日夜夜精品免费 | 日韩高清在线一区二区 | 国产精品美女久久久久久免费 | 成人精品一区二区三区电影免费 | 99视频这里有精品 | 九九久久久久99精品 | 国产精品入口久久 | 亚洲国产精品免费 | 91热视频 | 国产精品毛片久久久久久 | 中文字幕黄色 | 国产在线观看免费观看 | 中文字幕在线观看三区 | 91精品国产一区二区三区 | 国内精品在线看 | 91精品一区二区在线观看 | 久久色在线播放 | 色综合久久久网 | 欧美激情综合网 | 精品一区二区久久久久久久网站 | av黄色成人 | 久久久网址 | 久久久国际精品 | 九九免费观看全部免费视频 | 午夜久久影视 | 欧美专区国产专区 | 亚洲综合视频在线观看 | 在线中文字母电影观看 | 91av蜜桃 | 亚洲狠狠操 | 在线天堂亚洲 | 亚洲精品久久久久久久蜜桃 | 97视频在线 | 天天综合操 | 99se视频在线观看 | 日韩欧美视频在线播放 | 国产1区2区 | 91在线公开视频 | 国产伦理剧 | 西西444www| 婷婷爱五月天 | 8x成人免费视频 | 91精品久久久久久 | 国产精品久久久精品 | 九九热国产 | 91传媒激情理伦片 | 日韩免费视频线观看 | 日韩和的一区二在线 | 日韩欧美在线免费 | 久亚洲精品 | 麻豆影视在线观看 | 日韩在线国产精品 | 在线观看亚洲精品 | 欧美国产视频在线 | 亚洲精品色婷婷 | 激情视频免费在线 | 久久久精品一区二区 | 欧美少妇bbwhd| 韩国精品视频在线观看 | www.av免费 | 日操干| 国产精品淫 | 大胆欧美gogo免费视频一二区 | 久久国产a| 色播五月激情综合网 | 亚洲精品日韩一区二区电影 | 69亚洲视频 | 天天激情综合网 | 日本中文在线播放 | 毛片久久久 | 中文字幕二区在线观看 | 女人18片毛片90分钟 | av经典在线 | 欧美国产不卡 | sm免费xx网站 | 日本午夜在线亚洲.国产 | 九九99| 色婷婷国产精品 | 91爱爱中文字幕 | 97超碰色偷偷 | 99久久日韩精品视频免费在线观看 | 91色在线观看视频 | 成人h在线观看 | 日本精品视频一区 | 久一久久| 日韩3区 | 丁香婷婷色月天 | 欧美三级在线播放 | 在线观看韩日电影免费 | 日韩一区二区三区免费视频 | 激情久久综合 | 伊人五月婷 | 国产精品系列在线 | 国产精品精品久久久久久 | 国产在线精品一区二区不卡了 | 色婷婷亚洲综合 | 国产又粗又猛又爽又黄的视频先 | 精品免费久久久久 | 一区二区精品在线 | 91亚洲精品久久久蜜桃 | 在线观看黄污 | 一区二区中文字幕在线播放 | 伊人春色电影网 | 欧美国产三区 | 成人一级片免费看 | 五月婷婷黄色网 | 久久线视频| 国产午夜精品av一区二区 | 96亚洲精品久久 | 视频91在线 | 在线免费观看国产视频 | 久久久久国产一区二区 | 国产精品精品视频 | 国产特级毛片aaaaaa毛片 | 日本99干网 | 婷婷久久久 | 久久久精品国产一区二区电影四季 | 91精品在线免费视频 | 欧美日韩视频精品 | 日韩丝袜视频 | 国产自在线观看 | 日本黄色大片儿 | 亚洲国产精品视频 | 国产成人99av超碰超爽 | 国产精品久久久久久久久毛片 | 久久精品99国产 | 国产成人综合图片 | 国产精品女人网站 | 久久综合给合久久狠狠色 | 久久久国产精品麻豆 | 在线精品一区二区 | 久久久久久久av | 亚洲精品在线观 | 日韩欧美第二页 | 国产视频久久久久 | 91麻豆视频| 国产日韩中文字幕在线 | 久草亚洲视频 | 亚洲永久av | 国产成人精品一区二区三区福利 | 婷婷去俺也去六月色 | 国产亚洲精品精品精品 | 欧美日本啪啪无遮挡网站 | 色婷婷导航 | 美女精品在线 | 国产视频一 | 在线观看免费高清视频大全追剧 | www黄色com| 黄色片网站av | 2021国产视频| 五月婷婷中文网 | 色综合久久精品 | 国产黄免费看 | 国产黄在线看 | 人人看人人 | 免费在线观看视频一区 | 亚洲一区 av | 婷久久 | 天天爽网站 | 亚洲精品玖玖玖av在线看 | 91免费高清视频 | 人人cao| 欧美成人在线免费 | 91.dizhi永久地址最新 | 婷婷亚洲综合 | 久久综合精品一区 | 亚洲欧洲久久久 | 久久视频免费 | 久久精品视频在线免费观看 | 在线播放一区二区三区 | av一区二区在线观看中文字幕 | 99久久精品国产一区二区三区 | 国内小视频在线观看 | 黄色影院在线免费观看 | 欧美日韩精品在线一区二区 | 亚洲经典视频 | 欧美精品中文字幕亚洲专区 | 黄色aa久久| av在线播放不卡 | 中文字幕免费中文 | 欧美大片大全 | 天天操天天操天天操天天操 | 国外调教视频网站 | 欧美在线视频一区二区三区 | 久久久91精品国产一区二区三区 | 超碰人人99| 国产精品免费观看国产网曝瓜 | 91视频在线播放视频 | 国产精品视频地址 | 欧美一区日韩一区 | 黄色片视频免费 | 六月久久婷婷 | 香蕉视频91 | 久久久久免费精品国产小说色大师 | 国产专区免费 | 色香com.| 欧美一区二区在线免费看 | 欧美另类xxx | 久久不射网站 | av电影免费看 | 97麻豆视频| 蜜桃视频成人在线观看 | 日韩一区二区三 | 天天草天天操 | 狠狠色丁香婷婷综合视频 | 国产高清在线免费视频 | 超碰97成人 | 最近中文字幕完整视频高清1 | 国产午夜激情视频 | 色网址99| 91看片淫黄大片91 | 最近日本字幕mv免费观看在线 | 欧美日韩二区在线 | 99精品久久99久久久久 | 精品久久综合 | 久久天堂网站 | 久久免费视频国产 | 欧美另类z0zx | 天堂av观看| 免费在线观看国产黄 | 亚洲蜜桃av| 69xx视频| 日韩在线中文字幕 | 欧美性性网 | www.久久久精品 | 国产成人综合精品 | 久久激情五月婷婷 | 天天摸天天干天天操天天射 | 久久精品99精品国产香蕉 | 国产二区视频在线 | 在线观看岛国av | 久久久免费毛片 | 欧美性网站 | 久久精品导航 | 亚洲小视频在线观看 | 国产一二区精品 | 一级欧美日韩 | 亚洲蜜桃av | 日韩三区在线观看 | 天天曰天天曰 | mm1313亚洲精品国产 | 久久综合五月天婷婷伊人 | 国产精品久久久久久久久婷婷 | 国产亚洲免费的视频看 | 日韩国产精品一区 | 免费麻豆视频 | 日韩av手机在线观看 | 狠狠色丁香久久综合网 | 国产一级一片免费播放放a 一区二区三区国产欧美 | 综合精品久久 | 久久精品观看 | 国产视频欧美视频 | 最近中文字幕完整高清 | 天天干天天碰 | 激情av在线资源 | 欧美一级大片在线观看 | 最近更新中文字幕 | 国产一级大片在线观看 | www.888av| 久久国产一区 | 日韩综合一区二区 | 久久高清视频免费 | av丝袜在线 | 久久国语露脸国产精品电影 | 欧美激情综合五月色丁香 | 91理论片午午伦夜理片久久 | 亚洲色图 校园春色 | 美女黄视频免费 | 天堂av官网 | 欧美视屏一区二区 | 日韩免费观看高清 | 国产一级片毛片 | av在线等| 伊人永久| 亚洲视频免费视频 | 国产精品毛片一区二区三区 | 久久久久视 | 婷婷亚洲五月色综合 | 国产中文字幕久久 | 五月婷婷影院 | 免费日韩 精品中文字幕视频在线 | 中文字幕一区二区在线播放 | 狠狠干天天射 | 亚洲综合一区二区精品导航 | 国产日韩在线观看一区 | 中文字幕在线看片 | 中文字幕在线免费看线人 | 欧美精品资源 | 欧美成人一区二区 | 久久久久国产a免费观看rela | 久久久久免费观看 | 国产视频2 | 欧美亚洲一区二区在线 | 欧美大荫蒂xxx | 91精品啪在线观看国产81旧版 | 国产麻豆视频网站 | 激情伊人五月天 | 黄www在线观看 | 欧美国产日韩激情 | 网站免费黄色 | 人人爽人人澡人人添人人人人 | 干干夜夜 | 国产精品久久久久久久久久久久午夜 | 91色国产在线 | 欧美精品v国产精品 | 怡红院av久久久久久久 | 色视频在线看 | 插插插色综合 | 久久久久99999 | 久久夜色精品亚洲噜噜国4 午夜视频在线观看欧美 | 国产福利一区二区三区视频 | 国产在线观看a | 在线免费中文字幕 | 国产黄色片久久久 | 国产做a爱一级久久 | 久久久www成人免费毛片 | 久久久综合 | 欧美日韩视频网站 | 91超在线| 开心色插| 免费看亚洲毛片 | 国产精品久久久久999 | 日韩在线字幕 | 午夜精品一区二区国产 | 国产h在线观看 | 在线国产专区 | 在线成人看片 | 500部大龄熟乱视频使用方法 | 亚洲精品国偷拍自产在线观看蜜桃 | 天天操天天干天天操天天干 | 有没有在线观看av | 美女久久久久久久久久久 | 最近中文字幕免费大全 | 久久国产欧美日韩精品 | 国产一级免费片 | 婷婷色中文 | 久久免费视频观看 | 欧美三人交 | 国产黄在线播放 | 国产成人三级三级三级97 | 欧美性免费 | 日韩精品一区二区三区免费观看视频 | 天天综合网久久综合网 | 欧美日韩一二三四区 | 久久一级电影 | 精品中文字幕在线观看 | 国产精品 日韩 欧美 | 久久久国产精品成人免费 | 国产福利a | 日韩免费福利 | 色久av | 免费观看av | 91桃色在线免费观看 | 在线免费三级 | 免费看的黄网站软件 | 97高清视频| 国产精品不卡在线 | 色综合久久中文综合久久牛 | 91专区在线观看 | 91福利社在线观看 | 欧美与欧洲交xxxx免费观看 | 国产精品永久在线 | 亚洲高清91 | 中文字幕 在线看 | 亚洲三级网 | 国产高清精品在线观看 | 亚洲国产精品资源 | 国产黄视频在线观看 | 人人超在线公开视频 | 一区二区三区免费在线播放 | 国产在线播放一区二区三区 | 亚洲成a人片综合在线 | 久草网视频在线观看 | 免费视频一区二区 | 亚洲经典视频在线观看 | 国产成人亚洲在线观看 | 九九视频免费在线观看 | 青青草华人在线视频 | 在线观看日韩精品 | 中国美女一级看片 | 五月天网站在线 | 国产三级视频在线 | 亚洲精品资源在线观看 | 国产伦精品一区二区三区高清 | 在线日韩一区 | 国产又粗又猛又色又黄网站 | 日本中文字幕在线观看 | 中文字幕视频一区二区 | 国产亚洲精品久久久久秋 | 最新国产中文字幕 | 亚洲国产中文字幕在线视频综合 | 欧美另类调教 | 精品国产aⅴ一区二区三区 在线直播av | 国产精品成人一区二区 | 午夜精品一区二区三区在线视频 | 美女亚洲精品 | 日韩在线理论 | 日韩av高清 | av在线激情 | 69久久久 | 成人欧美亚洲 | 午夜av在线电影 | 极品久久久 | 91人人网 | 色亚洲网| 天天干干 | 国产字幕在线观看 | 亚洲综合激情 | 中文字幕在线视频网站 | 久久久视频在线 | 国产一区在线视频 | 黄色一级大片在线免费看产 | 国产精品99久久久久久宅男 | 亚洲国产日韩在线 | 91精品办公室少妇高潮对白 | 亚洲免费精品视频 | 亚洲欧洲精品一区二区 | 2024av| 亚洲精品国久久99热 | 婷婷激情站 | 在线 视频 一区二区 | www.五月激情.com | 日韩黄色软件 | 18国产精品白浆在线观看免费 | 成人精品一区二区三区中文字幕 | 成人小电影在线看 | 中文国产在线观看 | 中文国产字幕在线观看 | 日韩免费在线 | 亚洲女欲精品久久久久久久18 | 国产免费三级在线观看 | 丁香激情网 | 久久美女高清视频 | 激情丁香综合五月 | 欧美在线视频一区二区三区 | 国内精品视频在线 | 色婷婷成人网 | 九色精品免费永久在线 | 人人人爽| 夜夜视频资源 | 久草网在线视频 | 国产成人精品久久亚洲高清不卡 | 2018精品视频 | 亚洲精品大片www | 日韩超碰在线 | 中文字幕一区二区在线观看 | 免费观看第二部31集 | 久草免费在线观看 | 久久亚洲综合国产精品99麻豆的功能介绍 | 国产麻豆精品久久 | 91色国产| 国产中文字幕视频在线观看 | 福利区在线观看 | 成人午夜毛片 | 人人舔人人插 | 国产精品免费一区二区三区在线观看 | 国产黄a三级三级 | 亚洲国产成人精品在线 | 99视频在线免费看 | 超碰国产97 | 亚洲国产手机在线 | 久久五月情影视 | 久久视频在线观看免费 | 亚洲国产成人久久 | 啪啪动态视频 | 国产欧美在线一区 | 日韩va欧美va亚洲va久久 | 丁香花在线观看免费完整版视频 | 成人免费观看在线视频 | 色婷婷精品 | 午夜av激情| 久久资源在线 | 在线播放视频一区 | 999久久久久久久久 69av视频在线观看 | 日韩欧美视频免费看 | 国产免费午夜 | 国产亚洲一区二区在线观看 | 国产一区二区日本 | 一区二区久久 | 亚洲婷婷综合色高清在线 | 久久久99精品免费观看乱色 | 日韩高清免费电影 | 成人国产亚洲 | 狠狠操狠狠插 | 香蕉视频91 | 曰本免费av | 欧美在线视频一区二区 | 色婷婷久久久 | 久久久久久蜜av免费网站 | 国产亚洲精品美女久久 | 日韩理论电影在线观看 | 在线免费高清 | 国产日韩欧美在线看 | 在线视频 成人 | 狠狠躁夜夜躁人人爽超碰91 | 欧美精品一区二区免费 | 国产一级二级在线播放 | 色婷婷视频网 | 国产精品久久99综合免费观看尤物 | 国产欧美精品一区二区三区 | 国产在线观看,日本 | 999成人国产 | 天天操天天干天天摸 | 17婷婷久久www | 欧美成人精品欧美一级乱 | 黄色影院在线免费观看 | 激情综合网五月激情 | 在线观看亚洲精品 | 国产一级视屏 | 久久这里 | 蜜臀精品久久久久久蜜臀 | 天天干天天摸 | 麻豆视频在线看 | 欧美成人视 | 欧美国产日韩激情 | 国产香蕉久久精品综合网 | 久久九九网站 | 日韩二级毛片 | 国产成人av综合色 | 狠狠躁18三区二区一区ai明星 | 久久伊人热 | 欧美激情第一区 | 97国产在线视频 | 久草在线视频国产 | 国产色视频一区二区三区qq号 | 亚洲久草在线视频 | 久久综合九色九九 | 久久av网址 | 日本久久免费电影 | 丁香六月久久综合狠狠色 | 91免费视频黄 | 人人舔人人爱 | 亚洲91av| 久久精品一区二区 | www国产精品com | 国产精品日韩欧美一区二区 | 久久深夜 | 色综合天天综合在线视频 | 欧美日韩91 | 在线影院av | 中文字幕成人在线观看 | 日本在线观看视频一区 | 91超碰免费在线 | 91视频下载| 欧美另类激情 | 天天综合网国产 | 色在线亚洲 | 亚洲一区二区视频在线 | 91九色在线观看 | 最新av网址在线观看 | 日本深夜福利视频 | 综合久久综合久久 | 国产99久 | 韩国精品福利一区二区三区 | 人人艹视频| 天天想夜夜操 | 久久成人视屏 | 97国产情侣爱久久免费观看 | 日韩高清一二区 | 一区二区三区四区五区在线 | 国产精品99蜜臀久久不卡二区 | 九九视频网站 | 亚洲最新视频在线播放 | 99精品国产兔费观看久久99 | 一区二区三区日韩在线 | 国产精品18p | 欧美日韩另类在线 | 免费看污网站 | 欧美一区免费在线观看 | 中文字幕在线观看你懂的 | 99av国产精品欲麻豆 | 久久久久国产精品视频 | 中文在线字幕免费观看 | 国产精品青草综合久久久久99 | 久久情爱| 国内精品亚洲 | a视频在线播放 | 一级a性色生活片久久毛片波多野 | 亚洲 欧美 变态 国产 另类 | 在线观看黄a | 十八岁免进欧美 | 日韩欧美电影在线 | 中文字幕乱视频 | 操操操操网 | 日日干天天爽 | 国产成人久久77777精品 | 国产91精品高清一区二区三区 | 免费精品 | 国产成人99av超碰超爽 | 国产午夜精品av一区二区 | av网站在线观看播放 | 中文字幕91 | 热久久99这里有精品 | 国产福利91精品一区二区三区 | 免费a视频在线观看 | 99久久久| 日本xxxx.com| 很黄很色很污的网站 | 日韩小视频网站 | 国产精品久久久久久麻豆一区 | 国产久草在线 | 婷婷综合视频 | av免费在线免费观看 | 日韩电影一区二区三区 | 日韩特黄一级欧美毛片特黄 | 九色91av | 96久久| 久久久综合 | 久久久久久草 | 人人干天天射 | 一区二区三区免费播放 | 国产精品在线看 | 亚洲精品欧美成人 | 亚洲九九九在线观看 | 狂野欧美激情性xxxx欧美 | 99精品在线免费在线观看 | 亚洲精品9| 狠狠的操你 | 在线观看黄色大片 | 99热这里| 久久精品aaa| 久久国产午夜精品理论片最新版本 | 热久久影视 | 亚洲精品一区二区三区高潮 | 中文有码在线 | 丰满少妇对白在线偷拍 | 九九热av| 在线观看视频你懂的 | 久久久久久久久久免费 | 播五月婷婷 | av片在线看 | 国产成人99久久亚洲综合精品 | 亚洲婷婷在线 | 国产精品久久人 | 91尤物国产尤物福利在线播放 | 日本丰满少妇免费一区 | 成人免费观看视频网站 | 五月综合激情婷婷 | 婷婷色影院 | av中文字幕剧情 | 成年人毛片在线观看 | 一区免费在线 | 网址你懂的在线观看 | 日免费视频 | 国产精品综合在线观看 | 欧美日韩三区二区 | 91精品国产91久久久久久三级 | 一区二区电影在线观看 | 日韩欧美综合精品 | 国产专区日韩专区 | 四虎精品成人免费网站 | 色爱区综合激月婷婷 | 国产女人18毛片水真多18精品 | 国产精品久久一区二区三区不卡 | 久草视频在线免费播放 | 98涩涩国产露脸精品国产网 | www.天天干 | 久久综合狠狠狠色97 | 久久久精品福利视频 | www国产亚洲精品 | 91在线麻豆 | 久久精品一区八戒影视 | 少妇高潮冒白浆 | 国产一区二区久久久 | www.色国产 | 天天插日日射 | 欧美日韩亚洲在线观看 | 国产精品美 | 人人爽人人做 | 日日干夜夜爱 | 国产黄色理论片 | 日韩中文字幕免费在线观看 | 免费av在线网站 | 免费中午字幕无吗 | 色狠狠一区二区 | 三级黄色网址 | 波多野结衣在线视频免费观看 | 欧美大香线蕉线伊人久久 | 日韩免费成人av | 国产精品va在线播放 | 探花系列在线 | 99色免费视频 | 51久久成人国产精品麻豆 | 在线观看久久久久久 | www.99久久.com | 人人爽爽人人 | 日韩综合在线观看 | 五月天中文在线 | 天天色婷婷 | 日韩伦理片一区二区三区 | 亚洲一区二区三区在线看 | 久久99久久99免费视频 | 在线视频欧美精品 | 久久久一本精品99久久精品 | 青春草免费在线视频 | 91视频啪 | 国产精品资源 | 国产资源在线视频 | 青青久草在线视频 | 黄色成品视频 | 成人免费电影 | 日韩电影一区二区三区在线观看 | 亚洲在线国产 | 在线观看日韩中文字幕 | 国产高清99 | 午夜三级毛片 | 天天摸天天干天天操天天射 | 六月丁香综合 | 午夜免费电影院 | 91精品办公室少妇高潮对白 | 亚洲精品自在在线观看 | www.激情五月.com | 免费看的黄色录像 | 精品伊人久久久 | 黄色动态图xx | 欧美日韩在线免费观看 | www色婷婷com| av免费在线观看网站 | 美州a亚洲一视本频v色道 | 色综合久久天天 | 国产在线视频一区二区 | 久久久久久久久久影院 | 九九热视频在线免费观看 | 婷婷六月激情 | 黄色一级免费电影 | 91片黄在线观 | 丁香av| 久久成人高清 | 香蕉影院在线播放 | 91视频亚洲| 91视频大全 | 日韩在线观看中文 | 日韩免费高清在线观看 | 中文字幕视频三区 | 日本久久免费电影 | 久久天天躁狠狠躁亚洲综合公司 | 黄色成人91 | 久久久久久久久久久精 | 97精品国自产拍在线观看 | 欧美a√大片 | 久久久久久高清 | 五月婷婷激情网 | 亚洲成年人免费网站 | 久久视频免费看 | 免费观看性生活大片 | 天堂av高清 | 婷婷色资源 | 国产精品不卡在线播放 | 国产啊v在线观看 | 日韩欧美一区二区在线播放 | 美女视频a美女大全免费下载蜜臀 | 国产免费激情久久 | 午夜电影中文字幕 | 日日夜夜精品免费视频 | 免费网址你懂的 | 丁香婷婷综合五月 | 天天操天天添天天吹 | av丝袜制服| 天天看天天干 | 久久视频在线观看免费 | 国产精品国产亚洲精品看不卡15 | 久久久久国产精品厨房 | 97在线超碰 | 天天爽综合网 | 一区二区伦理电影 | 天堂在线一区二区 | 国产v在线播放 | 亚洲精品视频网站在线观看 | 久久伊人热 | 激情婷婷在线观看 | 夜夜躁狠狠躁 |