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

@PostConstruct注解是Spring提供的?今天講點(diǎn)不一樣的

開發(fā) 架構(gòu)
JSR-250主要圍繞著“資源”的使用預(yù)定義了一些注解(Annotation),這里的“資源”可以理解為一個(gè)Class類的實(shí)例、一個(gè)JavaBean、或者一個(gè)Spring中的Bean。

[[402828]]

本文轉(zhuǎn)載自微信公眾號(hào)「程序新視界」,作者二師兄。轉(zhuǎn)載本文請(qǐng)聯(lián)系程序新視界公眾號(hào)。

前言

我們?cè)谥v《Spring的Lifecycle》時(shí)提到,在Spring的使用中可以通過Lifecycle接口實(shí)現(xiàn)一些基于Spring容器生命周期邏輯。與此對(duì)照的就是通過@PostConstruct和@PreDestroy在Bean初始化或銷毀時(shí)執(zhí)行一些操作。

很明顯Spring的Lifecycle是基于容器的生命周期來處理邏輯,而@PostConstruct和@PreDestroy是基于Bean的生命周期來處理業(yè)務(wù)邏輯。

這里很多朋友就產(chǎn)生了一個(gè)誤解,以為@PostConstruct注解也是Spring提供的。其實(shí)不然,它是Java自帶的注解,下面我們就從頭來聊聊@PostConstruct注解。

JSR-250規(guī)范

在了解@PostConstruct注解之前,我們先來科普一個(gè)概念:JSR-250規(guī)范。

JSR-250主要圍繞著“資源”的使用預(yù)定義了一些注解(Annotation),這里的“資源”可以理解為一個(gè)Class類的實(shí)例、一個(gè)JavaBean、或者一個(gè)Spring中的Bean。

JSR-250相關(guān)的注解全部在javax.annotation和javax.annotation.security包中,包括:資源定義和權(quán)限控制。像我們經(jīng)常用到的@Resource、@PostConstruct、@PreDestroy、@Generated等都屬于這個(gè)規(guī)范中定義的注解。

該規(guī)范并沒有提供具體的實(shí)現(xiàn)方式,僅僅是提供了指導(dǎo)性的文檔和幾個(gè)注解,由具體的框架去實(shí)現(xiàn)。

也就是說,@PostConstruct注解并不是Spring提供的注解,只不過Spring按照J(rèn)SR-250規(guī)范實(shí)現(xiàn)了規(guī)范中對(duì)@PostConstruct的約定。而別的框架,或者你自己寫一個(gè)框架,同樣可以按照約定進(jìn)行實(shí)現(xiàn)。

@PostConstruct的約定

@PostConstruct和@PreDestroy是在Java EE 5引入的,位于javax.annotation包下,也就是java拓展包定義的注解。其中,javax中的x就是extension的意思。Java最初的設(shè)計(jì)者認(rèn)為,這些功能并不是Java核心API,因此就放到了擴(kuò)展包中,誰用誰實(shí)現(xiàn),按照約定就行。

下面直接看看該類上的注解說明:

“PostConstruct注釋用于在依賴關(guān)系注入完成之后需要執(zhí)行的方法上,以執(zhí)行任何初始化。此方法必須在將類放入服務(wù)之前調(diào)用。支持依賴關(guān)系注入的所有類都必須支持此注釋。即使類沒有請(qǐng)求注入任何資源,用PostConstruct注釋的方法也必須被調(diào)用。只有一個(gè)方法可以用此注釋進(jìn)行注釋。”

“應(yīng)用PostConstruct注釋的方法必須遵守以下所有標(biāo)準(zhǔn):

  • 該方法不得有任何參數(shù),除非是在EJB攔截器(interceptor)的情況下,它將帶有一個(gè)InvocationContext對(duì)象;
  • 該方法的返回類型必須為void;
  • 該方法不得拋出已檢查異常;
  • 應(yīng)用PostConstruct的方法可以是public、protected、package private或private;
  • 除了應(yīng)用程序客戶端之外,該方法不能是static;
  • 該方法可以是final;
  • 如果該方法拋出未檢查異常,那么不得將類放入服務(wù)中,除非是能夠處理異常并可從中恢復(fù)的EJB。

