黄a在线观看-黄a在线-黄a大片-黄色片在线看-黄色毛片免费-黄色大片网站

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

全面解讀Spring Boot 中的Profile配置體系

瀏覽:20日期:2023-07-13 17:02:26
目錄PreSpring Boot 中的配置體系配置文件與 Profile主 application.properties 中指定激活的ProfileProfile 配置信息只保存在一個文件java ?jar 激活Profile代碼控制與Profile常見配置場景和內容如何在應用程序中嵌入系統配置信息如何創建和使用自定義配置信息使用 @Value 注解使用 @ConfigurationProperties 注解為自定義配置項添加提示功能如何組織和整合配置信息使用 @PropertySources 注解spring.config.location 來改變配置文件的默認加載位置理解配置文件的加載順序如何覆寫內置的配置類

全面解讀Spring Boot 中的Profile配置體系

Pre

配置體系是基于 Spring Boot 框架開發應用程序的基礎,而自動配置也是該框架的核心功能之一,梳理使用 Spring Boot 配置體系的系統方法.

接下來,我們為這個代碼工程添加一些支持 RESTful 風格的 HTTP 端點,在這里我們同樣創建一個 CustomerController 類,如下所示

@RestController@RequestMapping(value='customers')public class CustomerController { @RequestMapping(value = '/{id}', method = RequestMethod.GET) public CustomerTicket getCustomerTicketById(@PathVariable Long id) {CustomerTicket customerTicket = new CustomerTicket();customerTicket.setId(1L);customerTicket.setAccountId(100L);customerTicket.setOrderNumber('Order00001');customerTicket.setDescription('DemoOrder');customerTicket.setCreateTime(new Date());return customerTicket; }}

請注意,這里是為了演示方便,我們才使用了硬編碼完成了一個 HTTP GET 請求的響應處理。

現在 RESTful 端點已經開發完成,我們需要對這個應用程序進行打包。基于 Spring Boot 和 Maven,當我們使用 mvn package 命令構建整個應用程序時,將得到一個 customerservice-0.0.1-SNAPSHOT.jar 文件,而這個 jar 文件就是可以直接運行的可執行文件,內置了 Tomcat Web 服務器。也就是說,我們可以通過如下命令直接運行這個 Spring Boot 應用程序:

java ?jar customerservice-0.0.1-SNAPSHOT.jar

通過 Postman 訪問“http://localhost:8083/customers/1”端點,可以得到如下圖所示的HTTP響應結果,說明整個服務已經啟動成功。

全面解讀Spring Boot 中的Profile配置體系

Spring Boot 中的配置體系

在 Spring Boot 中,其核心設計理念是對配置信息的管理采用約定優于配置。在這一理念下,則意味著開發人員所需要設置的配置信息數量比使用傳統 Spring 框架時還大大減少。

當然,今天我們關注的主要是如何理解并使用 Spring Boot 中的配置信息組織方式,這里就需要引出一個核心的概念,即 Profile。

配置文件與 Profile

Profile 本質上代表一種用于組織配置信息的維度,在不同場景下可以代表不同的含義。例如,如果 Profile 代表的是一種狀態,我們可以使用 open、halfopen、close 等值來分別代表全開、半開和關閉等。再比如系統需要設置一系列的模板,每個模板中保存著一系列配置項,那么也可以針對這些模板分別創建 Profile。這里的狀態或模版的定義完全由開發人員自主設計,我們可以根據需要自定義各種 Profile,這就是 Profile 的基本含義。

為了達到集中化管理的目的,Spring Boot 對配置文件的命名也做了一定的約定,分別使用 label 和 profile 概念來指定配置信息的版本以及運行環境,其中 label 表示配置版本控制信息,而 profile 則用來指定該配置文件所對應的環境

在 Spring Boot 中,配置文件同時支持 .properties 和 .yml 兩種文件格式,結合 label 和 profile 概念,如下所示的配置文件命名都是常見和合法的:

/{application}.yml/{application}-{profile}.yml/{label}/{application}-{profile}.yml/{application}-{profile}.properties/{label}/{application}-{profile}.properties

Yaml 的語法和其他高級語言類似,并且可以非常直觀地表達各種列表、清單、標量等數據形態,特別適合用來表達或編輯數據結構和各種配置文件。在這里,我們指定了如下所示的數據源配置,這里使用了 . yml 文件,如下所示:

spring: datasource: driver-class-name: com.mysql.cj.jdbc.Driver url: jdbc:mysql://127.0.0.1:3306/account username: rootpassword: root

如果采用 .propertie 配置文件,那么上述配置信息將表示為如下的形式:

spring.datasource.driverClassName=com.mysql.cj.jdbc.Driverspring.datasource.url=jdbc:mysql://127.0.0.1:3306/accountspring.datasource.username=root spring.datasource.password=root

顯然,類似這樣的數據源通常會根據環境的不同而存在很多套配置。假設我們存在如下所示的配置文件集合:

全面解讀Spring Boot 中的Profile配置體系

注意,這里有一個全局的 application.yml 配置文件以及多個局部的 profile 配置文件。

主 application.properties 中指定激活的Profile

那么,如何指定當前所使用的那一套配置信息呢?

在 Spring Boot 中,我們可以在主 application.properties 中使用如下的配置方式來激活當前所使用的 Profile:

