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

你真的確定Spring AOP的執(zhí)行順序嗎

開發(fā) 前端
公司新項(xiàng)目需要搭建一個(gè)新的前后分離HTTP服務(wù),我選擇了目前比較熟悉的SpringBoot Web來(lái)快速搭建一個(gè)可用的系統(tǒng)。

 [[346655]]

前言

公司這兩個(gè)月啟動(dòng)了全新的項(xiàng)目,項(xiàng)目排期滿滿當(dāng)當(dāng),不過(guò)該學(xué)習(xí)還是要學(xué)習(xí)。這不,給公司搭項(xiàng)目的時(shí)候,。

本文內(nèi)容重點(diǎn):

  • 問題描述
  • Spring AOP執(zhí)行順序
  • 探究順序錯(cuò)誤的真相
  • 代碼驗(yàn)證
  • 結(jié)論

問題描述

公司新項(xiàng)目需要搭建一個(gè)新的前后分離HTTP服務(wù),我選擇了目前比較熟悉的SpringBoot Web來(lái)快速搭建一個(gè)可用的系統(tǒng)。

魯迅說(shuō)過(guò),不要隨便升級(jí)已經(jīng)穩(wěn)定使用的版本。我偏不信這個(gè)邪,仗著自己用了這么久Spring,怎么能不沖呢。不說(shuō)了,直接引入了最新的SprinBoot 2.3.4.RELEASE版本,開始給項(xiàng)目搭架子。

起初,大多數(shù)的組件引入都一切順利,本以為就要大功告成了,沒想到在搭建日志切面時(shí)栽了跟頭。

作為一個(gè)接口服務(wù),為了方便查詢接口調(diào)用情況和定位問題,一般都會(huì)將請(qǐng)求日志打印出來(lái),而Spring的AOP作為切面支持,完美的切合了日志記錄的需求。

之前的項(xiàng)目中,運(yùn)行正確的切面日志記錄效果如下圖:

 

可以看到圖內(nèi)的一次方法調(diào)用,會(huì)輸出請(qǐng)求url,出入?yún)ⅲ约罢?qǐng)求IP等等,之前為了好看,還加入了分割線。

我把這個(gè)實(shí)現(xiàn)類放入新項(xiàng)目中,執(zhí)行出來(lái)卻是這樣的:

 