除了上述約定,如果用在Servlet容器當(dāng)中,還有有一定的處理時(shí)機(jī)。

@PostConstruct的執(zhí)行時(shí)機(jī)

下面所講的@PostConstruct的執(zhí)行時(shí)機(jī)是基于Spring的實(shí)現(xiàn)來講的。被@PostConstruct修飾的方法會(huì)在服務(wù)器加載Servlet時(shí)運(yùn)行,并且只會(huì)被執(zhí)行一次。PostConstruct在構(gòu)造函數(shù)之后執(zhí)行,init()方法之前執(zhí)行。

對(duì)應(yīng)的流程圖如下:

實(shí)例演示

理解了上面的基本概念,就先來看一個(gè)實(shí)例演示吧,使用起來非常簡(jiǎn)單。

基于Java 8的Spring Boot項(xiàng)目中添加如下類:

  1. @Service 
  2. public class OrderService { 
  3.  
  4.     public OrderService(){ 
  5.         System.out.println("OrderService構(gòu)造方法被執(zhí)行..."); 
  6.     } 
  7.  
  8.     @PostConstruct 
  9.     private void init() { 
  10.         System.out.println("PostConstruct注解方法被調(diào)用"); 
  11.     } 
  12.  
  13.     @PreDestroy 
  14.     private void shutdown() { 
  15.         System.out.println("PreDestroy注解方法被調(diào)用"); 
  16.     } 
  17.  

啟動(dòng)Spring Boot項(xiàng)目,控制臺(tái)打印日志如下:

  1. OrderService構(gòu)造方法被執(zhí)行... 
  2. PostConstruct注解方法被調(diào)用 

當(dāng)關(guān)閉服務(wù)時(shí),會(huì)打印:

  1. PreDestroy注解方法被調(diào)用 

通過實(shí)例,基本印證了上述說的理論。

Java9的以后的移除

在Java 8中我們可以直接使用對(duì)應(yīng)的注解即可,但到Java 9及以后,J2EE棄用了@PostConstruct和@PreDestroy這兩個(gè)注解,并計(jì)劃在Java 11中將其刪除。

針對(duì)這種情況,我們有兩種解決方案:第一添加額外的依賴;第二,換用其他的方式。

第一種方案針對(duì)的是,你非要使用這個(gè)注解,或者說你的項(xiàng)目暫時(shí)沒辦法棄用這兩個(gè)注解。那么,可以手動(dòng)添加依賴:

  1. <dependency> 
  2.     <groupId>javax.annotation</groupId> 
  3.     <artifactId>javax.annotation-api</artifactId> 
  4.     <version>1.3.2</version> 
  5. </dependency> 

也就是說,雖然移除了,但是你把它們的依賴添加上,依舊還是可以用的。但此時(shí)也給我們提了一個(gè)醒兒,在項(xiàng)目中盡量別用這兩個(gè)注解了,Java 11都計(jì)劃將其移除了。

此時(shí),如果你使用的是Spring的項(xiàng)目,則可考慮另外一種方式,基于Spring的InitializingBean和DisposableBean接口來實(shí)現(xiàn)同樣的功能:

  1. @Service 
  2. public class PaymentService implements InitializingBean, DisposableBean { 
  3.  
  4.     public PaymentService(){ 
  5.         System.out.println("PaymentService構(gòu)造方法被執(zhí)行..."); 
  6.     } 
  7.  
  8.     @Override 
  9.     public void destroy() throws Exception { 
  10.         System.out.println("destroy方法被調(diào)用"); 
  11.     } 
  12.  
  13.     @Override 
  14.     public void afterPropertiesSet() throws Exception { 
  15.         System.out.println("afterPropertiesSet方法被調(diào)用"); 
  16.     } 

啟動(dòng)項(xiàng)目,打印日志如下:

  1. PaymentService構(gòu)造方法被執(zhí)行... 
  2. afterPropertiesSet方法被調(diào)用 

停止項(xiàng)目,打印如下信息:

  1. destroy方法被調(diào)用 

也就是說在Spring的生態(tài)中,我們已經(jīng)有替代方案可實(shí)現(xiàn)了,而且是比較推薦的方式。

其實(shí)Spring并沒有遵守約定

在上面的約定中我們講到一個(gè)類中“只有一個(gè)方法可以用此注釋進(jìn)行注釋”,在OrderService中再添加一個(gè)@PostConstruct注解的方法試試:

  1. @Service 
  2. public class OrderService { 
  3.  
  4.     public OrderService(){ 
  5.         System.out.println("OrderService構(gòu)造方法被執(zhí)行..."); 
  6.     } 
  7.  
  8.     @PostConstruct 
  9.     private void init() { 
  10.         System.out.println("PostConstruct注解方法被調(diào)用"); 
  11.     } 
  12.  
  13.     @PostConstruct 
  14.     private void init1() { 
  15.         System.out.println("PostConstruct init1 注解方法被調(diào)用"); 
  16.     } 
  17.  
  18.     @PreDestroy 
  19.     private void shutdown() { 
  20.         System.out.println("PreDestroy注解方法被調(diào)用"); 
  21.     } 
  22.  

啟動(dòng)程序,打印日志:

  1. OrderService構(gòu)造方法被執(zhí)行... 
  2. PostConstruct init1 注解方法被調(diào)用 
  3. PostConstruct注解方法被調(diào)用 

不但沒報(bào)錯(cuò),而且兩個(gè)方法還都執(zhí)行了。這說明什么?這說明約定有時(shí)候就是用來被打破的,記住這一特殊情況就好。

Spring中的實(shí)現(xiàn)原理

以上是對(duì)@PostConstruct的簡(jiǎn)單介紹,下面會(huì)從Spring源碼層面簡(jiǎn)單分析一下實(shí)現(xiàn)原理。

我們先來看一個(gè)Spring的接口BeanPostProcessor:

  1. public interface BeanPostProcessor { 
  2.   
  3.     // 任何Bean實(shí)例化,并且Bean已經(jīng)populated(填充屬性) 就會(huì)回調(diào)這個(gè)方法 
  4.     Object postProcessBeforeInitialization(Object bean, String beanName) throws BeansException; 
  5.   
  6.     // 任何Bean實(shí)例化,并且Bean已經(jīng)populated(填充屬性) 就會(huì)回調(diào)這個(gè)方法 
  7.     Object postProcessAfterInitialization(Object bean, String beanName) throws BeansException; 

BeanPostProcessor是Spring IOC容器給我們提供的一個(gè)擴(kuò)展接口,它兩個(gè)回調(diào)方法。當(dāng)一個(gè)BeanPostProcessor的實(shí)現(xiàn)類注冊(cè)到Spring IOC容器后,對(duì)于該Spring IOC容器所創(chuàng)建的每個(gè)bean實(shí)例在初始化方法(如afterPropertiesSet和任意已聲明的init方法)調(diào)用前,將會(huì)調(diào)用BeanPostProcessor中的postProcessBeforeInitialization方法,而在bean實(shí)例初始化方法調(diào)用完成后,則會(huì)調(diào)用BeanPostProcessor中的postProcessAfterInitialization方法,整個(gè)調(diào)用順序可以簡(jiǎn)單示意如下:

  1. --> Spring IOC容器實(shí)例化Bean 
  2. --> 調(diào)用BeanPostProcessor的postProcessBeforeInitialization方法 
  3. --> 調(diào)用bean實(shí)例的初始化方法 
  4. --> 調(diào)用BeanPostProcessor的postProcessAfterInitialization方法 

而BeanPostProcessor有個(gè)實(shí)現(xiàn)類CommonAnnotationBeanPostProcessor,就是專門處理@PostConstruct和@PreDestroy注解。其中CommonAnnotationBeanPostProcessor的父類InitDestroyAnnotationBeanPostProcessor中,對(duì)應(yīng)的調(diào)用邏輯如下:

  1. InitDestroyAnnotationBeanPostProcessor.postProcessBeforeInitialization() 
  2.     InitDestroyAnnotationBeanPostProcessor.findLifecycleMetadata() 
  3.         // 組裝生命周期元數(shù)據(jù) 
  4.         InitDestroyAnnotationBeanPostProcessor.buildLifecycleMetadata() 
  5.             // 查找@PostConstruct注釋的方法 
  6.             InitDestroyAnnotationBeanPostProcessor.initAnnotationType 
  7.             // 查找@PreDestroy注釋方法 
  8.             InitDestroyAnnotationBeanPostProcessor.destroyAnnotationType 
  9.  // 反射調(diào)用           
  10.  metadata.invokeInitMethods(bean, beanName); 

關(guān)于業(yè)務(wù)邏輯的處理細(xì)節(jié),這里就不再逐一展示,大家感興趣的話可以跟蹤一下源代碼。

小結(jié)

本篇文章我們需要留意幾點(diǎn):第一,Spring只是實(shí)現(xiàn)了Java中對(duì)@PostConstruct注解定義的規(guī)范;第二,該注解在Java 9逐步開始廢棄,不建議再使用;第三,可采用Spring的InitializingBean和DisposableBean來替代對(duì)應(yīng)的功能。

 

責(zé)任編輯:武曉燕 來源: 程序新視界
相關(guān)推薦

2012-12-20 10:17:32

IT運(yùn)維

2012-03-07 17:24:10

戴爾咨詢

2017-05-25 15:02:46

聯(lián)宇益通SD-WAN

2015-10-19 12:33:01

華三/新IT

2016-05-09 18:40:26

VIP客戶緝拿

2021-02-01 06:10:02

springaop機(jī)制開發(fā)

2018-05-09 15:42:24

新零售

2009-12-01 16:42:27

Gentoo Linu

2009-02-04 15:43:45

敏捷開發(fā)PHPFleaPHP

2011-02-28 10:38:13

Windows 8

2009-06-12 15:26:02

2016-03-24 18:51:40

2015-08-25 09:52:36

云計(jì)算云計(jì)算產(chǎn)業(yè)云計(jì)算政策

2013-01-11 18:10:56

軟件

2022-05-05 21:47:32

Linuxls 命令

2019-01-03 14:39:08

Oracle甲骨文ORACLE

2009-07-07 10:44:14

多態(tài)

2015-08-04 14:49:54

Discover

2009-11-26 13:16:25

Open Suse

2018-06-26 11:10:54

UbuntuSUSE紅帽
點(diǎn)贊
收藏

51CTO技術(shù)棧公眾號(hào)

亚洲欧美日韩中文播放| 亚洲香蕉网站| 91精品婷婷国产综合久久性色| 亚洲自拍的二区三区| 亚洲天堂网视频| 黄色成人av网站| 亚洲跨种族黑人xxx| 中文字幕亚洲乱码| 麻豆蜜桃在线| 99精品黄色片免费大全| 国产第一区电影| 久久免费看少妇高潮v片特黄| jizz国产精品| 欧美日韩国产影片| 久久亚洲中文字幕无码| 91在线视频免费看| 不卡av电影在线播放| 国产精品视频资源| 鲁鲁狠狠狠7777一区二区| 中文字幕精品在线播放| 天堂网在线播放| 九九国产精品视频| 欧美自拍大量在线观看| 精品自拍偷拍视频| 国产毛片一区二区三区| 欧美xingq一区二区| 国产情侣av自拍| 国产欧洲在线| 亚洲激情自拍偷拍| 亚洲国产精品毛片| 青草久久伊人| 99久久er热在这里只有精品15 | 亚洲精品在线视频| 色黄视频免费看| 国产91亚洲精品久久久| 狠狠做深爱婷婷久久综合一区| 少妇熟女一区二区| 久久电影中文字幕| 99免费精品在线观看| 51国偷自产一区二区三区 | 亚洲综合第一区| 天堂一区二区三区四区| 精品处破学生在线二十三| 911av视频| 国产精品伦一区二区| 色偷偷久久人人79超碰人人澡| av在线播放亚洲| 伊人精品影院| 亚洲精品videosex极品| 欧美日韩一区二区三区电影| 欧美尤物美女在线| 国产精品三级视频| 亚洲春色综合另类校园电影| 国产免费av高清在线| 91天堂素人约啪| 蜜桃av久久久亚洲精品| 日韩porn| 久久精品日韩一区二区三区| 欧洲一区二区在线| 理论视频在线| 国产欧美日韩视频在线观看| 日韩中文字幕一区| av在线资源网| 亚洲欧洲日本在线| 99久re热视频精品98| 麻豆传媒视频在线| 亚洲乱码国产乱码精品精98午夜| 99热这里只有精品7| 日韩另类在线| 亚洲777理论| 日本福利视频在线| 色老太综合网| 欧美日韩www| 三级黄色片免费看| 国产乱人伦精品一区| 亚洲精品ady| 亚洲v国产v欧美v久久久久久| 精品国产一区二区三区久久久蜜臀| 国产一区二区久久精品| 91ts人妖另类精品系列| 欧美激情四色| 97超碰色婷婷| 亚洲午夜精品久久久| 国产在线一区二区| 国产精品一区二区免费看| 水莓100在线视频| 国产免费久久精品| 最近免费观看高清韩国日本大全| 爱情岛亚洲播放路线| 一本高清dvd不卡在线观看 | 国产福利一区二区三区在线视频| 国产精品成人观看视频免费| 男男激情在线| 国产精品久久久久9999吃药| 免费人成自慰网站| 色婷婷综合久久久中字幕精品久久| 精品视频一区三区九区| 精品久久久久一区二区| 日本道不卡免费一区| 欧美国产在线视频| 中文字幕有码无码人妻av蜜桃| 国产精选一区二区三区| 欧美精品亚洲| 欧美野外wwwxxx| 欧美图片一区二区三区| 韩国三级视频在线观看| 日本一本不卡| 91av在线国产| 国产女人18毛片18精品| 久久久亚洲国产美女国产盗摄| 自拍偷拍一区二区三区| 在线成人av观看| 日韩欧美国产精品一区| 国产精品美女高潮无套| 在线观看视频日韩| 国产欧美一区二区三区在线看| 欧美天堂在线视频| 亚洲视频你懂的| 日本xxxxxxx免费视频| 91久久偷偷做嫩草影院电| 中文字幕免费精品一区| 特级西西444www大精品视频免费看| 国产伦理精品不卡| 少妇免费毛片久久久久久久久 | 日韩aaaaa| 亚洲国产精品91| 国产精品视频999| 天堂中文资源在线| 亚洲综合免费观看高清完整版在线| 特级丰满少妇一级| 国产99久久| 91极品女神在线| 黑人精品一区二区三区| 亚洲精品高清视频在线观看| 五月天婷婷亚洲| 精品久久美女| 国产精品成人一区二区| 四虎精品在线| 欧美日韩中文字幕日韩欧美| 国产高清成人久久| 亚洲精品1区2区| 国产美女精品在线观看| 丝袜在线观看| 日韩精品一区二区三区视频播放| 久久久久久久麻豆| 久久99久久99小草精品免视看| 日韩欧美在线观看强乱免费| 欧美大胆性生话| 亚洲人午夜色婷婷| 久久久成人免费视频| 久久免费午夜影院| 国模吧无码一区二区三区| 图片婷婷一区| 欧美最猛性xxxxx免费| 日本大臀精品| 在线视频一区二区三| www..com.cn蕾丝视频在线观看免费版| 久久国产精品久久w女人spa| 欧洲亚洲一区二区| 久久爱.com| 日韩视频免费观看| 99在线小视频| 亚洲一区二区三区自拍| 在线黄色免费网站| 久久xxxx精品视频| 午夜精品亚洲一区二区三区嫩草| 国产伊人久久| 欧美成人亚洲成人日韩成人| 午夜精品久久久久久久96蜜桃| 亚洲一二三专区| 91av在线免费| 免费观看在线色综合| 天堂av免费看| 国产+成+人+亚洲欧洲在线| 7m精品福利视频导航| 国产在线91| 91精品免费观看| 日本在线视频免费| 国产欧美一区二区精品婷婷| 天天看片天天操| 亚洲午夜极品| 欧洲精品码一区二区三区免费看| 国产麻豆一区| 91禁外国网站| 丝袜美腿美女被狂躁在线观看| 欧美一级二级三级蜜桃| 久久久久久久久久影院| 国产精品久99| 亚洲成人av免费在线观看| 久久久久久久波多野高潮日日| 亚洲视频电影| 国产精品调教视频| 国产精品欧美日韩一区二区| 欧洲在线视频| 中文字幕久久久| 污污视频在线观看网站| 欧美日韩国产一区二区三区地区| 国产大片中文字幕| 国产欧美日韩三级| 精品国产免费久久久久久婷婷| 天堂一区二区在线| 国产黄色激情视频| 成人一区而且| 久久av二区| 婷婷综合国产| 国产精品天天狠天天看| h片在线观看视频免费免费| 中文国产亚洲喷潮| 欧美一级特黄aaaaaa大片在线观看| 在线观看视频一区二区| 国产精品111| 亚洲视频一区二区在线| 黄色aaa视频| 成人综合在线视频| 午夜激情影院在线观看| 日韩中文欧美在线| 91精品国产91久久久久麻豆 主演| 91久久夜色精品国产按摩| 精品欧美日韩在线| 欧洲精品99毛片免费高清观看 | 国产精品亚洲欧美日韩一区在线| 青青草99啪国产免费| 男人天堂亚洲| 美女av一区二区| 网友自拍视频在线| 亚洲日韩欧美视频一区| 无码精品视频一区二区三区 | 99久久影视| 蜜桃麻豆www久久国产精品| 中文字幕久久精品一区二区| 成人美女免费网站视频| 777午夜精品电影免费看| 久久久久久久av| 国模私拍视频在线播放| 欧美xxxx综合视频| 91大神在线网站| 在线看福利67194| 黄色视屏网站在线免费观看| 亚洲精品成人网| 亚洲a视频在线观看| 日韩亚洲欧美成人一区| 国产美女自慰在线观看| 宅男噜噜噜66一区二区66| 91精品在线视频观看| 欧美男女性生活在线直播观看| 中文字幕码精品视频网站| 欧美亚洲自拍偷拍| 中文字幕日韩经典| 欧美日韩国产三级| 国产一区二区在线视频观看| 欧美欧美欧美欧美首页| 91尤物国产福利在线观看| 欧美日韩1234| 国产av无码专区亚洲av| 欧美一级淫片007| 亚洲精品国产精品国| 精品国产精品网麻豆系列| 欧美 日韩 国产 精品| 日韩高清有码在线| 色视频免费在线观看| 亚洲欧美国产精品专区久久| 国产小视频在线观看| 最新亚洲国产精品| 超碰在线观看免费版| 欧美国产欧美亚洲国产日韩mv天天看完整 | 亚洲精品美女久久7777777| 久久裸体网站| 日韩中文字幕在线不卡| 亚洲高清毛片| 男人透女人免费视频| 久久er99精品| 4438x全国最大成人| 91香蕉视频mp4| www成人啪啪18软件| 亚洲精品乱码久久久久久黑人 | 欧美精品黑人猛交高潮| 久久精品亚洲一区二区三区浴池| www.4hu95.com四虎| 亚洲免费视频成人| 国产乡下妇女做爰毛片| 欧美午夜精品久久久久久人妖| 亚洲精品国产精品乱码视色| 欧美一级在线视频| 四虎精品成人免费网站| 精品国内产的精品视频在线观看| 欧美卡一卡二| 国产成人精品免费久久久久| 国产午夜久久av| 久久婷婷人人澡人人喊人人爽| 精品午夜久久| 隔壁人妻偷人bd中字| 日韩综合一区二区| 无码国产精品一区二区高潮| 久久精品亚洲乱码伦伦中文| 极品久久久久久| 欧美性猛xxx| 精品免费久久久| 亚洲人午夜精品| xxx在线免费观看| 国产伦精品免费视频| 精品亚洲自拍| 中文字幕在线乱| 日本视频一区二区| 制服丝袜第一页在线观看| 中文字幕免费不卡| 日本三级理论片| 91麻豆精品91久久久久久清纯| 你懂的在线看| 久久久久久久久久久91| 国产一区影院| 欧美一区二区三区四区在线观看地址| 午夜视频一区| 91精品999| 国产欧美精品国产国产专区| 日韩精品乱码久久久久久| 4438x成人网最大色成网站| av女名字大全列表| 欧美高清第一页| 亚洲青青一区| 亚洲 国产 欧美一区| 国产亚洲一级| 中国免费黄色片| 亚洲黄色小说网站| 91欧美日韩麻豆精品| 国产亚洲精品高潮| 涩涩视频在线免费看| 国产伦精品一区二区三毛| 欧美电影《睫毛膏》| www.99av.com| 国产午夜亚洲精品不卡| 亚洲欧美综合另类| 亚洲国产成人爱av在线播放| 久久99亚洲网美利坚合众国| 亚洲一区二区三区成人在线视频精品| 青青草91久久久久久久久| 妓院一钑片免看黄大片| www激情久久| 久久精品视频1| 亚洲精品日韩欧美| 少妇淫片在线影院| 九色综合婷婷综合| 一区二区毛片| 国产精品探花一区二区在线观看| 午夜精品一区在线观看| 免费观看毛片网站| 久久久久久久一区二区| 96sao在线精品免费视频| 4444亚洲人成无码网在线观看| 国产高清亚洲一区| 久久久久成人精品无码| 精品第一国产综合精品aⅴ| 男人av在线播放| 欧美成人在线免费观看| 日韩精品免费视频人成| 一级在线观看视频| 欧美日韩国产高清一区二区 | 国产精品日韩精品中文字幕| 日韩精品一区中文字幕| 久久久噜噜噜久噜久久综合| www.亚洲激情| 日韩在线中文视频| 久久中文字幕一区二区| 妺妺窝人体色www看人体| www.亚洲人| 久久国产乱子伦精品| 中文字幕欧美日韩| www 久久久| 久久视频这里有精品| 久久久综合精品| 一级黄在线观看| 欧美激情在线有限公司| 老司机在线精品视频| 成人午夜激情av| 亚洲三级在线免费观看| 人妻少妇精品无码专区| 日本高清不卡在线| 青青草综合网| 无码人妻一区二区三区一| 精品国产乱码久久久久酒店| 大胆av不用播放器在线播放| 91天堂在线视频| 亚洲精品欧洲| 美国黄色特级片| 日韩精品一区在线| 日韩伦理三区| 中文字幕精品在线播放| 91视频国产资源| 91国内精品视频| 欧美在线视频免费| 水蜜桃精品av一区二区| 日本美女视频网站| 欧美亚洲一区二区在线| 日本高清在线观看视频| 日本一区免费看| 国产宾馆实践打屁股91| 成人毛片一区二区三区| 久久久噜噜噜久久| 欧美艳星介绍134位艳星| 女性生殖扒开酷刑vk| 欧美性大战久久|