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

歡迎訪問 生活随笔!

生活随笔

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

javascript

Spring AOP之四:利用AOP实现动态数据源切换

發布時間:2024/9/21 javascript 34 豆豆
生活随笔 收集整理的這篇文章主要介紹了 Spring AOP之四:利用AOP实现动态数据源切换 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

2019獨角獸企業重金招聘Python工程師標準>>>

簡介和依賴

項目的前提是安裝了MySQL數據庫,并且建立了2個數據庫一個是master,一個是slave,并且這2個數據庫都有一個user表,表導出語句如下:

DROP TABLE IF EXISTS `user`; CREATE TABLE `user` (`id` int(10) unsigned NOT NULL AUTO_INCREMENT,`name` varchar(20) NOT NULL COMMENT '用戶名,字母數字中文',`password` char(64) NOT NULL COMMENT '密碼,sha256加密',`nick_name` varchar(20) DEFAULT '' COMMENT '昵稱',`portrait` varchar(30) DEFAULT '' COMMENT '頭像,使用相對路徑',`status` enum('valid','invalid') DEFAULT 'valid' COMMENT 'valid有效,invalid無效',PRIMARY KEY (`id`) ) ENGINE=InnoDB AUTO_INCREMENT=2 DEFAULT CHARSET=utf8 COMMENT='用戶表';

數據庫中有一個密碼為123456的tim用戶對這2個庫有讀寫權限。你可以在配置文件中修改用戶名和密碼,也可以執行下面的語句授權給tim用戶:

grant select,insert,update,delete on slave.* to tim identified by '123456' grant select,insert,update,delete on master.* to tim identified by '123456'

或者給tim全部權限(除了grant):

grant all privileges on slave.* to tim identified by '123456' grant all privileges on master.* to tim identified by '123456'

還是來一張工程目錄的圖片吧:

Spring AbstractRoutingDataSource分析

我們使用org.springframework.jdbc.datasource.lookup.AbstractRoutingDataSource做動態數據源。

既然是數據源肯定直接或者間接的實現了javax.sql.DataSource接口,所以直接找getConnection方法就可以了。

我們可以看到AbstractRoutingDataSource#getConnection方法:

@Overridepublic Connection getConnection() throws SQLException {return determineTargetDataSource().getConnection();}

沒有什么說的,直接看AbstractRoutingDataSource#determineTargetDataSource:

protected DataSource determineTargetDataSource() {Assert.notNull(this.resolvedDataSources, "DataSource router not initialized");Object lookupKey = determineCurrentLookupKey();DataSource dataSource = this.resolvedDataSources.get(lookupKey);if (dataSource == null && (this.lenientFallback || lookupKey == null)) {dataSource = this.resolvedDefaultDataSource;}if (dataSource == null) {throw new IllegalStateException("Cannot determine target DataSource for lookup key [" + lookupKey + "]");}return dataSource;}

determineCurrentLookupKey是一個抽象方法:

protected abstract Object determineCurrentLookupKey();

resolvedDataSources是一個HashMap<String,Object> resolvedDefaultDataSource是一個DataSource

所以整個的邏輯就非常清楚了: AbstractRoutingDataSource是一個抽象類,我們只需要繼承它就可以了,然后提供一個包含多個數據源的HashMap,還可以提供一個默認的數據源resolvedDefaultDataSource,然后實現determineCurrentLookupKey返回一個String類型的key,通過這個key來找到一個對應的數據源。如果沒有找到就使用默認的數據源。

接下來我們就來通過繼承AbstractRoutingDataSource來實現一個動態數據源。

AbstractRoutingDataSource實現