spring.profiles.active = test

上述配置項意味著系統當前會讀取 application-test.yml 配置文件中的配置內容。同樣,如果使用 .yml 文件,則可以使用如下所示的配置方法:

spring: profiles: active: test

事實上,我們也可以同時激活幾個 Profile,這完全取決于你對系統配置的需求和維度:

spring.profiles.active: prod, myprofile1, myprofile2Profile 配置信息只保存在一個文件

當然,如果你想把所有的 Profile 配置信息只保存在一個文件中而不是分散在多個配置文件中, Spring Boot 也是支持的,需要做的事情只是對這些信息按 Profile 進行組織、分段,如下所示:

spring: profiles: test #test 環境相關配置信息spring: profiles: prod #prod 環境相關配置信息

推薦按多個配置文件的組織方法管理各個 Profile 配置信息,這樣才不容易混淆和出錯。

java ?jar 激活Profile

最后,如果我們不希望在全局配置文件中指定所需要激活的 Profile,而是想把這個過程延遲到運行這個服務時,那么我們可以直接在 java ?jar 命令中添加“?spring.profiles.active”參數,如下所示

java ?jar customerservice-0.0.1-SNAPSHOT.jar --spring.profiles.active=prod

這種實現方案在通過腳本進行自動化打包和部署的場景下非常有用。

代碼控制與Profile

在 Spring Boot 中,Profile 這一概念的應用場景還包括動態控制代碼執行流程。為此,我們需要使用 @Profile 注解,先來看一個簡單的示例。