我揉了揉眼睛,仔細(xì)看了看復(fù)制過(guò)來(lái)的老代碼,精簡(jiǎn)版如下:

  1. /** 
  2.  * 在切點(diǎn)之前織入 
  3.  * @param joinPoint 
  4.  * @throws Throwable 
  5.  */ 
  6. @Before("webLog()"
  7. public void doBefore(JoinPoint joinPoint) throws Throwable { 
  8.     // 開始打印請(qǐng)求日志 
  9.     ServletRequestAttributes attributes = (ServletRequestAttributes) RequestContextHolder.getRequestAttributes(); 
  10.     HttpServletRequest request = attributes.getRequest(); 
  11.  
  12.     // 初始化traceId 
  13.     initTraceId(request); 
  14.  
  15.     // 打印請(qǐng)求相關(guān)參數(shù) 
  16.     LOGGER.info("========================================== Start =========================================="); 
  17.     // 打印請(qǐng)求 url 
  18.     LOGGER.info("URL            : {}", request.getRequestURL().toString()); 
  19.     // 打印 Http method 
  20.     LOGGER.info("HTTP Method    : {}", request.getMethod()); 
  21.     // 打印調(diào)用 controller 的全路徑以及執(zhí)行方法 
  22.     LOGGER.info("Class Method   : {}.{}", joinPoint.getSignature().getDeclaringTypeName(), joinPoint.getSignature().getName()); 
  23.     // 打印請(qǐng)求的 IP 
  24.     LOGGER.info("IP             : {}", IPAddressUtil.getIpAdrress(request)); 
  25.     // 打印請(qǐng)求入?yún)?nbsp;
  26.     LOGGER.info("Request Args   : {}", joinPoint.getArgs()); 
  27.  
  28. /** 
  29.  * 在切點(diǎn)之后織入 
  30.  * @throws Throwable 
  31.  */ 
  32. @After("webLog()"
  33. public void doAfter() throws Throwable { 
  34.     LOGGER.info("=========================================== End ==========================================="); 
  35.  
  36. /** 
  37.  * 環(huán)繞 
  38.  * @param proceedingJoinPoint 
  39.  * @return 
  40.  * @throws Throwable 
  41.  */ 
  42. @Around("webLog()"
  43. public Object doAround(ProceedingJoinPoint proceedingJoinPoint) throws Throwable { 
  44.     long startTime = System.currentTimeMillis(); 
  45.     Object result = proceedingJoinPoint.proceed(); 
  46.     // 打印出參 
  47.     LOGGER.info("Response Args  : {}", result); 
  48.     // 執(zhí)行耗時(shí) 
  49.     LOGGER.info("Time-Consuming : {} ms", System.currentTimeMillis() - startTime); 
  50.     return result; 

代碼感覺完全沒有問題,難道新版本的SpringBoot出Bug了。

顯然,成熟的框架不會(huì)在這種大方向上犯錯(cuò)誤,那會(huì)不會(huì)是新版本的SpringBoot把@After和@Around的順序反過(guò)來(lái)了?

其實(shí)事情也沒有那么簡(jiǎn)單。

Spring AOP執(zhí)行順序

我們先來(lái)回顧下Spring AOP執(zhí)行順序。

我們?cè)诰W(wǎng)上查找關(guān)于SpringAop執(zhí)行順序的的資料,大多數(shù)時(shí)候,你會(huì)查到如下的答案:

正常情況

 

異常情況

 

多個(gè)切面的情況

 

所以@Around理應(yīng)在@After之前,但是在SprinBoot 2.3.4.RELEASE版本中,@Around切切實(shí)實(shí)執(zhí)行在了@After之后。

當(dāng)我嘗試切換回2.2.5.RELEASE版本后,執(zhí)行順序又回到了@Around-->@After

探究順序錯(cuò)誤的真相

既然知道了是SpringBoot版本升級(jí)導(dǎo)致的問題(或者說(shuō)順序變化),那么就要來(lái)看看究竟是哪個(gè)庫(kù)對(duì)AOP執(zhí)行的順序進(jìn)行了變動(dòng),畢竟,SpringBoot只是“形”,真正的內(nèi)核在Spring。

我們打開pom.xml文件,使用插件查看spring-aop的版本,發(fā)現(xiàn)SpringBoot 2.3.4.RELEASE 版本使用的AOP是spring-aop-5.2.9.RELEASE。

而2.2.5.RELEASE對(duì)應(yīng)的是spring-aop-5.2.4.RELEASE

于是我去官網(wǎng)搜索文檔,不得不說(shuō)Spring由于過(guò)于龐大,官網(wǎng)的文檔已經(jīng)到了冗雜的地步,不過(guò)最終還是找到了:

https://docs.spring.io/spring-framework/docs/5.2.9.RELEASE/spring-framework-reference/core.html#aop-ataspectj-advice-ordering

 

As of Spring Framework 5.2.7, advice methods defined in the same @Aspect class that need to run at the same join point are assigned precedence based on their advice type in the following order, from highest to lowest precedence: @Around, @Before, @After, @AfterReturning, @AfterThrowing.

我粗淺的翻譯一下重點(diǎn):

從Spring5.2.7開始,在相同@Aspect類中,通知方法將根據(jù)其類型按照從高到低的優(yōu)先級(jí)進(jìn)行執(zhí)行:@Around,@Before ,@After,@AfterReturning,@AfterThrowing。

這樣看其實(shí)對(duì)比不明顯,我們?cè)倩氐嚼习姹荆簿褪?.2.5.RELEASE對(duì)應(yīng)的spring-aop-5.2.4.RELEASE,當(dāng)時(shí)的文檔是這么寫的:

What happens when multiple pieces of advice all want to run at the same join point? Spring AOP follows the same precedence rules as AspectJ to determine the order of advice execution. The highest precedence advice runs first "on the way in" (so, given two pieces of before advice, the one with highest precedence runs first). "On the way out" from a join point, the highest precedence advice runs last (so, given two pieces of after advice, the one with the highest precedence will run second).

簡(jiǎn)單翻譯:在相同@Aspect類中Spring AOP遵循與AspectJ相同的優(yōu)先級(jí)規(guī)則來(lái)確定advice執(zhí)行的順序。

再挖深一點(diǎn),那么AspectJ的優(yōu)先級(jí)規(guī)則是什么樣的?

我找了AspectJ的文檔:

https://www.eclipse.org/aspectj/doc/next/progguide/semantics-advice.html

 

At a particular join point, advice is ordered by precedence.

A piece of around advice controls whether advice of lower precedence will run by calling proceed. The call to proceed will run the advice with next precedence, or the computation under the join point if there is no further advice.

A piece of before advice can prevent advice of lower precedence from running by throwing an exception. If it returns normally, however, then the advice of the next precedence, or the computation under the join pint if there is no further advice, will run.

Running after returning advice will run the advice of next precedence, or the computation under the join point if there is no further advice. Then, if that computation returned normally, the body of the advice will run.

Running after throwing advice will run the advice of next precedence, or the computation under the join point if there is no further advice. Then, if that computation threw an exception of an appropriate type, the body of the advice will run.

Running after advice will run the advice of next precedence, or the computation under the join point if there is no further advice. Then the body of the advice will run.

大伙又要說(shuō)了,哎呀太長(zhǎng)不看!簡(jiǎn)短地說(shuō),Aspectj的規(guī)則就是上面我們能夠在網(wǎng)上查閱到的順序圖展示的那樣,依舊是老的順序。

代碼驗(yàn)證

我把業(yè)務(wù)邏輯從代碼中刪除,只驗(yàn)證下這幾個(gè)advice的執(zhí)行順序:

  1. /** 
  2.  * 日志切面 
  3.  */ 
  4. @Aspect 
  5. @Component 
  6. public class WebLogAspect { 
  7.  
  8.     private final static Logger LOGGER = LoggerFactory.getLogger(WebLogAspect.class); 
  9.  
  10.     /** 以 controller 包下定義的所有請(qǐng)求為切入點(diǎn) */ 
  11.     @Pointcut("execution(public * com.xx.xxx.xxx.controller..*.*(..))"
  12.     public void webLog() {} 
  13.  
  14.     /** 
  15.      * 在切點(diǎn)之前織入 
  16.      * @param joinPoint 
  17.      * @throws Throwable 
  18.      */ 
  19.     @Before("webLog()"
  20.     public void doBefore(JoinPoint joinPoint) throws Throwable { 
  21.         LOGGER.info("-------------doBefore-------------"); 
  22.     } 
  23.  
  24.     @AfterReturning("webLog()"
  25.     public void afterReturning() { 
  26.         LOGGER.info("-------------afterReturning-------------"); 
  27.     } 
  28.     @AfterThrowing("webLog()"
  29.     public void afterThrowing() { 
  30.         LOGGER.info("-------------afterThrowing-------------"); 
  31.     } 
  32.  
  33.     /** 
  34.      * 在切點(diǎn)之后織入 
  35.      * @throws Throwable 
  36.      */ 
  37.     @After("webLog()"
  38.     public void doAfter() throws Throwable { 
  39.         LOGGER.info("-------------doAfter-------------"); 
  40.     } 
  41.  
  42.     /** 
  43.      * 環(huán)繞 
  44.      * @param proceedingJoinPoint 
  45.      * @return 
  46.      * @throws Throwable 
  47.      */ 
  48.     @Around("webLog()"
  49.     public Object doAround(ProceedingJoinPoint proceedingJoinPoint) throws Throwable { 
  50.         long startTime = System.currentTimeMillis(); 
  51.         LOGGER.info("-------------doAround before proceed-------------"); 
  52.         Object result = proceedingJoinPoint.proceed(); 
  53.         LOGGER.info("-------------doAround after proceed-------------"); 
  54.         return result; 
  55.     } 

我們將版本改為2.2.5.RELEASE,結(jié)果如圖:

 

我們將版本改為2.3.4.RELEASE,結(jié)果如圖:

 

結(jié)論

經(jīng)過(guò)上面的資料文檔查閱,我能給出的結(jié)論是:

從Spring5.2.7開始,Spring AOP不再嚴(yán)格按照AspectJ定義的規(guī)則來(lái)執(zhí)行advice,而是根據(jù)其類型按照從高到低的優(yōu)先級(jí)進(jìn)行執(zhí)行:@Around,@Before ,@After,@AfterReturning,@AfterThrowing。

這次的研究思考十分倉(cāng)促,如果結(jié)論有誤請(qǐng)大家踴躍指正,也歡迎大家自己嘗試,畢竟口說(shuō)無(wú)憑,實(shí)驗(yàn)室檢驗(yàn)真理的唯一標(biāo)準(zhǔn)!

參考

https://www.cnblogs.com/dennyLee2025/p/13724981.html

 

https://segmentfault.com/a/1190000011283029

本文轉(zhuǎn)載自微信公眾號(hào)「后端技術(shù)漫談」,可以通過(guò)以下二維碼關(guān)注。轉(zhuǎn)載本文請(qǐng)聯(lián)系后端技術(shù)漫談公眾號(hào)。

 

責(zé)任編輯:武曉燕 來(lái)源: 后端技術(shù)漫談
相關(guān)推薦

2012-03-01 11:20:45

2016-04-20 09:49:25

網(wǎng)絡(luò)測(cè)試網(wǎng)絡(luò)優(yōu)化

2022-02-16 13:46:40

Spring Aop代碼注解

2016-01-07 11:18:50

用戶畫像

2024-04-19 13:17:40

PostgreSQLSQL數(shù)據(jù)庫(kù)

2016-06-01 15:42:58

Hadoop數(shù)據(jù)管理分布式

2025-01-07 09:16:16

2023-12-27 14:04:00

Spring框架參數(shù)

2020-04-17 14:25:22

Kubernetes應(yīng)用程序軟件開發(fā)

2014-04-17 16:42:03

DevOps

2022-07-26 00:00:22

HTAP系統(tǒng)數(shù)據(jù)庫(kù)

2025-08-06 08:53:35

2021-02-01 13:59:47

比特幣區(qū)塊鏈安全

2024-01-08 08:45:07

Spring容器Bean

2022-09-22 14:55:31

前端JavaScripthis

2022-09-26 13:10:17

JavaScriptthis

2025-01-03 08:09:15

2021-06-08 11:15:10

Redis數(shù)據(jù)庫(kù)命令

2021-01-15 07:44:21

SQL注入攻擊黑客

2021-11-09 09:48:13

Logging python模塊
點(diǎn)贊
收藏

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

国产极品一区二区| 亚洲mm色国产网站| 欧美 日韩 国产 成人 在线观看| 成人勉费视频| 亚洲欧美另类小说| 久久影视中文粉嫩av| 久久久国产免费| 中文字幕免费一区二区| 亚洲激情视频网站| www午夜视频| av影院在线免费观看| 久久久久久麻豆| 91理论片午午论夜理片久久| 91美女免费看| 亚洲精品国产首次亮相| 亚洲欧美日韩中文在线制服| 肉色超薄丝袜脚交| 成人欧美一区二区三区的电影| 亚洲男人的天堂av| 色女人综合av| 婷婷丁香花五月天| 狠狠色丁香久久婷婷综合_中 | 宅男网站在线免费观看| 久久蜜桃一区二区| 国产厕所精品在线观看| 91亚洲国产成人精品一区| 久久成人一区| 久久人人爽国产| 五月综合色婷婷| 精品一区二区三区中文字幕老牛| 亚洲第一网站免费视频| 肉色超薄丝袜脚交| 久久久加勒比| 在线中文字幕一区| 欧美大片在线播放| 蜜臀av在线播放| 亚洲欧美日韩国产另类专区 | 国产在线不卡av| 国产精品视频首页| 欧美欧美欧美欧美| 亚洲不卡视频在线| 性感美女一区二区在线观看| 亚洲www啪成人一区二区麻豆| 91精品国产吴梦梦| 麻豆网站在线| 综合分类小说区另类春色亚洲小说欧美 | 九九九久久久久久| 91插插插插插插| 91欧美大片| 日韩视频中文字幕| 久久久久人妻一区精品色| 成人在线免费小视频| 国产一区二区三区在线观看视频| 深爱五月激情网| 亚洲高清极品| 亚洲天堂成人在线视频| 不卡一区二区在线观看| 日韩美女国产精品| 日韩av在线播放资源| 日韩av一二区| 自拍亚洲一区| 在线国产精品视频| ass极品国模人体欣赏| 久久精品国产亚洲夜色av网站 | 精品久久免费看| 无码人妻精品一区二区三| 国产精品一线| 日韩精品电影网| 51妺嘿嘿午夜福利| 日韩精品免费一区二区三区| 久久精品精品电影网| 欧美爱爱免费视频| 国产精品magnet| 性欧美亚洲xxxx乳在线观看| 好看的av在线| 蜜臀a∨国产成人精品| 91久久久国产精品| 懂色av成人一区二区三区| 91视频国产观看| 91精品国产色综合久久不卡蜜臀| 国产欧美日韩综合一区在线观看 | 黄色成人在线看| 丝袜美腿诱惑一区二区三区| 欧美日韩情趣电影| 免费观看一区二区三区| 西瓜成人精品人成网站| 日韩一区二区av| 日本学生初尝黑人巨免费视频| 久久久久国产精品一区二区 | 免费观看精品视频| 国产一区影院| 精品国产自在久精品国产| 粉嫩av懂色av蜜臀av分享| 国产精品免费大片| 欧美大成色www永久网站婷| 国产黄色片免费看| 精品系列免费在线观看| 激情五月综合色婷婷一区二区| avtt在线播放| 精品久久久久久中文字幕| 国产精品入口免费软件| 视频一区中文字幕精品| 夜夜嗨av一区二区三区四区| 精品人妻在线播放| 久久99国产精品麻豆| 久久精品第九区免费观看| 欧美人xxx| 精品久久久久久久久国产字幕| 九九久久久久久| 免费精品国产| 欧美激情亚洲精品| 亚洲在线观看av| 2023国产精品| 日本午夜激情视频| 国产精品一级在线观看| 一区二区三区视频在线| 91视频免费网址| 成人动漫av在线| 一区二区在线中文字幕电影视频| 午夜不卡影院| 精品国产凹凸成av人网站| 看黄色录像一级片| 日本亚洲欧美天堂免费| 久久偷窥视频| 91福利在线免费| 欧美一级在线视频| 日韩黄色中文字幕| 日韩精品乱码免费| 蜜桃网站成人| 九色porny自拍视频在线观看| 日韩一区二区三区av| www成人啪啪18软件| 热久久免费视频| 欧美激情国产日韩| 无遮挡爽大片在线观看视频 | 丝袜美腿美女被狂躁在线观看| 欧美性xxxxxxxxx| 菠萝菠萝蜜网站| 亚洲经典三级| 国产伦精品一区二区三区四区免费| www视频在线看| 欧美一区在线视频| 天天综合天天做| 狠狠色综合播放一区二区| 正在播放一区| 久久久久九九精品影院| 日韩在线播放视频| 国产精品自产拍| 椎名由奈av一区二区三区| www,av在线| 欧美在线不卡| av色综合网| 爱情岛亚洲播放路线| 亚洲福利视频专区| 伊人久久综合视频| 久久先锋资源网| 欧美精品aaaa| 国产精品久久久久久久久妇女| 成人久久18免费网站图片| 成人免费看片| 精品国产乱码久久久久久闺蜜| 久久久国产精华液| 成人av网在线| 激情综合网婷婷| 成人写真视频| 成人看片人aa| 国内在线视频| 亚洲美女av网站| 日本一区二区三区久久| 亚洲天天做日日做天天谢日日欢| 91丝袜超薄交口足| 亚洲黄色免费| 亚洲国产一区二区精品视频 | 深夜福利影院在线观看| 99视频热这里只有精品免费| 成人黄色一区二区| 欧美fxxxxxx另类| 精品一区二区不卡| 国产69精品久久久久按摩| 久久精品国产99国产精品澳门| 风流老熟女一区二区三区| 日韩欧美大尺度| 激情综合丁香五月| 奇米色777欧美一区二区| 国产欧美自拍视频| 性欧美lx╳lx╳| 91精品免费看| av女在线播放| 丝袜情趣国产精品| 日韩一级片免费看| 欧美老年两性高潮| 欧美一级片免费在线观看| 国产精品久久久久9999吃药| 亚洲av午夜精品一区二区三区| 久久亚洲欧美| 丁香六月激情网| 欧美freesextv| 精品无人区一区二区三区| 综合欧美精品| 日本韩国在线不卡| 日本片在线观看| 中文字幕日韩综合av| 日本精品久久久久久| 欧美高清性hdvideosex| 亚洲第一网站在线观看| 亚洲午夜av在线| 午夜国产福利一区二区| 国产清纯在线一区二区www| 亚洲一区二区三区四区av| 九九视频精品免费| 日日摸天天爽天天爽视频| 精品91久久久久| 裸体大乳女做爰69| av中字幕久久| 国产精品久久久一区二区三区| 欧美网站免费| 国产成人欧美在线观看| 久久影院午夜精品| 久久久久久久国产精品| 黄色在线视频网站| 色系列之999| caoporn国产精品免费视频| 精品一区电影国产| 神马午夜电影一区二区三区在线观看 | 97超级碰在线看视频免费在线看| 巨大荫蒂视频欧美另类大| 在线观看久久av| 美州a亚洲一视本频v色道| 亚洲精品久久久久久下一站 | a级片在线免费看| 在线成人小视频| 97caocao| 91精品国产手机| 国产视频www| 欧美高清视频不卡网| ,一级淫片a看免费| 欧美性xxxxxxxx| 又污又黄的网站| 欧美日韩卡一卡二| 在线观看亚洲一区二区| 欧美少妇一区二区| 在线观看国产精品入口男同| 欧美视频中文字幕| 亚洲天堂手机在线| 欧美高清视频一二三区| 国产成人av免费看| 欧美草草影院在线视频| 欧美性猛交 xxxx| 亚洲国产欧美日韩精品| 天堂91在线| 亚洲色图17p| 69视频在线| 久久综合国产精品台湾中文娱乐网| 色欧美激情视频在线| 久久综合久久88| 大桥未久在线播放| 欧美一级高清免费播放| free欧美| 国产精品露脸av在线| 最新亚洲国产| 国产精品我不卡| 秋霞影视一区二区三区| 欧美综合77777色婷婷| 国产精品久久久久9999赢消| 精品人妻大屁股白浆无码| 国产日韩亚洲| 色噜噜狠狠一区二区| 国产精品自在在线| 漂亮人妻被黑人久久精品| 国产丝袜欧美中文另类| 蜜臀久久精品久久久用户群体| 亚洲成a人在线观看| 四虎成人在线观看| 欧美日韩不卡一区二区| www久久久com| 亚洲欧美激情精品一区二区| 五月天婷婷在线视频| 欧美高清视频在线观看| 亚洲插插视频| 国产欧美日韩高清| 国产香蕉精品| 亚洲精品久久区二区三区蜜桃臀 | 欧美又黄又嫩大片a级| 不卡的av中国片| 一级黄色毛毛片| 亚洲午夜精品网| 一二三区中文字幕| 亚洲国产古装精品网站| 日本激情视频在线观看| 97福利一区二区| 国产精品色婷婷在线观看| 欧美日本国产精品| 欧美人成网站| 中文久久久久久| 99精品在线免费| 加勒比婷婷色综合久久| 色94色欧美sute亚洲线路二| 亚洲爆乳无码一区二区三区| 在线观看日韩视频| 欧美13videosex性极品| 成人www视频在线观看| 中文字幕伦av一区二区邻居| 日本天堂免费a| 蜜桃精品在线观看| 日韩 中文字幕| 亚洲欧美日韩一区| 中文字幕乱码一区二区| 日韩高清免费观看| 人妖欧美1区| 91麻豆桃色免费看| 欧美特黄一级大片| 精品人妻一区二区三区四区在线 | 我不卡一区二区| 精品久久久精品| 成人福利小视频| 久久精品一区中文字幕| 91av一区| 日本欧美色综合网站免费| 国产精品美女久久久| 性欧美18—19sex性高清| 亚洲精品成人天堂一二三| 一级黄色片在线播放| 一本大道亚洲视频| 欧美大电影免费观看| 久久久久高清| 99精品国产一区二区青青牛奶| 亚洲v在线观看| 亚洲精品视频自拍| 99精品在线视频观看| 久久婷婷国产麻豆91天堂| 粉嫩av一区二区三区四区五区| 欧美日韩亚洲综合一区二区三区激情在线 | 91福利免费视频| 中文字幕av日韩| 国产私拍福利精品视频二区| 欧美性bbwbbwbbwhd| 久久亚洲欧美| 美国黄色特级片| 欧美日韩一区二区电影| 日韩精品黄色| 成人免费视频在线观看超级碰| 久久国产电影| 91亚洲一区二区| 一区二区在线观看视频| 黄色美女一级片| 午夜精品久久久久久久久久久久久| 精品国产一区二区三区成人影院| av在线播放亚洲| 久久网站最新地址| 亚洲大尺度在线观看| 中国china体内裑精亚洲片| 久久久久黄色| 超薄肉色丝袜足j调教99| 国产宾馆实践打屁股91| 在线免费观看毛片| 日韩风俗一区 二区| 欧美大片高清| 中文精品视频一区二区在线观看| 国产精品123区| 日本一区二区三区四区五区| 日韩高清欧美高清| 国产69精品久久久久9999人| 日本一区二区三区四区五区六区| 国产成+人+日韩+欧美+亚洲| 91午夜视频在线观看| 国产一级揄自揄精品视频| 久久人人视频| 草草视频在线免费观看| 26uuu国产在线精品一区二区| 成人毛片一区二区三区| 久久亚洲国产精品成人av秋霞| 98视频精品全部国产| 蜜臀av午夜一区二区三区| 国产精品国产三级国产三级人妇| 国产按摩一区二区三区| 18久久久久久| 国产精品成人a在线观看| 亚洲国产精品第一页| 日本韩国欧美三级| 91麻豆国产福利在线观看宅福利| 国内一区二区三区在线视频| 男男视频亚洲欧美| 久久精品国产亚洲AV无码麻豆 | 老司机99精品99| 精品久久久久久综合日本| 美女视频免费一区| 国产精品成人久久| 中文在线资源观看视频网站免费不卡 | 国产精品久久久免费| 性欧美疯狂猛交69hd| 亚洲黄色www| 91丨精品丨国产| 波多野结衣家庭教师视频| 亚洲欧美自拍偷拍色图| 三级在线视频| 痴汉一区二区三区| 久久国产免费看| 无码一区二区三区| 久久久噜噜噜久久久| 91成人超碰|