import org.springframework.jdbc.datasource.lookup.AbstractRoutingDataSource;public class DynamicDataSource extends AbstractRoutingDataSource {@Overrideprotected Object determineCurrentLookupKey() {return DataSourceKeyThreadHolder.getDataSourceKey();} } import org.springframework.util.Assert;public class DataSourceKeyThreadHolder {// 同一個線程持有相同的keyprivate static final ThreadLocal<String> dataSourcesKeyHolder = new ThreadLocal<String>();public static void setDataSourceKey(String customerType) {Assert.notNull(customerType, "DataSourceKey cannot be null");dataSourcesKeyHolder.set(customerType);}public static String getDataSourceKey() {return dataSourcesKeyHolder.get();}public static void clearDataSourceKey() {dataSourcesKeyHolder.remove();} }

其實完全沒有必要拆分為2個類,雖然這樣可以讓DynamicDataSource的邏輯清晰一些,但是對于整個的來說并不一定是更加清晰的。

使用ThreadLocal讓每一個線程持有一個key也只是一種手段,也可以通過其他的方式實現。

下面我們來看一下數據源的配置文件,讓配置文件和DynamicDataSource對應起來:

<?xml version="1.0" encoding="UTF-8"?> <beans xmlns="http://www.springframework.org/schema/beans" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"xmlns:tx="http://www.springframework.org/schema/tx"xsi:schemaLocation="http://www.springframework.org/schema/beanshttp://www.springframework.org/schema/beans/spring-beans-3.0.xsd http://www.springframework.org/schema/txhttp://www.springframework.org/schema/tx/spring-tx-3.0.xsd"><bean id="design" abstract="true" class="com.alibaba.druid.pool.DruidDataSource"><property name="driverClassName" value="${common.driver}" /><!-- 配置初始化大小、最小、最大 --><property name="initialSize" value="10" /><property name="minIdle" value="10" /><property name="maxActive" value="60" /><!-- 從池中取連接的最大等待時間,單位ms --><property name="maxWait" value="3000" /><!-- 配置一個連接在池中最小生存的時間,單位是毫秒 --><property name="minEvictableIdleTimeMillis" value="300000" /><!-- 配置間隔多久才進行一次檢測,檢測需要關閉的空閑連接,單位是毫秒 --><property name="timeBetweenEvictionRunsMillis" value="60000" /><!-- 測試語句 --><property name="validationQuery" value="SELECT 'x'" /><!-- 指明連接是否被空閑連接回收器(如果有)進行檢驗 --><property name="testWhileIdle" value="true" /><!-- 是否在從池中取出連接前進行檢驗 --><property name="testOnBorrow" value="false" /><!-- 是否在歸還到池中前進行檢驗 --><property name="testOnReturn" value="false" /><!-- 打開PSCache,并且指定每個連接上PSCache的大小 --><property name="poolPreparedStatements" value="false" /><property name="maxPoolPreparedStatementPerConnectionSize" value="20" /><!-- 配置監控統計攔截的filters --><property name="filters" value="stat" /><!-- 打開removeAbandoned功能 --><property name="removeAbandoned" value="true" /><!-- 1800秒,也就是30分鐘 --><property name="removeAbandonedTimeout" value="1800" /><!-- 關閉abanded連接時輸出錯誤日志 --><property name="logAbandoned" value="true" /></bean><bean id="master" parent="design"><property name="username" value="${master.username}" /><property name="password" value="${master.password}" /><property name="url" value="${master.url}"/></bean><bean id="slave" parent="design"><property name="username" value="${slave.username}" /><property name="password" value="${slave.password}" /><property name="url" value="${slave.url}"/></bean><!-- 動態數據源 --><bean id="dynamicDataSource" class="cn.freemethod.datasource.DynamicDataSource"><property name="targetDataSources"><map key-type="java.lang.String"><entry key="master" value-ref="master"/><entry key="slave" value-ref="slave"/></map></property><!-- 默認數據源 --><property name="defaultTargetDataSource" ref="master"/></bean><bean id="sqlSessionFactory" class="org.mybatis.spring.SqlSessionFactoryBean"><property name="dataSource" ref="dynamicDataSource" /><property name="configLocation" value="classpath:design-config.xml"/><property name="mapperLocations" value="classpath:mapper/design/*.xml"/></bean><bean id="sqlSessionTemplate" class="org.mybatis.spring.SqlSessionTemplate" ><constructor-arg index="0" ref="sqlSessionFactory" /></bean><!-- 配置mapper的映射掃描器 根據包中定義的接口自動生成dao的實現類--><bean class="org.mybatis.spring.mapper.MapperScannerConfigurer"><property name="basePackage" value="cn.freemethod.dao.mapper"/></bean></beans>

我們先看一下id為design這個bean,注意這個bean配置了abstract="true",表明這個bean是不會實例化的是用來被其他bean繼承的。這個bean使用的是com.alibaba.druid.pool.DruidDataSource。

接下來配置了2個數據源一個master一個slave,這2個bean繼承了design。

重點看id為dynamicDataSource的bean,這個就是我們繼承了AbstractRoutingDataSource的類,看到在屬性為targetDataSources的Map中注入了2個數據源master和slave,key也是master和slave,默認的數據源defaultTargetDataSource配置的是master。

所以在我們的DynamicDataSource的determineCurrentLookupKey中如果返回的是master就是使用的是master數據源,如果返回的是slave使用的就是slave數據源。

上面說到的都是和動態數據源有關的沒有使用到AOP啊,下面我們就介紹一下把AOP應用上。

利用AOP切換數據源

既然是利用AOP,那當然得有一個切面了,我們就先來看一下切面的代碼吧。

import org.aspectj.lang.JoinPoint; import org.aspectj.lang.annotation.After; import org.aspectj.lang.annotation.Aspect; import org.aspectj.lang.annotation.Before; import org.aspectj.lang.annotation.Pointcut; import org.springframework.stereotype.Component;@Component @Aspect public class DataSourceAspect {@Pointcut("@annotation(cn.freemethod.datasource.DataSourceKey)") // @Pointcut("this(cn.freemethod.service.UserService)")public void dataSourceKey() {}@Before("dataSourceKey() && @annotation(dataSourceKey)")public void doBefore(JoinPoint point,DataSourceKey dataSourceKey) { // MethodSignature signature = (MethodSignature) point.getSignature(); // Method method = signature.getMethod(); // DataSourceKey datasource = method.getAnnotation(DataSourceKey.class);if (dataSourceKey != null) {String sourceKey = DataSourceKey.master;if (dataSourceKey.value().equals(DataSourceKey.master)) {sourceKey = DataSourceKey.master;} else if (dataSourceKey.value().equals(DataSourceKey.slave)) {sourceKey = DataSourceKey.slave;}DataSourceKeyThreadHolder.setDataSourceKey(sourceKey);}}@After("dataSourceKey()")public void doAfter(JoinPoint point) {DataSourceKeyThreadHolder.clearDataSourceKey();} }

首先我們要明確連接點,就是要在什么地方進行切換數據源操作,這里很明確了我們要在有DataSourceKey注解的方法上進行切換數據源。

根據我們前面學習的Pointcut表達式,我們很容易的就能寫出下面的表達式:

@Pointcut("@annotation(cn.freemethod.datasource.DataSourceKey)")

通知邏輯也很簡單,我們只需要把線程的上下文的key設置為方法注解上獲取的數據源的key就可以了。方法執行之后再設置為之前的數據源。這樣在方法執行的過程中如果使用的數據源獲取到的就是方法注解上的配置對應的數據源。

看一下下面的實例怎樣使用吧:

@DataSourceKey("master")@Overridepublic int saveUserMaster(UserBean user) {return userBeanMapper.insertSelective(user);}

測試代碼:

import javax.annotation.Resource;import org.apache.commons.codec.digest.DigestUtils; import org.junit.Assert; import org.junit.Test; import org.junit.runner.RunWith; import org.springframework.test.context.ContextConfiguration; import org.springframework.test.context.junit4.SpringJUnit4ClassRunner;import cn.freemethod.config.AspectConfig; import cn.freemethod.dao.bean.design.UserBean; import cn.freemethod.service.UserService; import cn.freemethod.util.DataGenerateUtil; //@ContextConfiguration(locations = {"classpath:spring-base.xml"}) @ContextConfiguration(classes={AspectConfig.class}) @RunWith(SpringJUnit4ClassRunner.class) public class UserServiceImplTest {@ResourceUserService userServiceImpl;@Testpublic void testSaveUserMaster() {UserBean userBean = getUser();int actual = userServiceImpl.saveUserMaster(userBean);Assert.assertEquals(1, actual);}@Testpublic void testSaveUserSlave() {UserBean userBean = getUser();int actual = userServiceImpl.saveUserSlave(userBean);Assert.assertEquals(1, actual);}@Testpublic void testGetUser(){UserBean user = userServiceImpl.getUser(2);System.out.println(user);}private UserBean getUser(){UserBean userBean = new UserBean();userBean.setName(DataGenerateUtil.getAlphabet(3));userBean.setPassword(DigestUtils.sha256Hex(DataGenerateUtil.getAlnum(6)));return userBean;}}

完整的代碼請下載參考中的完整工程代碼鏈接,這里之所以把測試類貼出來是因為有一個非常糾結的問題要講,你應該也搜不到相關的資料。所以如果感興趣的話最好把源碼下載下來,然后對比著測試一下。

細心的同學可能已經注意到了切面類DataSourceAspect中注釋的代碼:

// MethodSignature signature = (MethodSignature) point.getSignature(); // Method method = signature.getMethod(); // DataSourceKey datasource = method.getAnnotation(DataSourceKey.class);

這里有2個矛盾的地方,一個是Spring中注入的類型只能是接口類型的如測試中的:

@Resource UserService userServiceImpl;

如果替換為:

@Resource UserServiceImpl userServiceImpl;

就會注入失敗。

但是在Spring AOP(使用AspectJ)中通過下面的代碼:

MethodSignature signature = (MethodSignature) point.getSignature(); Method method = signature.getMethod();

獲取的不是實際委派的方法,也就是說UserService注入的實際的類型是UserServiceImpl,但是通過UserService調用方法上面得到的簽名Method的是UserService的方法簽名。這個有什么影響呢?在上面的例子中最直接的影響就是userServiceImpl中的方法上的注解公共上面的方法獲取不到。

最開始我也是弄的我一愣一愣的,弄了很久,最后還是通過Advice 參數把注解注入到通知當中的。如下:

@Before("dataSourceKey() && @annotation(dataSourceKey)")

關于Advice的Parameter可以參考后面的Spring AOP 之三:通知(Advice)方法參數這篇文章。

參考

項目碼云鏈接

完整工程代碼

Spring AOP 之一:基本概念與流程

Spring AOP 之二:Pointcut注解表達式

Spring AOP 之三:通知(Advice)方法參數

轉載于:https://my.oschina.net/u/2474629/blog/1083552

總結

以上是生活随笔為你收集整理的Spring AOP之四:利用AOP实现动态数据源切换的全部內容,希望文章能夠幫你解決所遇到的問題。

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

91免费版在线 | 一区二区视频网站 | 精品久久久久久久久久久久久久久久 | 九月婷婷人人澡人人添人人爽 | 久久a视频| 97在线视 | 韩国av免费观看 | 黄色三级免费观看 | 免费中文字幕视频 | 色99在线 | 片网址| 日韩一级电影在线 | 国产在线小视频 | 四虎永久精品在线 | 在线视频 成人 | 国产成人精品在线 | 国产成人61精品免费看片 | 久久久久免费 | 视频 国产区 | 久久精彩视频 | 99精品乱码国产在线观看 | 91视频麻豆视频 | 狠狠地日 | 亚洲天天草 | 日韩动态视频 | 在线观看免费福利 | 色.www| 五月天综合在线 | 不卡精品视频 | 国内丰满少妇猛烈精品播 | 久久国产精品99国产 | 欧美综合色在线图区 | 国产一区二区在线播放视频 | 国产福利精品一区二区 | 国产中文字幕91 | 麻豆91在线观看 | 欧美性色综合 | 午夜视频一区二区三区 | 高清av网 | 国产不卡网站 | 97视频资源 | 亚洲一级黄色大片 | 日本精品二区 | 日韩电影一区二区在线观看 | 精品理论片| 99久久综合国产精品二区 | 日韩免费区 | 日韩欧美在线综合网 | 欧美一级激情 | 丁香电影小说免费视频观看 | 97日日碰人人模人人澡分享吧 | 狠狠色丁香久久婷婷综合五月 | 夜夜夜夜夜夜操 | 99精品免费在线 | 蜜桃视频成人在线观看 | 久久久久久久久毛片精品 | 中文字幕在线免费播放 | 夜夜躁天天躁很躁波 | 在线观看久草 | 在线观看日本高清mv视频 | 9久久精品| 精品欧美乱码久久久久久 | 久久96国产精品久久99软件 | 波多野结衣在线中文字幕 | 中文字幕在线观看国产 | 91av在| 日日躁夜夜躁xxxxaaaa | 99精品99| 777xxx欧美| 免费的国产精品 | 国产精品丝袜久久久久久久不卡 | 精品久久久久久久久久久久久久久久 | 欧美午夜寂寞影院 | 五月婷婷综合久久 | 欧美一级久久 | 在线视频欧美亚洲 | 日韩免费看视频 | 97在线精品| 一级α片免费看 | 日韩av电影网站在线观看 | 天天操天天操天天操天天操 | 精品99久久 | 精品国产一二三四区 | 天天在线视频色 | avsex| 激情久久一区二区三区 | 中文字幕免费观看 | 五月天最新网址 | 国产精品黄色 | 成人av中文字幕在线观看 | 99久久久久 | 少妇搡bbbb搡bbb搡69 | 久久av网址| 国产黄色片一级 | 草久久久久久 | 92精品国产成人观看免费 | 中文字幕av网站 | 91激情小视频 | 欧美aaa一级 | www色婷婷com | 日日碰狠狠添天天爽超碰97久久 | 国产精品精品国产婷婷这里av | 欧美日韩中字 | 国精产品一二三线999 | 国产99久久精品一区二区300 | 精品美女久久久久久免费 | 日韩一级电影在线 | 久久综合操 | 久久 一区 | 久久字幕 | 国产美女精品视频 | 亚洲视频 视频在线 | 在线播放 日韩专区 | 久久精品人 | 五月开心激情网 | 97超碰中文 | 亚洲一区av | 99r在线精品 | 天天射天 | 国产96在线观看 | 久久五月婷婷综合 | 国产一区在线视频播放 | 中文字幕区 | 亚洲精品xx | 深夜免费小视频 | 久久这里只有精品23 | 欧美精品v国产精品v日韩精品 | 在线观看黄网 | 亚洲影视九九影院在线观看 | 在线精品播放 | 国产成人av网址 | 久久论理 | 久久综合久久综合这里只有精品 | 久久免费视频这里只有精品 | 日韩在线视频国产 | 国产最新视频在线观看 | 午夜精品久久久久久久久久久久久久 | 青草视频在线看 | av不卡免费在线观看 | 欧美精品天堂 | 亚洲视频精选 | 久草视频精品 | 亚洲精品国产精品国自产在线 | 伊人成人久久 | 日韩精品在线免费播放 | 天天干天天干天天干天天干天天干天天干 | 97偷拍视频| 久草在线资源网 | 96精品高清视频在线观看软件特色 | 日韩性xxx | 激情电影影院 | 精品色999| 92av视频| 97人人射 | 久要激情网 | 免费成人在线观看视频 | 日韩丝袜视频 | 国产精品国产三级国产aⅴ入口 | 性日韩欧美在线视频 | 国产中文在线字幕 | 日韩资源在线播放 | 亚洲高清视频在线 | 欧美在线1 | 99久久精品无码一区二区毛片 | 国产欧美日韩一区 | 亚洲欧美日韩精品久久奇米一区 | 521色香蕉网站在线观看 | 激情视频久久 | 天天在线视频色 | 一本一本久久aa综合精品 | 国产精品v a免费视频 | 欧美在线视频a | 国产视频在线观看一区 | 久久伊人热| 午夜三级福利 | 国产99在线免费 | 激情网站免费观看 | 国产一区二区三区在线 | 视频在线精品 | 四虎免费av | 久久新 | 日日操夜夜操狠狠操 | 天天综合天天做天天综合 | 日日碰狠狠添天天爽超碰97久久 | 在线v| 久久香蕉国产精品麻豆粉嫩av | 中文字幕一区二区在线观看 | 黄色在线看网站 | 日韩中文在线播放 | 91入口在线观看 | 欧美 日韩 性 | 国产明星视频三级a三级点| 国产精品高潮呻吟久久久久 | 女人18片| 久久免费视频1 | 久久精品—区二区三区 | 99精品亚洲 | 中文字幕在线视频一区 | 日韩欧美精品在线观看 | 国产精品久久久久国产a级 激情综合中文娱乐网 | 国产精成人品免费观看 | www久久| av电影一区二区三区 | 久久久精品免费观看 | 日韩av电影手机在线观看 | 一区二区三区四区久久 | 日韩av一区二区在线播放 | 国产精品九九久久久久久久 | 国产成人精品综合久久久久99 | 丁五月婷婷 | 精品久久久久久久久久久久久久久久久久 | 人人干在线观看 | 久久久99精品免费观看 | 久久精品免费观看 | 日韩精品视频在线观看网址 | 日韩精品中文字幕在线 | 婷婷久久综合网 | 国产精品久久久久一区二区国产 | 色橹橹欧美在线观看视频高清 | 在线观看黄污 | 夜夜爽夜夜操 | 久久精品男人的天堂 | 看片的网址| 久久这里只有精品首页 | 亚洲精品在线观看视频 | 又黄又爽免费视频 | 福利一区二区 | 狠狠狠狠狠操 | 99热在线精品观看 | 亚洲jizzjizz日本少妇 | 97超级碰碰碰碰久久久久 | 欧美日本三级 | 国产最新福利 | 91在线免费视频 | 日本aaa在线观看 | 福利一区二区三区四区 | 久久久久 | 亚洲午夜精品一区 | 中文字幕在线不卡国产视频 | 91精品国产电影 | 国产精品一区二区在线观看 | 国产成人精品在线观看 | 天天射天天爱天天干 | 日韩精品2区| 天天操福利视频 | 超黄视频网站 | 久久精品一二区 | 手机av片| 国产高清99| 91视频黄色 | www.av免费| 国产v在线 | 成人一区在线观看 | 99免费看片 | 中文字幕在线看视频 | 中文字幕在线一区二区三区 | 亚洲日韩中文字幕 | 在线综合 亚洲 欧美在线视频 | 免费在线激情视频 | 色播亚洲婷婷 | 成人欧美一区二区三区在线观看 | 欧美电影黄色 | 国产色在线视频 | 亚洲成av人片在线观看香蕉 | 久操操 | 亚洲激情小视频 | 欧美成人黄色片 | 国产精品久久久久久久久久尿 | 欧美日韩高清免费 | 精品中文字幕在线观看 | 久99久精品 | 很黄很黄的网站免费的 | 国产一区二区手机在线观看 | 久久久久久久久福利 | 亚洲国产片色 | 亚洲在线视频观看 | 国产一区视频在线 | 91网免费观看 | av一级网站| 一区二区亚洲精品 | 日日躁你夜夜躁你av蜜 | 久久爽久久爽久久av东京爽 | 久久9999久久免费精品国产 | 午夜久久久久久久久久影院 | 成年性视频| 亚洲精品欧美精品 | 欧美精品中文在线免费观看 | 黄色毛片在线观看 | 国产区在线 | a√天堂资源 | 色天堂在线视频 | 精品久久久成人 | 亚洲最大在线视频 | 五月花激情 | 日韩欧美国产精品 | 欧美另类网站 | 国产自产在线视频 | 青草视频网 | 成人小视频在线 | 亚州日韩中文字幕 | 久久综合中文字幕 | 午夜电影久久久 | 91精品免费看 | 久久成人视屏 | 国产精品乱码高清在线看 | 国产永久免费高清在线观看视频 | 福利视频一区二区 | 91视频在线播放视频 | 中文字幕成人网 | 在线观看免费av网站 | 在线观看小视频 | 四虎成人精品永久免费av | 亚洲成人999 | 日韩三级在线 | 久福利 | 亚洲一级片 | 国模一二三区 | 国产日韩视频在线播放 | 国产最新福利 | 99精品视频在线 | 人人爽人人乐 | 免费在线观看成年人视频 | 亚洲在线a| 日本精品视频在线播放 | 国产尤物在线视频 | 97超在线视频 | 激情综合亚洲精品 | 午夜视频欧美 | 91av资源网| 久久精品视频网址 | 激情综合五月 | 99精品在线免费 | 蜜桃视频成人在线观看 | 日本中文字幕视频 | 国产精品一区二区视频 | 狠狠色丁香婷婷综合视频 | 天天操偷偷干 | 久99精品 | 色视频在线免费 | 国产中文a | 亚洲五月 | 国产在线专区 | 最近日本韩国中文字幕 | 69视频在线播放 | 91插插影库 | 婷婷久久一区 | 99热精品免费观看 | 中文字幕成人在线 | a黄色影院| 三级黄色片在线观看 | 国产福利91精品一区二区三区 | 久久久精品视频网站 | 亚洲精品视频在线观看视频 | 久久一区国产 | 成人免费观看网址 | 国内少妇自拍视频一区 | 色婷婷色 | 亚洲国产成人在线 | 日本精品视频在线播放 | 久久国产精品成人免费浪潮 | 久久精品国产第一区二区三区 | 国产传媒中文字幕 | 一区二区三区日韩在线 | 免费在线观看的av网站 | 亚洲精品国产高清 | 亚洲精品视频免费在线观看 | 国产福利在线免费观看 | 免费视频97 | 国产精品一区二区免费视频 | 超碰人人干人人 | 色噜噜日韩精品一区二区三区视频 | av7777777| 欧美极品在线播放 | 国产老太婆免费交性大片 | 玖玖爱国产在线 | 久久精品欧美 | 黄色a视频| 国产成人精品综合久久久 | 国内视频一区二区 | 日本中文不卡 | 亚洲一级片在线看 | 久久成人资源 | 色婷久久 | 亚洲成年人免费网站 | 性色av免费观看 | 精品一区二区三区电影 | 91av成人| 欧美日韩不卡在线视频 | 日韩中文字幕电影 | 久久爱www. | 激情视频二区 | 999一区二区三区 | 久久九九国产精品 | 五月天综合激情 | 久免费视频 | 亚洲国产午夜视频 | 最新99热| 欧美日韩免费一区 | 亚洲天堂va | 天天综合成人网 | 天天天操天天天干 | 在线观看日本高清mv视频 | 在线视频 91 | 91精品国产高清自在线观看 | 99久久精品国产免费看不卡 | 欧美视频一区二 | 亚洲一区二区三区在线看 | 国产破处在线视频 | 欧美黄色成人 | 亚洲精品午夜国产va久久成人 | 91视频在线看 | 一级特黄aaa大片在线观看 | 久久乐九色婷婷综合色狠狠182 | 国产麻豆精品在线观看 | 欧美色综合天天久久综合精品 | 免费在线国产精品 | 欧美成人影音 | 国产.精品.日韩.另类.中文.在线.播放 | 成人av高清在线 | 五月婷婷丁香网 | 色五婷婷 | 免费网站色 | 操操操日日日 | 黄色在线观看污 | 国产精品精品久久久 | 亚洲国产网站 | 在线观看国产日韩 | av免费网 | 免费高清无人区完整版 | 国产只有精品 | 92精品国产成人观看免费 | 在线免费观看视频 | 日韩,中文字幕 | 国产高清视频色在线www | 射综合网 | 国产精品中文久久久久久久 | 国产日产高清dvd碟片 | 在线观看第一页 | 日韩欧美综合 | 国产精品乱码久久 | 97精品视频在线 | 顶级bbw搡bbbb搡bbbb | 丰满少妇一级片 | 色黄久久久久久 | 91精品国产自产老师啪 | 亚州精品天堂中文字幕 | 91福利在线导航 | 成人黄色毛片 | 国产裸体无遮挡 | av中文字幕日韩 | 激情av五月婷婷 | avcom在线| 中文字幕在线不卡国产视频 | 国产一区二区精品 | 国产中文字幕视频在线观看 | 91精品视频免费观看 | 美女免费视频观看网站 | 不卡中文字幕在线 | 国产福利一区二区三区视频 | 日韩在线观看中文 | av资源免费看 | 九七人人干 | www.com久久| 亚洲国产电影在线观看 | 精品久久久久亚洲 | 精品在线观看国产 | 亚洲免费精品一区二区 | 色婷婷a | 三级av免费观看 | 国产99久久久国产精品免费二区 | www.777奇米| 久久毛片高清国产 | 天天摸日日操 | 五月天六月色 | 特级大胆西西4444www | 国产日产精品一区二区三区四区 | 国产免费一区二区三区网站免费 | 久久综合九色综合97_ 久久久 | 激情五月婷婷激情 | 四虎www.| 色七七亚洲影院 | 精品国产乱码一区二区三区在线 | 99tvdz@gmail.com| 色婷婷av国产精品 | 亚洲欧美视频网站 | 91久久久国产精品 | 天天操天天射天天 | 欧美午夜激情网 | 色视频成人在线观看免 | 欧美日产一区 | 日本视频不卡 | 欧美国产日韩一区 | 国产精品一区二区久久精品爱微奶 | 日韩电影精品 | 亚洲成av人影院 | 国色综合| 精品在线观看一区二区 | 二区三区中文字幕 | www国产一区 | 国产精品视频大全 | 国产精品xxxx18a99 | 国产精品久久久久久久久婷婷 | 99精品乱码国产在线观看 | 色综合天天色综合 | 91精品视频在线免费观看 | 最近中文字幕免费观看 | 中文字幕在线观看免费高清完整版 | 91九色视频| 麻豆久久 | 国产精品一区在线 | 中文字幕视频在线播放 | 制服丝袜一区二区 | 欧美日韩精品在线观看 | 精品亚洲va在线va天堂资源站 | 婷婷六月天丁香 | 91av欧美 | 日日夜夜免费精品 | 西西大胆啪啪 | 亚洲最新毛片 | 国产激情电影综合在线看 | 91色国产| 91精品国自产在线偷拍蜜桃 | 欧美日韩综合在线观看 | 国产精品 久久 | av大全在线免费观看 | 国产成人精品久久久久 | 国产在线中文 | 草樱av | 婷婷资源站 | 国产小视频在线观看免费 | 免费日韩高清 | 一区三区视频 | 国产美女免费视频 | 欧美一级视频免费 | 国产一区91 | 亚洲 欧美 另类人妖 | 99视频网站 | 日韩精品视频第一页 | 亚洲一级黄色av | 高清免费在线视频 | 丝袜护士aⅴ在线白丝护士 天天综合精品 | 视频91在线| 九月婷婷综合网 | 91黄色在线观看 | 精品视频成人 | www.天天综合 | 久久99精品国产一区二区三区 | 国产成人一区在线 | 国产又黄又猛又粗 | 中文字幕免费播放 | 日韩免费高清在线 | 91亚洲狠狠婷婷综合久久久 | 久久精品成人热国产成 | 国产精品免费一区二区三区 | 欧美日韩二三区 | 久久国产精品视频观看 | 午夜久久福利影院 | 久久精品爱视频 | 国产精品视频永久免费播放 | 中文字幕日韩电影 | 国内99视频 | 国产91亚洲 | 亚洲精品美女久久 | 欧美视频日韩 | 黄色大全免费观看 | 天天干,天天草 | 在线视频1卡二卡三卡 | 人人插人人爱 | 日韩夜夜爽 | 91精品福利在线 | 免费特级黄色片 | 国产成人精品免费在线观看 | 99久久久久久久久 | av日韩国产| 色综合五月 | 亚洲网站在线 | 成人免费一区二区三区在线观看 | 中文字幕 婷婷 | 国产亚洲精品久久久久久久久久 | 久久国产视屏 | 日韩av成人| 国产91丝袜在线播放动漫 | 中文字幕成人在线观看 | 亚洲va在线va天堂va偷拍 | 狠狠色丁香婷婷综合视频 | 涩涩网站在线看 | 国产在线观看污片 | 亚洲国产美女精品久久久久∴ | 久草剧场 | 久久久免费精品国产一区二区 | 日韩免| 射综合网 | 国产精品电影在线 | 草莓视频在线观看免费观看 | 五月天婷婷在线播放 | 日韩乱色精品一区二区 | 综合精品久久 | 国产小视频在线免费观看 | 午夜免费福利视频 | 亚洲精品久久久久久久蜜桃 | 911香蕉视频 | 国产在线欧美日韩 | 黄色三级免费观看 | 久久精品国产一区二区电影 | 91丨九色丨蝌蚪丨老版 | 国产精国产精品 | 亚洲成a人片77777kkkk1在线观看 | 亚洲精品久久久久久久蜜桃 | 91热精品 | 久久久福利影院 | 免费三级网 | 欧美在线视频a | 男女啪啪视屏 | 九九热免费在线观看 | 国产区av在线 | 在线免费观看视频一区 | 夜夜操天天干 | 日本在线观看中文字幕无线观看 | 97精品伊人 | 免费在线观看一级片 | 久久精品视 | 五月精品 | 久久97视频 | 久久久久久久网 | 激情中文在线 | 一区二区三区在线观看免费视频 | 天天综合网在线观看 | 亚洲视频在线观看免费 | 91人人澡人人爽人人精品 | av成人动漫 | 色在线高清 | 国产69精品久久99不卡的观看体验 | 国产欧美日韩精品一区二区免费 | 久久精品视频2 | 中文字幕在线影视资源 | 久久精品视频免费播放 | 碰超在线97人人 | 又爽又黄又刺激的视频 | 中文字幕在线观看91 | 国内精品久久久久影院一蜜桃 | 玖玖综合网 | 国产精品少妇 | 国内三级在线 | 久久精品网站免费观看 | 成人97人人超碰人人99 | 色综合天天综合 | 91视频免费看| 91精品国产99久久久久 | 日韩欧美视频一区二区三区 | 日韩网站在线看片你懂的 | 国产最新精品视频 | 亚洲视频久久 | 婷婷久久亚洲 | 亚洲 欧洲 国产 日本 综合 | 在线免费av电影 | 精品国模一区二区三区 | 精品a级片 | 国产日韩欧美中文 | 欧美日韩亚洲精品在线 | 天天se天天cao天天干 | 亚洲精品在线观看不卡 | 91av电影网| 最近中文字幕完整视频高清1 | 国产成人精品一区二区三区福利 | 亚洲国产精品日韩 | 欧美 激情在线 | 蜜桃视频日本 | 亚洲免费av观看 | 成人精品国产免费网站 | 欧美精品久久久久久久久免 | 久久av一区二区三区亚洲 | 亚洲va欧美va人人爽春色影视 | 91麻豆精品国产自产在线 | 久久夜av| 国产精品短视频 | 国产在线观看不卡 | 久久99精品久久久久蜜臀 | 91香蕉视频在线下载 | 欧美国产日韩一区二区三区 | 欧美性成人 | 中文字幕成人 | 国产日韩高清在线 | 在线观看日韩av | 欧美性天天 | 免费看片网站91 | 久久视频免费在线观看 | 亚州国产精品久久久 | 国产欧美在线一区二区三区 | 国产精品一区二区免费在线观看 | 精品国产99 | 亚洲专区在线播放 | 日日碰狠狠躁久久躁综合网 | 97精品国产91久久久久久久 | 日韩在线短视频 | 国产a网站 | 午夜精品久久久久久久久久久久久久 | 日韩在线网址 | 久久99久久99精品免观看软件 | 久久久av免费 | 日韩欧美v | 国产精品久久在线观看 | 天天摸天天舔天天操 | 超碰激情在线 | av在线收看 | 欧美在线观看视频一区二区 | 中文字幕之中文字幕 | 日韩精品视 | 国产无套视频 | 97超碰在 | 91亚·色 | 免费久久久 | av色图天堂网 | 久久天天拍 | 色av婷婷| 国产一区自拍视频 | 国产永久网站 | 精品久久久久久久 | 免费网站污 | 四虎影视成人精品 | 在线观看av麻豆 | 最近中文字幕大全中文字幕免费 | 综合激情网 | 探花视频在线观看 | 亚洲永久精品视频 | 精选久久 | 国产xxxx | 西西444www大胆高清视频 | 久久午夜免费视频 | 精品99在线视频 | 久草在线免费资源 | 国精产品永久999 | 天天夜夜狠狠操 | 精品久久网 | 99av国产精品欲麻豆 | 日韩免费网站 | 亚洲综合精品视频 | 又黄又刺激视频 | 最新av电影网站 | 婷婷丁香色 | 亚洲va欧美| 日韩免费av在线 | 日韩av一区在线观看 | 美女网站视频免费都是黄 | 欧美日韩性 | www.操.com| 久久久久福利视频 | 欧美小视频在线观看 | 色婷婷丁香| 美国人与动物xxxx | 国产小视频免费在线网址 | 婷婷草| 人人干在线观看 | 国产精品乱码一区二三区 | 亚洲 综合 国产 精品 | 日韩视频中文字幕在线观看 | 国内精品在线一区 | 久久综合欧美精品亚洲一区 | 久久婷婷综合激情 | 日批视频在线 | 国产成人亚洲精品自产在线 | 中文字幕色在线视频 | 免费色网| 一二三区高清 | 蜜臀aⅴ国产精品久久久国产 | 久99久在线视频 | 黄色国产精品 | 一区二区三区四区影院 | 日韩精品一区二区三区三炮视频 | se婷婷| 亚洲在线高清 | 国产又粗又猛又黄又爽的视频 | 91豆麻精品91久久久久久 | 天躁狠狠躁 | 国产中文在线字幕 | 99久视频 | 91在线视频| 又黄又爽又色无遮挡免费 | 日韩区在线观看 | 91手机视频| 欧美一区二区三区在线观看 | 91观看视频| 亚洲情婷婷 | 97在线看片| 五月婷婷激情综合 | 99久久精品国产一区二区成人 | 亚洲天天看 | 国产69熟 | 欧美日韩精品影院 | 天堂黄色片| 久久99精品国产一区二区三区 | 99久在线精品99re8热视频 | 成人综合日日夜夜 | 韩国av永久免费 | 国产精品手机播放 | 中文字幕丝袜美腿 | 精品国产伦一区二区三区观看体验 | 91九色视频网站 | 亚洲日韩中文字幕在线播放 | 99 视频 高清 | 国产精品久久99综合免费观看尤物 | 亚洲1区 在线 | 中国一级片在线播放 | 黄色三级免费看 | av观看久久久 | 国产特级毛片aaaaaa高清 | 精品一区二区在线免费观看 | 欧美久久99 | 天天射综合网视频 | 日韩欧美综合在线视频 | 99久国产 | 正在播放一区 | 天天干,狠狠干 | 久99热| 国外调教视频网站 | 国产亚洲午夜高清国产拍精品 | 成人激情开心网 | 亚色视频在线观看 | 高清av免费观看 | 精品在线视频观看 | 日本在线精品视频 | 成人国产精品一区 | 天天操天天干天天摸 | 麻豆视频在线 | 黄色特一级片 | 五月天激情视频 | 亚洲 av网站 | 国产精品久久久久久影院 | 激情视频在线观看网址 | 成人黄色片在线播放 | 一区二区三区高清在线观看 | www91在线观看 | 99视频在线免费看 | 午夜精品在线看 | 国产黄色成人av | 欧美精品久久久久久久久久白贞 | 99热超碰在线 | 欧美日韩精 | 爱色婷婷| 久久一区二区三区日韩 | 亚洲资源在线网 | 午夜精品一区二区国产 | 精品国产一二三四区 | 丁香五婷 | 日韩va在线观看 | 午夜三级理论 | 奇米影视999 | 精品久久久久久久 | 亚洲欧美激情插 | 日韩一区二区三区免费电影 | 国产精品18久久久久久首页狼 | 久草久草久草久草 | 天天操夜夜看 | 日韩av视屏在线观看 | 欧美资源在线观看 | 成人一级视频在线观看 | 97成人资源 | 夜夜夜| 成人久久久电影 | 在线韩国电影免费观影完整版 | 成人av资源网站 | 又黄又爽又无遮挡免费的网站 | 久久国产精品久久精品 | 日韩特黄一级欧美毛片特黄 | a天堂最新版中文在线地址 久久99久久精品国产 | 伊人狠狠色丁香婷婷综合 | 69av在线视频 | 日韩中文久久 | 亚洲 中文 在线 精品 | 国产又粗又硬又长又爽的视频 | 97人人添人澡人人爽超碰动图 | 国产午夜精品免费一区二区三区视频 | 色中色亚洲 | 91av电影在线 | 成人教育av| 人人干狠狠操 | 大型av综合网站 | 日韩精品一区二区三区三炮视频 | a视频在线播放 | 欧美日韩二区在线 | 国产黄色av网站 | 这里只有精品视频在线 | 狠狠躁日日躁夜夜躁av | 久久国产视屏 | 国产精品高清免费在线观看 | 激情av网| 在线看黄色的网站 | 国产视频在 | 不卡的av中文字幕 | 国产麻豆精品在线观看 | 久草精品视频 | 久久久久色 | 亚洲黄色在线观看 | 婷婷久久一区 | 在线成人一区 | 九七人人干| 久久久久久蜜桃一区二区 | 91免费看黄| av网在线观看| 美女免费电影 | 91网在线观看 | 欧美日韩观看 | 91亚洲国产成人 | 国产精品一区一区三区 | 一区三区视频在线观看 | 依人成人综合网 | 丝袜网站在线观看 | 伊人久久电影网 | 国产资源av| 亚洲精品免费在线播放 | 国产成人三级在线观看 | 色综合久久久久综合99 | 2019中文最近的2019中文在线 | 亚洲天堂网站视频 | 狠狠操导航| 97人人网| 欧美亚洲免费在线一区 | www·22com天天操 | 夜色资源站wwwcom | 日日添夜夜添 | 午夜影视av | 免费黄色特级片 | 成人午夜剧场在线观看 | 中文字幕高清av | av三级av| 免费在线激情电影 | 人人插人人费 | av免费电影网站 | 中国一级片免费看 | 黄色免费观看网址 | 福利一区二区 | 亚洲三级黄色 | 亚洲精品永久免费视频 | 啪一啪在线| 麻豆一精品传二传媒短视频 | 综合网中文字幕 | av成人动漫在线观看 | 国产免费又爽又刺激在线观看 | 天天射日 | 又黄又刺激的视频 | av不卡免费在线观看 | 久久精品99精品国产香蕉 | 欧美精品网站 | 五月天婷亚洲天综合网鲁鲁鲁 | 国模吧一区| 狠狠躁夜夜躁人人爽超碰91 | 天天做综合网 | 91精品影视| 综合久久久久久 | 久久久影院官网 | 17婷婷久久www | 国产精品九九久久99视频 | 亚洲a网| 久久国产剧场电影 | 精品国产欧美一区二区三区不卡 | 就色干综合 | 国产日韩欧美在线播放 | 亚洲精品午夜aaa久久久 | 久亚洲精品 | 97精品国产97久久久久久久久久久久 | 日韩精品在线播放 | 日韩高清免费电影 | 热久久影视 | 亚洲精品乱码久久久久久高潮 | 九九免费精品 | 欧美极品久久 | 久久久一本精品99久久精品 | 激情视频免费观看 | 国产精选在线观看 | 97视频在线观看免费 | 91视频三区 | 国产精品地址 | 波多野结衣在线观看一区 | 色综合色综合久久综合频道88 | 国产精品久久久久久久婷婷 | 成人在线视频观看 | 亚洲黄色在线播放 | 最新的av网站 | 婷婷深爱五月 | 中国一级特黄毛片大片久久 | 欧美性大战 | 欧美一区二区三区免费观看 | 久久成人综合 | 99久久久国产精品免费99 | 欧美日韩免费观看一区二区三区 | 成年人免费看片网站 | 久久精品99国产国产 | 成人一区二区在线 | 国产精品第一页在线观看 | 国产美女被啪进深处喷白浆视频 | 亚洲小视频在线观看 | 96久久欧美麻豆网站 | 国内精品久久久久国产 | 激情欧美丁香 | 久久久亚洲电影 | 三级a视频| 国产黄色一级片 | 亚洲午夜小视频 | 在线免费黄色 |