@Configurationpublic class DataSourceConfig { @Bean @Profile('dev') public DataSource devDataSource() {//創建 dev 環境下的 DataSource } @Bean() @Profile('prod') public DataSource prodDataSource(){//創建 prod 環境下的 DataSource }}

可以看到,我們構建了一個 DataSourceConfig 配置類來專門管理各個環境所需的 DataSource。注意到這里使用 @Profile 注解來指定具體所需要執行的 DataSource 創建代碼,通過這種方式,可以達到與使用配置文件相同的效果。

更進一步,能夠在代碼中控制 JavaBean 的創建過程為我們根據各種條件動態執行代碼流程提供了更大的可能性。

例如,在日常開發過程中,一個常見的需求是根據不同的運行環境初始化數據,常見的做法是獨立執行一段代碼或腳本。基于 @Profile 注解,我們就可以將這一過程包含在代碼中并做到自動化,如下所示:

@Profile('dev')@Configurationpublic class DevDataInitConfig { @Bean public CommandLineRunner dataInit() { return new CommandLineRunner() { @Override public void run(String... args) throws Exception {//執行 Dev 環境的數據初始化 }; }

這里用到了 Spring Boot 所提供了啟動時任務接口 CommandLineRunner,實現了該接口的代碼會在 Spring Boot 應用程序啟動時自動進行執行 。

@Profile 注解的應用范圍很廣,我們可以將它添加到包含 @Configuration 和 @Component 注解的類及其方法,也就是說可以延伸到繼承了 @Component 注解的 @Service、@Controller、@Repository 等各種注解中。

常見配置場景和內容

下面來看幾個常見的配置示例 , 加深對 Spring Boot 中配置體系的理解。

對于一個 Web 應用程序而言,最常見的配置可能就是指定服務暴露的端口地址,如下所示:

server: port: 8080

同時,數據庫訪問也是 Web 應用程序的基本功能,因此,關于數據源的設置也是常見的一種配置場景,上一篇博文時給出了一個基本的示例。

這里再以 JPA 為例,給出如下所示的一種配置方案:

spring: jpa: hibernate: ddl-auto: create show-sql: true

顯然,這里使用了 Hibernate 作為 JPA 規范的實現框架,并設置了 show-sql 等相關屬性。然后,開發人員一般也需要設置日志級別和對象,如下所示的就是一個典型的配置示例:

logging.level.root=WARNlogging.level.com.springcss.customer=INFO

我們設置了系統的全局日志級別為 WARN,而針對自定義的 com.springcss.customer 包下的日志則將其級別調整到 INFO。

這里需要注意的是,Spring Boot 基于 application.properties 或 application.yml 全局配置文件已經自動內置了很多默認配置。即使我們不設置上述配置內容,Spring Boot 仍然可以基于這些默認配置完成系統的初始化。

自動配置是 Spring Boot 中的一個核心概念,我們會在后續內容中給出詳細的實現原理分析。

如何在應用程序中嵌入系統配置信息

我們知道 Spring Boot 通過自動配置機制內置了很多默認的配置信息,而在這些配置信息中,有一部分系統配置信息也可以反過來作為配置項應用到我們的應用程序中。

例如,如果想要獲取當前應用程序的名稱并作為一個配置項進行管理,那么很簡單,我們直接通過 ${spring.application.name} 占位符就可以做到這一點,如下所示:

myapplication.name : ${spring.application.name}

通過 ${} 占位符同樣可以引用配置文件中的其他配置項內容,如在下列配置項中,最終“system.description”配置項的值就是“The system springcss is used for health”。

system.name=springcsssystem.domain=healthsystem.description=The system ${name} is used for ${domain}.

再來看一種場景,假設我們使用 Maven 來構建應用程序,那么可以按如下所示的配置項來動態獲取與系統構建過程相關的信息:

info: app: encoding: @project.build.sourceEncoding@ java: source: @java.version@ target: @java.version@

上述配置項的效果與如下所示的靜態配置是一樣的:

info: app: encoding: UTF-8 java:source: 1.8.0_31target: 1.8.0_31

根據不同的需求,在應用程序中嵌入系統配置信息是很有用的,特別是在一些面向 DevOps 的應用場景中。

如何創建和使用自定義配置信息

在現實的開發過程中,面對紛繁復雜的應用場景,Spring Boot 所提供的內置配置信息并不一定能夠完全滿足開發的需求,這就需要開發人員創建并管理各種自定義的配置信息。

例如,對于一個電商類應用場景,為了鼓勵用戶完成下單操作,我們希望每完成一個訂單給就給到用戶一定數量的積分。從系統擴展性上講,這個積分應該是可以調整的,所以我們創建了一個自定義的配置項,如下所示:

springcss.order.point = 10

這里,我們設置了每個訂單對應的積分為 10,那么應用程序該如何獲取這個配置項的內容呢?通常有兩種方法。

使用 @Value 注解

使用 @Value 注解來注入配置項內容是一種傳統的實現方法。針對前面給出的自定義配置項,我們可以構建一個 SpringCssConfig 類,如下所示:

@Componentpublic class SpringCssConfig { @Value('${springcss.order.point}') private int point;}

在 SpringCssConfig 類中,我們要做的就是在字段上添加 @Value 注解,并指向配置項的名稱即可。

使用 @ConfigurationProperties 注解

相較 @Value 注解,更為現代的一種做法是使用 @ConfigurationProperties 注解。在使用該注解時,我們通常會設置一個“prefix”屬性用來指定配置項的前綴,如下所示:

@Component@ConfigurationProperties(prefix = 'springcss.order')public class SpringCsshConfig {private int point;//省略 getter/setter}

相比 @Value 注解只能用于指定具體某一個配置項,@ConfigurationProperties 可以用來批量提取配置內容。只要指定 prefix,我們就可以把該 prefix 下的所有配置項按照名稱自動注入業務代碼中。

我們考慮一種更常見也更復雜的場景:假設用戶根據下單操作獲取的積分并不是固定的,而是根據每個不同類型的訂單會有不同的積分,那么現在的配置項的內容,如果使用 Yaml 格式的話就應該是這樣:

springcss: points: orderType[1]: 10 orderType[2]: 20 orderType[3]: 30

如果想把這些配置項全部加載到業務代碼中,使用 @ConfigurationProperties 注解同樣也很容易實現。我們可以直接在配置類 SpringCssConfig 中定義一個 Map 對象,然后通過 Key-Value 對來保存這些配置數據,如下所示:

@Component@ConfigurationProperties(prefix='springcss.points')public class SpringCssConfig { private Map<String, Integer> orderType = new HashMap<>();//省略 getter/setter}

可以看到這里通過創建一個 HashMap 來保存這些 Key-Value 對。類似的,我們也可以實現常見的一些數據結構的自動嵌入。

為自定義配置項添加提示功能

如果你已經使用過 Spring Boot 中的配置文件,并添加了一些內置的配置項,你就會發現,當我們輸入某一個配置項的前綴時,諸如 IDEA、Eclipse 這樣的,IDE 就會自動彈出該前綴下的所有配置信息供你進行選擇,效果如下:

全面解讀Spring Boot 中的Profile配置體系

上圖的效果對于管理自定義的配置信息非常有用。如何實現這種效果呢?當我們在 application.yml 配置文件中添加一個自定義配置項時,會注意到 IDE 會出現一個提示,說明這個配置項無法被 IDE 所識別,如下所示:

全面解讀Spring Boot 中的Profile配置體系

遇到這種提示時,我們是可以忽略的,因為它不會影響到任何執行效果。

但為了達到自動提示效果,我們就需要生成配置元數據。生成元數據的方法也很簡單,直接通過 IDE 的“Create metadata for ‘springcss.order.point’”按鈕,就可以選擇創建配置元數據文件,這個文件的名稱為 additional-spring-configuration-metadata.json,文件內容如下所示:

{'properties': [{ 'name': 'springcss.order.point', 'type': 'java.lang.String', 'description': 'A description for ’springcss.order.point’'}]}

現在,假如我們在 application.properties 文件中輸入“springcss”,IDE 就會自動提示完整的配置項內容,效果如下所示:

全面解讀Spring Boot 中的Profile配置體系

另外,假設我們需要為 springcss.order.point 配置項指定一個默認值,可以通過在元數據中添加一個'defaultValue'項來實現,如下所示:

{'properties': [{ 'name': 'springcss.order.point', 'type': 'java.lang.String', 'description': '’springcss.order.point’ is userd for setting the point when dealing with an order.', 'defaultValue': 10}]}

這時候,在 IDE 中設置這個配置項時,就會提出該配置項的默認值為 10,效果如下所示:

全面解讀Spring Boot 中的Profile配置體系

如何組織和整合配置信息

Profile 可以認為是管理配置信息中的一種有效手段。

下面,我們繼續介紹另一種組織和整合配置信息的方法,這種方法同樣依賴于前面介紹的 @ConfigurationProperties 注解。

使用 @PropertySources 注解

在使用 @ConfigurationProperties 注解時,我們可以和 @PropertySource 注解一起進行使用,從而指定從哪個具體的配置文件中獲取配置信息。

例如,在下面這個示例中,我們通過 @PropertySource 注解指定了 @ConfigurationProperties 注解中所使用的配置信息是從當前類路徑下的 application.properties 配置文件中進行讀取。

@Component@ConfigurationProperties(prefix = 'springcss.order')@PropertySource(value = 'classpath:application.properties')public class SpringCssConfig {}

既然我們可以通過 @PropertySource 注解來指定一個配置文件的引用地址,那么顯然也可以引入多個配置文件,這時候用到的是 @PropertySources 注解,使用方式如下所示:

@PropertySources({@PropertySource('classpath:application.properties '),@PropertySource('classpath:redis.properties'),@PropertySource('classpath:mq.properties')})public class SpringCssConfig {

這里,我們通過 @PropertySources 注解組合了多個 @PropertySource 注解中所指定的配置文件路徑。SpringCssConfig 類可以同時引用所有這些配置文件中的配置項。

spring.config.location 來改變配置文件的默認加載位置

另一方面,我們也可以通過配置 spring.config.location 來改變配置文件的默認加載位置,從而實現對多個配置文件的同時加載。例如,如下所示的執行腳本會在啟動 customerservice-0.0.1-SNAPSHOT.jar 時加載D盤下的 application.properties 文件,以及位于當前類路徑下 config 目錄中的所有配置文件:

java -jar customerservice-0.0.1-SNAPSHOT.jar --spring.config.location=file:///D:/application.properties, classpath:/config/

通過 spring.config.location 指定多個配置文件路徑也是組織和整合配置信息的一種有效的實現方式。

理解配置文件的加載順序

通過前面的示例,我們看到可以把配置文件保存在多個路徑,而這些路徑在加載配置文件時具有一定的順序。Spring Boot 在啟動時會掃描以下位置的 application.properties 或者 application.yml 文件作為全局配置文件:

?file:./config/?file:./?classpath:/config/?classpath:/

以下是按照優先級從高到低的順序,如下所示:

全面解讀Spring Boot 中的Profile配置體系

Spring Boot 會全部掃描上圖中的這四個位置,掃描規則是高優先級配置內容會覆蓋低優先級配置內容。而如果高優先級的配置文件中存在與低優先級配置文件不沖突的屬性,則會形成一種互補配置,也就是說會整合所有不沖突的屬性。

如何覆寫內置的配置類

關于 Spring Boot 配置體系,最后值得介紹的就是如何覆寫它所提供的配置類。我們已經反復強調 Spring Boot 內置了大量的自動配置,如果我們不想使用這些配置,就需要對它們進行覆寫。

覆寫的方法有很多,我們可以使用配置文件、Groovy 腳本以及 Java 代碼。這里,我們就以Java代碼為例來簡單演示覆寫配置類的實現方法。

以Spring Security為例

在 Spring Security 體系中,設置用戶認證信息所依賴的配置類是 WebSecurityConfigurer 類。顧名思義,這是一個設置 Web 安全的配置類。

Spring Security 提供了 WebSecurityConfigurerAdapter 這個適配器類來簡化該配置類的使用方式,我們可以繼承 WebSecurityConfigurerAdapter 類并且覆寫其中的 configure() 的方法來完成自定義的用戶認證配置工作。

典型的 WebSecurityConfigurerAdapter 子類及其代碼實現如下所示

@Configurationpublic class SpringHCssWebSecurityConfigurer extends WebSecurityConfigurerAdapter { @Override @Bean public AuthenticationManager authenticationManagerBean() throws Exception { return super.authenticationManagerBean(); } @Override @Bean public UserDetailsService userDetailsServiceBean() throws Exception {return super.userDetailsServiceBean(); } @Override protected void configure(AuthenticationManagerBuilder builder) throws Exception { builder.inMemoryAuthentication().withUser('springcss_user').password('{noop}password1').roles('USER').and().withUser('springcss_admin').password('{noop}password2').roles('USER', 'ADMIN'); }}

這里我們只需要知道,在 Spring Boot 中,提供了一些類的內置配置類,而開發人員可以通過構建諸如上述所示的 SpringCssWebSecurityConfigurer 類來對這些內置配置類進行覆寫,從而實現自定義的配置信息。

以上就是Spring Boot 中的配置體系Profile全面解讀的詳細內容,更多關于Spring Boot配置體系Profile的資料請關注好吧啦網其它相關文章!

標簽: Spring
相關文章:
主站蜘蛛池模板: 一本大道av伊人久久综合 | 91成人国产 | 99热这里精品 | 国产精品一区二区av日韩在线 | 中文字幕亚洲综合久久菠萝蜜 | 一级片在线观看视频 | 色哟哟在线 | 欧美三p| 日本裸体xx少妇18在线 | 国产亚洲精品久久久久婷婷瑜伽 | 日韩小视频在线 | 色综合图区 | 天天综合网天天综合 | 99久久国产综合精品麻豆 | 狠狠干老司机 | 一区二区三区在线播放 | 久久久国产毛片 | 亚洲精品www | 成人欧美一区二区三区黑人免费 | 日本黄色免费 | 久久久国产乱子伦精品 | 亚洲国产精品va在线看黑人动漫 | 四虎影视国产精品免费久久 | 国产哺乳奶水91在线播放 | 国产性猛交xxxx免费看久久 | 亚洲伊人久久久 | 国产va免费精品观看精品 | 香蕉久久精品日日躁夜夜躁夏 | 天天躁夜夜躁狠狠眼泪 | 流白浆视频 | 一本大道久久a久久综合婷婷 | 亚洲欧洲国产视频 | 中国人与牲禽动交精品 | 免费看片黄色 | 激情综合区 | 99在线免费观看视频 | 午夜丰满少妇性开放视频 | 亚洲日韩国产中文其他 | 国产视频每日更新 | 日本强伦姧人妻一区二区 | 欧美亚洲影院 | 欧洲美一区二区三区亚洲 | 欧美三级在线播放 | 国产成人综合久久精品免费 | 一区二区三区波多野结衣 | 国产精品嫩草av | 日本不卡一二三 | 国产一级片av大片 | 国产 欧美 日韩 | 亚洲欧洲在线播放 | 国产无遮挡又黄又爽在线观看 | 男人添女人下部高潮全视频 | 在线看黄色av | 又色又污又爽又黄的网站 | 天天综合久久综合 | 国产精品无码久久久久成人影院 | 色婷婷免费 | 亚洲色妞| 国内精品久久毛片一区二区 | 久久精品99久久香蕉国产色戒 | 中文字字幕在线中文无码 | 蜜桃网站入口在线进入 | 性色av一区二区三区咪爱四虎 | 伊人tv| 国产色精品久久人妻 | 人成网站在线观看 | 欧美午夜免费 | 精品国产乱码久久久久久1区二区 | 日本xxxx在线观看 | 99热这里只有精品7 99热这里只有精品8 | 成人毛片18女人毛片 | 国产精品久久亚洲7777 | 538任你躁在线精品免费 | 欧美日韩色另类综合 | 日韩在线观看网址 | 亚洲中文字幕av在天堂 | 精品一区二区三 | 一区二区精品国产 | 国产porn| 88久久精品无码一区二区毛片 | 91康先生在线国内精品 | 乱子伦一区二区 | 极品福利在线 | 91丨porny丨国产 | 97超在线| 一本到在线观看视频 | 手机看片福利永久 | 国产成人乱色伦区 | 成人毛片免费网站 | 国产又大又黑又粗免费视频 | 九色蝌蚪国产 | 二区欧美| 日韩av区 | 麻豆果冻传媒精品 | 美女丝袜合集 | 偷看美女洗澡一二三四区 | 久久久老司机 | 国产伦精品一区二区三区四区视频_ | 欧美成人一区二区三区高清 | 制服.丝袜.亚洲.中文.综合懂色 | 四虎影视永久在线精品 | 6699嫩草久久久精品影院 | 粉嫩av淫片一区二区三区 | 亚洲欧美一区二区三区情侣bbw | 人与兽黄色毛片 | 国产乱人内谢69xxxx亚洲 | 欧美黄频 | a级免费观看| 国产色xx群视频射精 | 中文字幕一区在线观看视频 | 欧美老熟 | 欧美日韩第一页 | 国产大学生情侣呻吟视频 | 欧美一区二区成人 | 成人免费毛片日本片视频 | 少妇下蹲露大唇无遮挡 | 亚洲日韩一区二区 | 久久久国产乱子伦精品作者 | 美女尿尿网站 | 日韩三级一区二区三区 | 丝袜美腿亚洲一区二区 | 欧美在线www | 亚洲欧美视频一区 | 九九九九九热 | 综合图区亚洲欧美另类图片 | 小明成人免费视频 | 国内揄拍国内精品 | 毛片最新网址 | 久久国| 成人免费视频网站 | 欧美少妇一区 | 国产麻豆一区二区三区 | 国产永久在线观看 | 成人无码在线视频网站 | 久久久久久久久久久久久9999 | 亚洲 制服 丝袜 无码 | 欧美三级一区二区三区 | 国产高清视频一区 | 久久久精品视 | 亚洲日本乱码一区二区三区 | 日韩黄色三级视频 | 欧美一级淫片免费视频欧美辣图 | 欧美日韩一卡二卡三卡 | 欧美高清不卡 | av黄色在线 | 日韩欧美中文 | 19禁大尺度做爰无遮挡小说 | 国内自产少妇自拍区免费 | 无码国内精品人妻少妇蜜桃视频 | 99热这里只有精品9 99热这里只有精品99 | 成年在线观看视频 | 欧美体内she精高潮 欧美体内谢she精2性欧美 | 偷偷操av | aaa国产精品 | 先锋影音av最新资源 | 国产又粗又猛又黄视频 | 永久免费看成人av的动态图 | 少妇又紧又黄又刺激视频 | 国产做爰全免费的视频软件 | 欧美一区二区三区四区在线观看 | 婷婷九九 | 夜夜爽夜夜叫夜夜高潮漏水 | 调教一区二区三区 | 波多野结衣电车痴汉 | 在线观看成年人视频 | 91在线欧美 | 九九综合网 | 性激情视频 | 日韩精品内射视频免费观看 | 奇米影视第四狠狠777 | 久久国产精品99精品国产 | 国产91香蕉 | 亚洲一区国产一区 | 欧美在线视频一区二区三区 | 国产一区二区三区久久久久久久久 | 精品一卡二卡三卡 | 巨大巨粗巨长 黑人长吊 | 黄色片aaaa | 日本黄色三级 | 日本一区二区欧美 | 1024毛片基地| 国产丝袜美腿一区二区三区 | 在线无| 久久久精品美女 | 欧美成人高潮一二区在线看 | 91精品啪在线观看国产线免费 | 综合网色 | 男人综合网 | 成年美女黄网站色大片免费看 | 午夜无码片在线观看影院 | 噜噜噜狠狠夜夜躁精品仙踪林 | 国产探花在线观看 | 99精品无人区乱码在线观看 | 中国女人内谢69xxxx喜欢你 | 伊人亚洲综合 | 91精品国产综合久久久久久丝袜 | 婷婷成人丁香五月综合激情 | 中文字幕日本精品一区二区三区 | 久久精品99国产精 | 狠狠躁夜夜躁人人爽天天 | 亚洲精品国产精品国自产观看浪潮 | 狠狠色综合激情丁香五月 | 波多野结衣网址 | avtt中文字幕 | 日本精品黄色 | 日本精品一区二区三区四区 | 粉嫩视频在线观看 | 成人国产免费 | 婷婷伊人五月色噜噜精品一区 | 日本性久久 | av高潮| 伊人久久无码中文字幕 | 夜久久久 | 欧美国产精品一二三 | 亚洲中文字幕av在天堂 | 无码无套少妇毛多69xxx | 一本au道大尺码高清专区 | 日韩av午夜 | 人妻少妇精品一区二区三区 | 色欲久久久天天天综合网 | 亚洲 欧美 日韩系列 | 亚洲美女偷拍 | 一本一道人人妻人人妻αv 自拍日韩亚洲一区在线 | 国产精品成人一区二区三区 | 久久综合激情网 | 最新2020无码中文字幕在线视频 | 色婷婷色丁香 | 中国女人内谢69xxxx天美 | 国产亚洲xxxx在线播放 | 国产91打白嫩光屁屁网站 | 日韩一级视频在线观看 | 国产精品一区久久 | 人人妻人人插视频 | 午夜精品久久久久久久久久久久 | 夜福利视频 | 55夜色66夜色国产精品视频 | 97在线影院 | 哈利波特3在线观看免费版英文版 | av网站在线免费观看 | 一级片大片 | 国产日韩欧美中文字幕 | 大尺度福利视频 | 午夜影视免费 | 天堂资源最新在线 | 黄色美女大片 | 无码人妻av一区二区三区波多野 | 色欲久久久天天天综合网 | 大肉大捧一进一出好爽动态图 | 精品人妻一区二区三区四区在线 | 国产精品第1页 | 日本女人黄色片 | 国产黄站| 欧美成人一区二区三区四区 | 无码高潮爽到爆的喷水视频app | 91精品久久久久久久久不卡 | 日本怡红院视频www色 | 日韩视频在线观看免费视频 | 久久午夜夜伦鲁鲁片免费无码 | 欧美午夜在线 | 色偷偷偷在线视频播放 | 大伊香蕉精品一区视频在线 | 91蝌蚪少妇 | 无码精品黑人一区二区三区 | 国产三级福利 | 中文字幕视频网站 | 嫩草视频国产精品 | 极品美妇后花庭翘臀娇吟小说 | 久久综合a∨色老头免费观看 | 人人爱操 | 久色视频在线 | 日韩不卡高清 | 成年人视频网站 | 二区在线播放 | 国产视频久久久久久久 | 一本久久a久久精品vr综合 | 鸥美毛片 | 国产三香港三韩国三级古装 | 韩国色网| 天天干,天天爽 | 日人视频| 呻吟揉丰满对白91乃欧美区 | 国产91视频在线观看 | 亚洲第一视频网 | 午夜影皖精品av在线播放 | 午夜黄色福利 | 国产精品入口福利 | 动漫av在线看男男 | 男女啪啪做爰高潮www成人福利 | 日韩日比视频 | 李丽珍毛片 | 亚洲女同视频 | 国产黄色小说 | 黄色网络在线观看 | 欧美不卡在线观看 | 日本中文字幕在线免费观看 | 又黄又爽的视频在线观看 | 无码人妻一区二区三区线 | 干美女av | 日批的视频 | 激情综合色五月丁香六月欧美 | 动漫美女爆羞羞动漫在线蜜桃 | 中文字幕奈奈美抱公侵犯 | 乌克兰粉嫩xxx极品hd | 免费一级片 | 催眠肉高h喷汁呻吟np | 国产91色在线 | 免费 | 午夜免费视频网站 | 瑜伽美女健身视频集锦 | 国产私拍 | 国产69精品久久久久9999apgf | 国产成人久久精品麻豆二区 | 国产一区久久 | 天天综合网网欲色 | 国产裸体按摩视频 | 天堂在线91| www久久久天天com | 亚洲天堂v | 极品销魂美女少妇尤物优美 | 亚欧成a人无码精品va片 | 男人的又粗又长又硬 | 丰满老女人乱妇dvd在线播放 | 九一午夜精品av | 国产精品无码电影在线观看 | 欧美成人免费全部网站 | 神马影院午夜伦理片 | 久久8| 久久ク成人精品中文字幕 | 成人乱码一区二区三区av66 | 成人av不卡 | 成人午夜黄色 | 337p日本欧洲亚洲大胆 | 国产精品日日摸夜夜添夜夜av | 国模私拍一区二区三区 | 国产日韩欧美不卡 | 久久伊人在| 人人看人人舔 | 国产又粗又长又硬免费视频 | 午夜福利国产精品久久 | 久久综合久久自在自线精品自 | 天天射天天拍 | 人人干人人爱 | 欧美性欧美巨大黑白大战 | 波多野结衣视频在线看 | 亚洲第8页 | 情侣做性视频在线播放 | 牛牛av| 国产一区视频在线免费观看 | 免费在线| 欧美日韩精品中文字幕 | 丰满人妻熟妇乱又伦精品视 | 小早川怜子一区二区三区 | 国产放荡对白视频一区二区 | 黑鬼大战白妞高潮喷白浆 | 一本一本久久a久久精品综合妖精 | 国产一级特黄,真人毛片 | 国产精品久久久久久久午夜 | 亚洲成人aa| 辽宁熟女高潮狂叫视频 | 婷婷五月六月激情综合色中文字幕 | 婷婷色国产偷v国产偷v小说 | 亚洲精品成人av在线 | 久久久久久久女女女又又 | 图片小说视频一区二区 | 日韩欧美操| 成人在线视屏 | 明星各种姿势顶弄呻吟h | 亚洲精品乱码久久久久久国产主播 | 国产日韩欧美在线观看视频 | 婷婷综合基地俺也来 | 女人下面流白浆的视频 | 337p粉嫩大胆噜噜噜噜69影视 | 91精品国产aⅴ一区 91精品国产爱久久丝袜脚 | 国产精品久久久久久久久绿色 | 国产草草影院ccyycom | 欧美日韩在线成人 | 男人和女人做爽爽视频 | 黄网址在线观看 | 香蕉视频在线观看网站 | 一级黄色网| 亚洲精品乱码久久久久久按摩 | 男人的影院 | 欧美人妖老妇 | 精品国产18久久久久久依依影院 | 日本寂寞少妇 | 超碰久操| 亚洲成a人v欧美综合天堂麻豆 | 精品人妻无码专区在线无广告视频 | 国产精品扒开腿做爽爽爽a片唱戏 | 久久久久久久久99精品情浪 | 日韩成人在线观看 | 色婷婷五月综合亚洲小说 | 亚洲另类xxxx | 蜜桃视频在线观看www | 亚洲天堂首页 | 强迫凌虐淫辱の牝奴在线观看 | 黄色三级av | av免费入口| 日本va欧美va欧美va精品 | 亚洲国产精久久久久久久 | 亚洲综合精品一区二区三区 | 精品久久久中文字幕人妻 | 男人天堂网在线视频 | 91精品国产综合久久蜜臀 | 女人张开腿让男人桶爽 | 久久久久无码精品国产h动漫 | 久久久欧美精品sm网站 | 免费的毛片视频 | 中文字幕第80页 | 亚洲综合毛片 | www.91亚洲 | 成熟丰满少妇激情xxxx | 色偷偷一区二区三区 | 亚洲欧美日韩精品在线观看 | 91精品国产色综合久久久浪潮 | 久热re这里精品视频在线6 | 日本做暖暖xo小视频 | 色偷偷色偷偷色偷偷在线视频 | 性h欲短篇合集 | 色欲麻豆国产福利精品 | 久久婷婷国产综合精品 | 亚洲欧美中文字幕在线一区 | 亚洲图片欧美日韩 | 国产精品水嫩水嫩 | 日韩 高清 无码 人妻 | 色呦呦免费观看 | 求av网站 | 国产老头和老太xxxxx视频 | 国内毛片精品av一二三 | 888久久| a级小视频| 综合久久久久 | 大乳美女a级三级三级 | 久久无码专区国产精品 | 欧美女优在线 | 久久人人爽人人爽爽久久 | 国产特级毛片潘金莲 | 久久成人麻豆午夜电影 | 亚洲免费国产视频 | 美女视频黄的全免费视频网站 | 亚洲精品乱码久久久久久按摩 | 夜夜爽av福利精品导航 | 人妻系列无码专区无码中出 | 亚洲男人天堂2022 | 日本高清二区 | 亚洲精品久久久蜜桃 | 日韩中文字幕在线一区二区三区 | 热99这里只有精品 | 欧美丝袜一区二区 | 国产日产精品一区二区三区四区的观看方式 | 成人妇女免费播放久久久 | 欧美一级淫片丝袜脚交 | 穿越异世荒淫h啪肉np文 | 亚洲97| 成人毛片网站 | 朝鲜大乳女奶水奶水吃奶视频在线 | 毛片一级免费 | 在线aⅴ亚洲中文字幕 | 亚洲三区av | 把插八插露脸对白内射 | 97在线视频免费人妻 | 欧美午夜精品久久久久久浪潮 | blacked精品一区国产在线观看 | 国产精品无码制服丝袜 | 无码av大香线蕉伊人久久 | 亚洲人成在线影院 | 天天干天天干天天操 | 日韩欧美人妻一区二区三区 | av美女网站 | 午夜av免费看 | xxxxx在线视频 | 国产精品成人一区二区 | 国产zzjjzzjj视频全免费 | 色七七桃花综合影院 | 久久久久久久久久久久久久久久久久久久 | 日本成本人片免费网站 | 天天插视频 | 午夜免费国产体验区免费的 | 7777久久亚洲中文字幕蜜桃 | 极品美女一区二区三区 | 午夜精品久久99蜜桃的功能介绍 | 久久久久久69 | 日本午夜无人区毛片私人影院 | 日韩影音 | a天堂v| 丰满熟妇偷拍洗澡毛茸茸 | 夜夜春夜夜爽 | 艳妇荡女欲乱双飞两中年熟妇 | 无码 人妻 在线 视频 | 久精品国产| 人妻av无码一区二区三区 | 免费的色视频 | 午夜精品三级久久久有码 | 国产美女视频免费观看的软件 | 亚洲午夜无码毛片av久久京东热 | 美国av一区二区 | 成人在线日韩 | 9热在线| 亚洲男人天堂网 | 少妇被粗大的猛烈进出免费视频 | 午夜婷婷| 一本一道波多野结衣av黑人 | 精品九九久久 | 成人欧美一区二区三区黑人 | 国产粉嫩高中好第一次不戴 | 国产一级午夜一级在线观看 | 婷婷综合在线 | 蜜臀av性久久久久蜜臀aⅴ涩爱 | 国产精品性做久久久久久 | 一区二区在线免费视频 | 伊人成年综合网 | 国产女主播在线播放 | 亚洲精品沙发午睡系列 | 亚洲风情亚aⅴ在线发布 | 久久精品视频7 | 99久久婷婷国产综合精品 | 久久久国产精品亚洲一区 | 比色毛片 | 久久综合激情网 | 91亚洲狠狠婷婷综合久久久 | 一区二区三区日韩视频在线观看 | 偷拍网亚洲 | 性欧美videos另类极品小说 | 中国一级片在线观看 | 在线观看香蕉视频 | 免费看毛片在线观看 | 国产一区免费 | 夜夜撸av| 国产盗摄夫妻原创视频在线观看 | 国内精品久久久久 | 国内精品久久久久久影视8 国内精品久久久久影视老司机 | 国产三香港三韩国三级古装 | 亚洲xxxxxx| 国产香蕉在线观看 | 国产精自产拍久久久久久蜜 | 免费在线观看亚洲 | 欧美一级黄色网 | 在线欧美中文字幕农村电影 | 所有明星裸露影片合集在线播放 | 日韩午夜网站 | 成人做爰9片免费视频 | 亚洲熟女一区二区三区 | 国精产品一二三区精华液 | 91超碰在线播放 | 在线观看成人动漫 | 成人性生交视频免费观看 | 我想看一级黄色毛片 | 丁香花小说手机在线观看免费 | 制服诱惑一区二区 | 放荡艳妇的疯狂呻吟中文视频 | 学生妹亚洲一区二区 | 51区成人一码二码三码是什么 | 久久日韩乱码一二三四区别 | 人妖精品videosex性欧美 | av国产天美传媒性色av | 综合网激情 | 国产99视频精品免视看芒果 | 成人性做爰aaa片免费看不忠 | 国产无遮挡又黄又爽在线观看 | 狠狠色噜噜狠狠狠狠2018 | 少妇高潮叫床对白xxxxx | 涩涩999| 草免费视频| 国产精品亚洲欧美 | 国产精品国产三级国产aⅴ中文 | 国产成人天天5g影院在线观看 | 天天免费看av | xxx性视频 | 免费在线激情视频 | 亚洲va中文字幕无码 | 亚洲狠狠丁香综合一区 | 波多野结衣在线观看一区 | 亚洲精品久久久久成人2007 | 美女裸体十八禁免费网站 | 欧美区一区 | 日日网站| 国产亚洲va天堂va777 | 久久久久久久女国产乱让韩 | 先锋av在线资源 | 国产成人av一区 | 我爱52av | 狠狠久 | 一本一道久久久a久久久精品91 | 午夜大片在线观看 | 日本在线中文 | 秋霞自拍| 粉嫩av一区二区三区在线观看 | 毛片无码一区二区三区a片视频 | 欧美成在线视频 | 97变态冷s各种国产调教 | 欧美精品一区二区性色 | 蜜桃精品在线 | 人妻少妇乱子伦精品 | 免费黄色的网站 | 午夜视频www | 国产a√精品区二区三区四区 | 国产又粗又猛又大爽又黄 | 亚洲一卡2卡三卡四卡精品 曰批免费视频播放免费 | 久久99九九| 在线超碰91| 欧美黄大片 | 中国毛片网 | 日本另类αv欧美另类aⅴ | 91在线亚洲 | 国产精品裸体一区二区三区 | 最近中文字幕免费mv在线视频 | 白嫩少妇抽搐高潮12p | 又黄又爽又色视频免费 | 黄色日本视频 | 蜜臀va| 爱情岛论坛自拍 | 欲求不满的岳中文字幕 | 亚洲人亚洲人成电影网站色 | 日本乱淫视频 | 美女的胸给男人玩视频 | 日本免费网站视频 |