久久精品国产精品国产精品污,男人扒开添女人下部免费视频,一级国产69式性姿势免费视频,夜鲁夜鲁很鲁在线视频 视频,欧美丰满少妇一区二区三区,国产偷国产偷亚洲高清人乐享,中文 在线 日韩 亚洲 欧美,熟妇人妻无乱码中文字幕真矢织江,一区二区三区人妻制服国产

歡迎訪問(wèn) 生活随笔!

生活随笔

當(dāng)前位置: 首頁(yè) > 编程资源 > 编程问答 >内容正文

编程问答

spring知识概要

發(fā)布時(shí)間:2025/3/20 编程问答 16 豆豆
生活随笔 收集整理的這篇文章主要介紹了 spring知识概要 小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

目錄

文章目錄

  • **Spring基礎(chǔ)**
  • **Spring容器**
  • **Spring創(chuàng)建Bean的3種方式**
  • **Spring容器中Bean的作用域**
  • **Spring核心機(jī)制:依賴注入**
      • **1.注入方式**
      • **2 各種注入示例**
  • **Spring的組合屬性**
  • **Spring的Java配置管理**
  • **深入理解Spring容器中的Bean**
      • 1. 抽象Bean
      • 2. 繼承Bean
      • 3 .Spring中Bean的繼承與Java中類(lèi)的繼承的區(qū)別:
      • 4.工廠Bean
  • **Spring中Bean的生命周期**
  • **Spring的其他依賴配置**
      • 1. 使用PropertyPathFactoryBean獲取其他Bean的屬性值
      • 2. 使用FieldRetrivingFactoryBean獲取其他Bean的Field值
      • 3. 使用MethodInvokingFactoryBean獲取其他Bean的方法的返回值
  • **Spring基于xml Schema的簡(jiǎn)化配置**
      • 1. p:命名空間
      • 2. c:命名空間
      • 3. util命名空間
      • 4.Spring的其他簡(jiǎn)化配置的schema
  • **spring的兩種后處理器**
      • 1. Bean后處理器
      • 2. 容器后處理器
      • 3.容器后處理器之屬性占位符配置器
      • 4.容器后處理器之重寫(xiě)占位符配置器
  • **Spring 注解之零配置**
      • 1.指定SpringBean的注解
      • 2.搜索Spring Bean
      • 3.配置依賴的@Resource注解
      • 4.指定Bean作用域的@Scope注解
      • 5 定制SpringBean生命周期行為的注解
      • 6 自動(dòng)裝配和精裝配的注解
      • 7 Spring的其他注解
  • **Spring的AOP**
    • **1 基于注解管理的AOP**
    • **2基于xml配置的AOP**
  • **Spring的事務(wù)**
    • 1. Spring支持的事務(wù)策略
      • 1.1 全局事務(wù)
      • 1.3 PlatformTransactionManager
    • 2 Spring的兩種事務(wù)管理方式
    • 3 spring事務(wù)的傳播屬性
  • Spring補(bǔ)充知識(shí)
    • ApplicationContextAware
    • 注解@ControllerAdvice

Spring基礎(chǔ)

  • 基本上所有的框架都是提取實(shí)際開(kāi)發(fā)中大量重復(fù)步驟而成
  • 圍繞Spring框架,還衍生出了如Spring Web Flow、Spring Security等框架
  • Spring框架優(yōu)點(diǎn)
    1) 低侵入式,代碼污染低
    2) 獨(dú)立于各種應(yīng)用服務(wù)器
    3) IOC降低了業(yè)務(wù)對(duì)象替換的復(fù)雜性,降低了組件之間的耦合
    4) AOP支持通用任務(wù)如日志、事務(wù)、安全等的集中處理
    5) ORM和DAO提供了與第三方持久框架的良好整合,并簡(jiǎn)化了底層數(shù)據(jù)庫(kù)的訪問(wèn)
    6) 開(kāi)發(fā)者可自由選擇Spring框架的部分或全部,不像有些框架得全部引用
  • Spring容器(Spring Core Container)是Spring的核心機(jī)制,它主要由以下4個(gè)包和其子包組成:
    a) org.springframework.core
    b) org.springframework.beans
    c) org.springframework.content
    d) org.springframework.expression
    spring容器還依賴于common-logging 這個(gè)JAR包
  • Spring容器中的Bean是一個(gè)泛化概念,只要是一個(gè)Java類(lèi)就可當(dāng)成Bean。Spring容器使用xml配置文件來(lái)管理這些Bean,所以配置到XML文件中的Bean,Spring容器就可管理它。
  • 一個(gè)對(duì)象需要調(diào)用另一個(gè)對(duì)象的情形就可稱為依賴
  • Spring容器利用XML配置文件管理Bean的原理
    我們將Bean配置在XML文件里后,在創(chuàng)建Spring容器后,Spring容器就開(kāi)始解析Xml文件。當(dāng)解析到<bean…/>元素里class屬性的完整類(lèi)名時(shí),就會(huì)利用反射機(jī)制實(shí)例化一個(gè)對(duì)象,當(dāng)解析到<property…/>元素時(shí),就會(huì)執(zhí)行該對(duì)象的setter方法,其中name屬性決定執(zhí)行哪個(gè)setter方法,value或ref屬性決定setter方法的傳入?yún)?shù)。最后在完成注入后,將<bean…/>元素里的id屬性值和創(chuàng)建的對(duì)象以鍵值對(duì)的形式存在Spring容器中,這樣Spring容器就可管理Bean了。
  • XML配置文件中<property…/>元素什么時(shí)候用value屬性,什么時(shí)候用ref屬性?
    a) 當(dāng)傳入?yún)?shù)是基本數(shù)據(jù)類(lèi)型或String類(lèi)型時(shí)用vlaue
    b) 當(dāng)傳入?yún)?shù)是其他Bean時(shí),則用ref(即引用類(lèi)型用ref)
  • 如何訪問(wèn)Spring容器中的Bean?
    常用ApplicationContext接口的實(shí)現(xiàn)類(lèi)來(lái)獲取,該接口主要有以下兩個(gè)方法:
    a) Object getBean(String name):獲取容器中id為name的Bean實(shí)例
    b) T getBean(String id,Class<T> type):根據(jù)id名和Bean類(lèi)型獲取該Bean
    ApplicationContext接口的主要實(shí)現(xiàn)類(lèi):
    a) ClassPathXmlApplicationContext :從類(lèi)加載路徑下搜索配置文件
    b) FileSystemXmlApplicationContext:從文件系統(tǒng)的相對(duì)或絕對(duì)路徑下搜索配置文件
    c) AnnotationConfigWebApplicationContext:使用注解替換xml配置文件時(shí)使用【單測(cè)時(shí)用比較方便】
    示例:
  • ApplicationContext app = new ClassPathXmlApplicationContext(“beans.xml”); User user = (User) app.getBean(“user”)

    10.總結(jié)
    有了spring后,程序可不再使用new來(lái)創(chuàng)建對(duì)象了

    Spring容器

  • 由前面了解到,Spring容器是利用xml配置文件來(lái)生產(chǎn)并管理Bean的,而訪問(wèn)Spring容器中的Bean利用了Application接口,所以我們用該接口來(lái)代表Spring容器。實(shí)際上,ApplicationContext的父接口BeanFactroy也可代表Spring容器,但我們一般不用它作為Spring容器,除非應(yīng)用對(duì)內(nèi)存非常關(guān)鍵。
  • ApplicationContext容器接口 除有BeanFactory全部功能以外,還有以下功能:
    a) 在創(chuàng)建容器時(shí)就初始化容器中的Bean,可通過(guò)<bean…/>元素的lazy-init=”true”取消
    b) 因繼承了MessageSource接口所以支持國(guó)際化
    c) 支持資源訪問(wèn),如URL和文件
    d) 支持事件機(jī)制
    e) 可同時(shí)加載多個(gè)配置文件
    f) 能通過(guò)聲明方式啟動(dòng)并創(chuàng)建Spring容器
  • ApplicationContext接口的實(shí)現(xiàn)類(lèi)
    a) 常用實(shí)現(xiàn)類(lèi):
    ClassPathXmlApplicationContext:從類(lèi)加載路徑下搜索配置文件
    FileSystemXmlApplicationContext:從文件系統(tǒng)的相對(duì)或絕對(duì)路徑下搜索配置文件
    AnnotationConfigApplicationContext:使用Java配置替換xml配置文件時(shí)使用
    b) 在web應(yīng)用中常用的實(shí)現(xiàn)類(lèi):
    XmlWebApplicationContext:
    AnnotationConfigWebApplicationContext:使用注解替換xml配置文件時(shí)使用
  • 編程式實(shí)例化ApplicationContext
    ApplicationContext app = new ClassPathXmlApplicationContext(“beans.xml”);
  • 聲時(shí)式創(chuàng)建并啟動(dòng)Spring容器(ApplicationContext)
  • 當(dāng)beans.xml文件放在WEB-INF下時(shí),只需在web.xml中配置:
  • <listener> <listener-class>org.springframework.web.context.ContextLoaderListener</listener-class> </listener>
  • 當(dāng)beans.xml放在src目錄(即classpath)下時(shí),則需在web.xml當(dāng)中配置:
  • <context-param><!-- 加載spring容器:單詞不能寫(xiě)錯(cuò) --><param-name>contextConfigLocation</param-name><param-value>classpath: beans.xml</param-value> </context-param> <listener> <listener-class>org.springframework.web.context.ContextLoaderListener</listener-class> </listener>

    當(dāng)有多個(gè)配置文件時(shí),可在classpath后面使用通配符“*”

    Spring創(chuàng)建Bean的3種方式

  • Spring創(chuàng)建Bean的3種方式
    a) 調(diào)用構(gòu)造器
    b) 調(diào)用靜態(tài)工廠方法
    c) 調(diào)用實(shí)例工廠方法
  • 使用靜態(tài)工廠方法
  • 此時(shí)<bean…/>元素需要指定以下兩屬性
    a) class:指定靜態(tài)工廠類(lèi)的類(lèi)名
    b) factory-method:指定創(chuàng)建實(shí)例的靜態(tài)工廠方法
  • 示例
  • public class Dog implements Animal{ //要求類(lèi)化的類(lèi)private String msg;public void setMsg(String msg){this.msg = msg;}public void eat(){System.out.print(msg);} } public class Dog AnimalFactory{ //靜態(tài)工廠類(lèi)代碼public static Animal getAnimal(String name){if(“dog”.equalsIgnoreCase(name)){return new Dog();}else{return new Cat();}} } //對(duì)應(yīng)配置文件 <bean id="dog" class="com.dfsj.AnimalFactory" factory-method=”getAnimal”><constructor-arg value="dog"/><property name="msg" value="我是狗"/>></bean>

    需要注意的是,靜態(tài)工廠方法的參數(shù)通過(guò)<constructor-arg…/>元素配置,而新建對(duì)象的屬性的值通過(guò)<property…/>元素設(shè)置

    3.使用實(shí)例工廠方法創(chuàng)建Bean時(shí),<bean…/>元素需要指定如下兩屬性:
    a) factory-bean:指定工廠類(lèi)實(shí)例,即工廠類(lèi)在配置文件中的id
    b) factory-method:指定實(shí)例工廠創(chuàng)建實(shí)例方法

    4.靜態(tài)工廠方法與實(shí)例工廠方法的區(qū)別:
    不同點(diǎn):
    a) 靜態(tài)工故事有class屬性,指定的是靜態(tài) 工廠類(lèi)的類(lèi)名,而實(shí)例工廠是用factory-bean屬性指定工廠類(lèi)在配置文件中的id
    b) 靜態(tài)工廠方法創(chuàng)建Bean實(shí)例的方法是靜態(tài)的
    相同點(diǎn)
    a) 都需要用factory-method指定創(chuàng)建Bean實(shí)例的方法
    b) 工廠方法里的參數(shù)都必須通過(guò)<constructor-arg…/>元素來(lái)配置
    c) 給新創(chuàng)建的Bean實(shí)例的屬性賦值,都是用<property…/>元素

    Spring容器中Bean的作用域

    1. Spring容器的bean的作用域通過(guò)sope屬性指定

    <bean id=”test” class=”com.dfsj.Test” scope=”prototype”>
  • 常用的兩個(gè)作用域
    a) singleton:在IOC容器中只生成一個(gè)實(shí)例
    b) prototype:每次通過(guò)容器的getBean()方法獲取該作用域的Bean時(shí),都將產(chǎn)生一個(gè)新的實(shí)例
  • 只在web項(xiàng)目中有效的幾個(gè)作用域
    a) reqeust:對(duì)于一次http請(qǐng)求,該作用域下的Bean只生成一個(gè)實(shí)例
    b) session:對(duì)于一次會(huì)話,只生成一個(gè)實(shí)例
    c) global session:在全局會(huì)話,里生成一個(gè)實(shí)例
  • 在web.xml中配置使request作用域生效的Listener
  • <listener> <listener-class>org.springframework.web.context.request.RequestContextListener</listener-class> </listener>

    5 注
    在springMVC框架中,已有SpringDispatherServlet或DispatherServlet來(lái)攔截處理所有和請(qǐng)求有關(guān)的狀態(tài)處理,所以不需要如編號(hào)4的Listerner配置。

    6. 這里的bean的作用域具體指的是什么?
    如果一個(gè)bean的scope屬性設(shè)置為singleton,則表示在整個(gè)IOC容器內(nèi),在注入到其他對(duì)象中時(shí),只要唯一確定是該bean(可通過(guò)id確定),則都會(huì)是同一個(gè)bean,而不是去重新new一個(gè)新的bean對(duì)象。
    如果一個(gè)bean的scope屬性設(shè)置為prototype,則表示在注入到其他對(duì)象中或用getBean方法得到時(shí),雖然指向的是同一個(gè)bean,但都會(huì)重新new一個(gè)新的對(duì)象。

    Spring核心機(jī)制:依賴注入

    1.注入方式

  • 設(shè)值注入
  • <bean id=”user” class=”com.app.User”><property name=”name” vlaue=”張三”/><property name=”age” vlaue=”30”/> </bean>

    2.構(gòu)造注入

    <bean id="test" class="com.test.Test"><property name="name" value="Peter"/> <constructor-arg ref="person"/><constructor-arg value="張三" type="String"/> </bean> 構(gòu)造注入的參數(shù)序安出現(xiàn)的順序?yàn)闇?zhǔn),除非以index屬性指定(下標(biāo)從0開(kāi)始)

    3.在使用spring框架時(shí),眼睛看到xml配置時(shí),心中要想到底層Java代碼是如何實(shí)現(xiàn)的,用得熟練時(shí),看到任何一段Java代碼都能用xml文件配置也來(lái)

    2 各種注入示例

  • 以參數(shù)下標(biāo)方式配置有參構(gòu)造,不指定index時(shí),以出現(xiàn)順序注入
  • <bean id="test" class="com.test.Test">< constructor-arg index=”0” value="ddd"/> <constructor-arg index=”1” value=”44”/> </bean>

    2.注入基本數(shù)據(jù)類(lèi)型

    <bean id="test" class="com.test.Test">< property name=”name” value="ddd"/> < property name=”age” value="30"/> </bean>

    3.注入其他Bean

    <bean id="dog" class="com.test.Dog"> <bean id="test" class="com.test.Test">< property name=”dog” ref="dog"/> </bean>

    4.注入嵌套Bean

    <bean id="test" class="com.test.Test">< property name=”cat” > <bean class=”com.test.Cat”></property> </bean>

    5.注入Map集合
    entry元素有4個(gè)屬性:
    key:當(dāng)key值是基本數(shù)據(jù)類(lèi)型或字符串類(lèi)型時(shí)使用
    key-ref:當(dāng)key值是引用類(lèi)型時(shí)使用
    value:當(dāng)value值是基本數(shù)據(jù)或字符串類(lèi)型時(shí)使用
    value-ref:當(dāng)value值是引用類(lèi)型時(shí)使用
    示例:給private Map<String,Axe> axes注入

    <bean id="test" class="com.test.Test">< property name=”axes” > <map><entry key=”name” value=”張三”/></map></property></bean>

    6.注入數(shù)組(與注入List集合一樣):如給private String[] cities;注入

    <bean id="test" class="com.test.Test">< property name=”cities” > <list>< value=”北京”/>< value=”重慶”/></list></property> </bean>

    7.注入List集合:如給private List<String> cities;注入

    <bean id="test" class="com.test.Test">< property name=”cities” > <list>< value=”北京”/>< value=”重慶”/></list></property> </bean>

    8.注入Properties集合(Properties類(lèi)實(shí)現(xiàn)了Map接口)

    <bean id="test" class="com.test.Test">< property name=”health” > <props><prop key=”血壓” >正常</prop><prop key=”身高” >175</prop></props></property></bean>

    9.注入Set集合:如給private Set set注(因?yàn)榉盒?#xff0c;所以可以注入各種類(lèi)型的)

    <bean id="test" class="com.test.Test">< property name=”set” > <set>< value>普通字符串< value/> //基本數(shù)據(jù)類(lèi)型或字符串<bean class=”com.test.User”> //嵌套Bean<ref brean=”stoneAxe”> //容器中的其他Bean<list> //List集合< value>20< value/><set>< value>30< value/></set></list></set></property> </bean>

    10.當(dāng)<list…/>、<set…/>、<map…/>這些元素在配置注入時(shí),如果這些集合未泛型,則其值可以是基本數(shù)據(jù)類(lèi)型、字符串、容器中其他Bean、嵌套Bean、集合等各種數(shù)據(jù)類(lèi)型,如上面Set集合注入的示例

    Spring的組合屬性

    1. 所謂組合屬性,就是一個(gè)類(lèi)的屬性還有自己的屬性。因?yàn)樯婕暗秸{(diào)用,所以在使用組合屬性時(shí),除最后一個(gè)屬性外,前面調(diào)用者都不能為空。
    2. 示例

    Java代碼: public class Test{ private Person person = new Person; //這里一定要new//….getter 、setter方法 } 對(duì)應(yīng)配置代碼: <bean id="person" class="com.test.Person" /> <bean id="test" class="com.test.Test">< property name=”person.name” value=”張三” > </bean>

    3.Spring中的Bean與Java的Bean的區(qū)別

  • 寫(xiě)法不同:
    傳統(tǒng)的JavaBean作為對(duì)象,要求每個(gè)屬性都必須提供getter setter方法,而SpringBean只需要為接受設(shè)值注入的屬性提供setter方法即可,但是如果要獲取該屬性值,還是需要寫(xiě)getter方法的
  • 生命周期的不同:
    傳統(tǒng)的JavaBean不接受容器的管理,而SpringBean是由spring容器管理它的生命周期和行為的
  • Spring中的Bean即使有"有參構(gòu)造函數(shù),最好也提供無(wú)參構(gòu)造函數(shù)
  • Spring的Java配置管理

    Spring的Java配置管理,代替了之前的xml文件配置管理
    1. 實(shí)現(xiàn)
    1)利用**@Configuration注解修飾的類(lèi)(后面就叫配置類(lèi))代替xml文件
    2)有
    @Bean**注解修飾一個(gè)方法,該方法的返回的對(duì)象將定義成容器中的Bean
    3)用@Value注解修飾一個(gè)Field,相當(dāng)于配置一個(gè)變量
    2. 示例

    @Configuration public class AppConfig{ @Value("張三") String personName;@Bean(name="chinese")public Person getPerson(){Chinese c = new Chinese();c.setAxe(getStoneAxe ()); // 獲取stoneAxe對(duì)象并注入c.setName(personName);return c;}@Bean(name="stoneAxe")public Axe getStoneAxe(){return new StoneAxe();} }

    3.Java配置管理時(shí)創(chuàng)建容器

    ApplicationContext app = new AnnotationConfigApplicationContext(AppConfig.class);

    如果是web應(yīng)用,則用AnnotationConfigWebApplicationContext創(chuàng)建
    4.XML配置管理與Java配置管理的混用
    1)在xml配置文件中導(dǎo)入Java配置類(lèi)

    <bean class="com.dfsj.util.AppConfig">

    2)在Java配置類(lèi)里導(dǎo)入xml配置文件

    @Configuration @ImportResource("classpath:/beans.xml") public class AppConfig{ //…. }

    5.Java配置類(lèi)的其他注解
    1)@Import:修飾Java類(lèi),用于導(dǎo)入其他Java配置類(lèi)
    2)@Scope:修飾創(chuàng)建Bean的方法,用于指定生成的Bean的作用域
    3)@Lazy:修飾創(chuàng)建Bean的方法,用于指定生成Bean是否延遲初始化
    4)@DependsOn:修飾創(chuàng)建Bean的方法,用于指定在初始該方法前要初始化的其他Bean

    深入理解Spring容器中的Bean

    1. 抽象Bean

    1)抽象Bean由<bean.../>元素的abstract="true"屬性指定,如:

    <bean id="test" abstract="true"><property name="username" value="peter"/><property name="age" value="peter"/> </bean>

    從上面示例中可以看到,并沒(méi)有用class屬性指定類(lèi),這是為什么呢?
    因?yàn)槲覀冎?#xff0c;抽象Bean是不可被實(shí)例化的,即便指了類(lèi)的完整名也不會(huì)用到,還有就是,Spring中的Bean的繼承是對(duì)象與對(duì)象之間的關(guān)系,而不是類(lèi)與類(lèi)之間的關(guān)系,只存在參數(shù)之間的傳遞,所以抽象類(lèi)須指定參數(shù)。抽象類(lèi)的屬性值,在子類(lèi)當(dāng)中也能獲取到。

    2. 繼承Bean

    1)在Spring中,Bean的繼承是由parent屬性指定的,如:

    <bean id="son" class="com.dfsj.Son" parent="test"> parent指定的值是父類(lèi)在容器中的id

    2)當(dāng)子類(lèi)信息與父類(lèi)信息不一致時(shí),子類(lèi)的覆蓋父類(lèi)的
    3)子類(lèi)無(wú)法從父類(lèi)繼承這些屬性:depends-on、autowire、singleton、scope、lazy-init

    3 .Spring中Bean的繼承與Java中類(lèi)的繼承的區(qū)別:

    1)前者是對(duì)象與對(duì)象之間的關(guān)系,后者是類(lèi)與類(lèi)的關(guān)系
    2)前者主要表現(xiàn)為參數(shù)值的延續(xù),后者主要是方法、屬性的延續(xù)
    3)Spring中的Bean不可作為父Bean使用,而Java中子類(lèi)可以當(dāng)成父類(lèi)實(shí)例使用

    4.工廠Bean

    詳情參見(jiàn)P580-P582
    1.工廠Bean是實(shí)現(xiàn)FactoryBean接口的Bean

    2.FactoryBean接口提供了如下幾個(gè)方法:
    (1) T getObject():返回該工廠的自定義內(nèi)容
    (2) class<?> getObjectType():返回該工廠自定義內(nèi)容(java實(shí)例)的類(lèi)型(實(shí)現(xiàn)類(lèi))
    (3) boolean isSingleton():返回自定義的java實(shí)例是否為單例模式

    3.工廠Bean配置在xml文件后,通過(guò)Spring容器的getBean()方法獲取時(shí),得到的不是該Bean的實(shí)例,而是由開(kāi)發(fā)者在getOject()方法里自定義的返回值,可能是一個(gè)數(shù)字,也可能是一個(gè)字符串,也可能是一個(gè)對(duì)象,所以此時(shí)配置工廠Bean時(shí)的id屬性指定的是getObject方法返回值在容器中的唯一標(biāo)識(shí)。

    4.如何返回工廠Bean本身?
    當(dāng)我們?cè)谟肧pring容器的getBean()方法獲取工廠Bean時(shí),在id前面加上"&"符
    號(hào)即可,如:

    ApplicationContext app = new ClassPathXmlApplicationContext("beans.xml"); app.getBean("&factoryBeanId");

    5.強(qiáng)制初始化其他Bean
    如果某個(gè)類(lèi)的初始化塊中使用了其他Bean,則這種依賴不夠直接,當(dāng)spring初始主調(diào)Bean時(shí),可能會(huì)由于初始化塊中的其他Bean還未被初始化,則會(huì)拋出像空指針之類(lèi)的異常。這時(shí)我們可通過(guò)depends-on屬性在初始化主調(diào)Bean前強(qiáng)制先初始化其他Bean,如:

    <bean id="person" class="com.test.Person" /> <bean id="test" class="com.test.Test" depends-on="person" />

    Spring中Bean的生命周期

    1. prototype作用域的Bean的生命周期
    當(dāng)Spring容器創(chuàng)建了prototype作用域的Bean實(shí)例之后,Bean實(shí)例完全交給客戶端代碼管理,容器不再跟蹤其生命周期,且每次客戶端請(qǐng)求該Bean時(shí),都會(huì)新建一個(gè)實(shí)例。
    2. singleton作用域的Bean的生命周期
    每次客戶端請(qǐng)深圳市singleton作用域的Bean時(shí),返回的都是同一個(gè)實(shí)例,spring容器負(fù)責(zé)跟蹤Bean實(shí)例的產(chǎn)生和銷(xiāo)毀。
    3. Spring如何管理Bean的生命周期
    1)依賴注入之后的行為,兩種方式:
    (1) 通過(guò)實(shí)現(xiàn)InitializingBean接口,然后利用afterPropertiesSet()方法處理
    (2) 通過(guò)<bean.../>元素的init-method屬性指定的方法處理

    <bean id="test" class="com.dfsj.Test" init-method="initMethod"><property name="username" value="peter"/> </bean> //這里的意思是,在完成Test注入之后,先執(zhí)行Test里的initMethod()方法 //如果(1)、(2)兩種方式都實(shí)現(xiàn)了,則在依賴注入之后,先執(zhí)行(1)的方法

    2)Bean銷(xiāo)毀之前的行為,兩種方式
    (1) 通過(guò)實(shí)現(xiàn)DisposableBean接口,然后利用destroy()方法處理
    (2) 通過(guò)<bean.../>元素的destroy-method屬性指定要執(zhí)行的處理方法
    如果(1)、(2)兩種方式都實(shí)現(xiàn)了,則在依賴注入之后,先執(zhí)行(1)的方法

  • 協(xié)調(diào)作用域不同步的Bean:參見(jiàn)P589-P591
  • Spring的其他依賴配置

    如果Spring框架用得熟練,別人給你任何一段Java代碼,你都能用spring的配置文件配置出來(lái)。前面了解了用<property.../>元素配setter方法、用<constructor-arg.../>元素配置有參構(gòu)造等等,下面我們來(lái)了解下如何配一個(gè)類(lèi)的setter方法、普通方法、屬性、Field
    詳情參見(jiàn)P592~P599

    1. 使用PropertyPathFactoryBean獲取其他Bean的屬性值

    1)PropertyPathFactoryBean屬于工廠Bean,所以獲得其他Bean的屬性值的原理就是利用工廠Bean的getObject自定義返回值實(shí)現(xiàn)的,示例如:

    <bean id="test" class="org.springframework.beans.factory.config.PropertyPathFactoryBean"><!-- person是Person類(lèi)在容器中的id --><property name="targetBeanName" value="person"/> <property name="propertyPath" value="name"/> </bean>

    2)解釋上面配置:給PropertyPathFactoryBean的targetBeanName屬性注入指定Bean的id,給propertyPath屬性注入指定需要返回值的屬性,通過(guò)容器獲的getBean(“test”)方法獲取的值就是Person類(lèi)的name屬性的值

    3)獲取指定Bean的具體某個(gè)屬性值的簡(jiǎn)單方式:

    <bean id="son.age" class="org.springframework.beans.factory.config.PropertyPathFactoryBean"/>//此時(shí)容器getBean方法得這樣寫(xiě):getBean("son.age"); //son是Son類(lèi)在容器中的唯一標(biāo)識(shí)

    2. 使用FieldRetrivingFactoryBean獲取其他Bean的Field值

    首先要明確的是,這里所說(shuō)的Field都是以public修飾的

    1)獲取靜態(tài)的Field的值,用targetClass屬性

    <bean id="test" class="org.springframework.beans.factory.config.FieldRetrievingFactoryBean"><property name="targetClass" value="com.dfsj.Test"/> <property name="targetField" value="NAME"/> </bean>//或者: <bean id="test" class="org.springframework.beans.factory.config.FieldRetrievingFactoryBean"><property name="targetClass" value="com.dfsj.Test"/> <property name="staticField" value="com.dfsj.Test.NAME"/> </bean>

    2)獲取實(shí)例Field,targetObject屬性

    <bean id="test" class="org.springframework.beans.factory.config.FieldRetrievingFactoryBean"><property name="targetObject" ref="test"/> <property name="targetField" value="age"/> </bean>

    雖然2) 也能獲取靜態(tài)Field值,但不推薦這么用

    3. 使用MethodInvokingFactoryBean獲取其他Bean的方法的返回值

    1)獲取靜態(tài)方法返回值

    <bean id="jt" class="org.springframework.beans.factory.config. MethodInvokingFactoryBean"><property name="targetClass" value="com.dfsj.Test"/> <property name="targetMethod" value="staticMethodName"/><property name="arguments" ><list><value>"firstArgument"</value><value>"secondArgument"</value></list></property> </bean>

    2)獲取普通方法返回值

    <bean id="pu" class="org.springframework.beans.factory.config. MethodInvokingFactoryBean"><property name="targetObject" ref="test"/> <property name="targetMethod" value="staticMethodName"/><property name="arguments" value="傳一個(gè)參數(shù)" /> </bean>

    Spring基于xml Schema的簡(jiǎn)化配置

    1. p:命名空間

    p:命名空間用于代替<property.../>元素進(jìn)行設(shè)值注入
    1.語(yǔ)法
    1)基本數(shù)據(jù)類(lèi)型屬性:p:屬性名=“值”
    2)引用類(lèi)型屬性:p:屬性名-ref=“引用Bean的id”
    2.導(dǎo)入p:命名空間

    http://www.springframework.org/schema/p

    3.示例

    <bean id="test" class="com.dfsj.Test" p:name="peter" p:person-ref="person"/> //等價(jià)于: <bean id="test" class=" com.dfsj.Test "><property name="name" value="peter"/ ><property name="person" ref="person"/ > </bean>
  • 注意
    如果Bean的屬性名以"-ref" 結(jié)尾,那么采用p:命名空間就會(huì)發(fā)生沖突
  • 2. c:命名空間

    c:命名空間用于代替<constructorg-arg.../>元素
    1. 導(dǎo)入c:命名空間
    http://www.springframework.org/schema/c
    2. 語(yǔ)法
    index是參數(shù)下標(biāo),從0開(kāi)始
    1)基本數(shù)據(jù)類(lèi)型:c:構(gòu)造參數(shù)名=“值” 或c:_index=“值”
    2)引用類(lèi)型:c: 構(gòu)造參數(shù)名-ref=“引用Bean的id” 或 c:_index-ref=“其他Bean的id”
    3.示例

    <bean id="test" class="com.dfsj.Test" c:name="jhon" c:axe-ref="stoneAxe"/> //等價(jià)于: <bean id="test" class=" com.dfsj.Test ">< constructorg-arg value="jhon"/ >< constructorg-arg ref=" stoneAxe "/ > </bean>

    3. util命名空間

    1.constant
    用于獲取指定類(lèi)的靜態(tài)Field值,它是FieldRetrievingFactoryBean的簡(jiǎn)化配置,如:

    <util:constant id="person.age" static-field="AGE" />

    2.property-path
    用于獲取指定對(duì)象的getter方法的返回值,它是PropertyPathFactoryBean的簡(jiǎn)化,如:

    <util:property-path id="testId" path ="person.name" />
  • list
    用于定義一個(gè)List集合,支持<value.../>、<ref.../>、<bean.../>等子元素,如:
  • < util:list id="schools" list-class="java.util.LinkedList ">< value>小學(xué)</value>< value>中學(xué)</value>< value>大學(xué)</value> </ util:list >

    4.set
    用于定義一個(gè)Set集合,支持<value.../>、<ref.../>、<bean.../>等元素,如:

    < util:set id="axes" set-class="java.util.HashSet ">< value>字符串值</value><bean class=" com.test.SteelAxe "/>< ref bean="stoneAxe"/> </ util:set >

    5.map
    用于定義一個(gè)Set集合,支持<entry.../>元素定義key-value對(duì),如:

    < util:map id="sores" map-class="java.util.TreeMap ">< entry key="數(shù)學(xué)" value="88"/>< entry key="美術(shù)" value="80"/> </ util:map >

    6.properties
    用于加載一份資源文件,并創(chuàng)建一個(gè)Properties實(shí)例

    < util:properties id="test" location ="classpath:myProperties.properties "/>

    4.Spring的其他簡(jiǎn)化配置的schema

  • spring-aop-4.0.xsd :用于簡(jiǎn)化springAOP配置
  • spring-jee-4.0.xsd :用于簡(jiǎn)化JavaEE配置
  • spring-jms-4.0.xsd :用于簡(jiǎn)化JMS配置
  • spring-lang-4.0.xsd :用于簡(jiǎn)化spring動(dòng)態(tài)語(yǔ)言 配置
  • .spring-tx-4.0.xsd :用于簡(jiǎn)化spring事務(wù) 配置
  • spring的兩種后處理器

    Bean后處理器:對(duì)容器中的Bean進(jìn)行后處理,進(jìn)行額外的加強(qiáng)
    容器后處理器:對(duì)IOC容器進(jìn)行后處理,用于增強(qiáng)容器的功能
    后處理器英文Post Processor

    1. Bean后處理器

  • 定義
    實(shí)現(xiàn)BeanPostProcessor接口的Bean就是Bean后處理器,它可對(duì)容器中的某一批Bean進(jìn)行增強(qiáng)處理

  • BeanPostProcessor接口有如下兩個(gè)方法:
    下同的bean是要處理的Bean實(shí)例,name是該Bean配置的id
    1)Object postProcessBeforeInitialization(Object bean, String name) throws Exception
    在注入依賴之后初始化Bean之前調(diào)用

  • Object postProcessAfterInitialization(Object bean, String name) throws Exception
    如果指定了init-method屬性,則在它指定的方法之后執(zhí)行
  • 兩個(gè)常見(jiàn)的Bean后處理器
    1)BeanNameAutoProxyCreator:根據(jù)實(shí)例Bean的name屬性創(chuàng)建Bean實(shí)例的代理
    2)DefaultAdvisorAutoProxyCreator:根據(jù)提供的Advisor對(duì)容器中的所有Bean他建代理

  • Bean后處理器會(huì)對(duì)容器中的所有Bean進(jìn)行后處理(在方法里可過(guò)濾掉某些不需要處理的Bean),所以在配置Bean后處理器可以不用指定id。如果用BeanFactroy作為Spring容器,則程序必須先獲取Bean后處理器實(shí)例,然后手動(dòng)注冊(cè),詳情參見(jiàn)P617

  • Bean后處理器與其他初始化方法的執(zhí)行順序
    注入完成
    Bean后處理器的postProcessBeforeInitialization方法
    InitializingBean接口的afterPropertiesSet方法
    init-method屬性指定的方法
    Bean后處理器的postProcessAfterInitialization方法

  • 2. 容器后處理器

  • 定義
    實(shí)現(xiàn)BeanFactoryPostProcessor接口的類(lèi)就是容器后處理器,它負(fù)處理容器本身
  • BeanFactoryPostProcessor接口的方法
    void postProcessBeanFactory(ConfigurableListableBeanFactory bean) throws BeansException;
  • 常用的幾個(gè)容器后處理器
    1)PropertyPlaceholderConfigurer:屬性占位符配置器
    2)PropertyOverrideConfigurer:重寫(xiě)占位符配置器
    3)CustomAutowireConfigurer:自定義自動(dòng)裝配的配置器
    4)CustomScopeConfigurer:自定義作用域的配置器
  • 和Bean后處理器一樣,容器后處理器配置在Spring容器中時(shí),如果以ApplicationContext作為Spring容器,則容器會(huì)自動(dòng)檢測(cè)到容器后處理器,所以不需要配置id,但如果使用BeanFactory作為Spring容器,則必須手動(dòng)注冊(cè)
  • 如果配置了多個(gè)容器后處理器,則可要求容器后處理器必須實(shí)現(xiàn)Ordered接口,然后指定order屬性
  • 3.容器后處理器之屬性占位符配置器

  • PropertyPlaceholderConfigurer這個(gè)屬性占位符配置器可讀取Properties文件里的鍵值對(duì),先加載properties文件,再用EL表達(dá)式取值,如:
  • Properties文件代碼:
    username=“Peter”
    password=“123456”
  • beans.xml文件配置代碼:
  • <bean class="org.springframework.beans.factory.config.PropertyPlaceholderConfigurer"><property name="locations" > <list><!-- 如果有多個(gè)配置文件,可依次羅列出來(lái) --><value>myPropertyFile.properties</value></list></property> </bean> <bean id="user" class="com.dfsj.User"><property name="name" > ${username} </property><property name="password" > ${password} </property> </bean>

    4.基于XML Schema的簡(jiǎn)化配置

    <context:property-placeholder location="classpath:myPropertyFile.properties"/>

    4.容器后處理器之重寫(xiě)占位符配置器

  • PropertyOverrideConfigurer這個(gè)重寫(xiě)占位符配置器,較屬性占位符配置器多了一個(gè)功能,那就是Properties文件里的鍵值對(duì)的值可覆蓋spring的xml配置文件里的值,前提需要Properties文件里的鍵值對(duì)滿足以下格式:
    容器中配置的Bean的id.該Bean的屬性 = 值
  • 示例
  • //1.Properties文件代碼:user.username="peter"user.password="123456"//2.對(duì)應(yīng)beans.xml代碼: <bean class=" org.springframework.beans.factory.config.PropertyOverrideConfigurer"><property name="locations" > <list><!-- 如果有多個(gè)配置文件,可依次羅列出來(lái) --><value>myPropertyFile.properties</value></list></property> </bean> <!-- 下面Bean里的屬性注入的值會(huì)被覆蓋 --> <bean id="user" class="com.dfsj.User"><property name="name" > 張三 </property><property name="password" > 654321 </property> </bean>

    3.基于XML Schema的簡(jiǎn)化配置

    <context:property-override location="classpath:myPropertyFile.properties"/>

    Spring 注解之零配置

    1.指定SpringBean的注解

  • 當(dāng)不用xml配置文件將Java類(lèi)配置成Spring容器的Spring Bean時(shí),我們就需要以下幾個(gè)注解來(lái)指定:
    @Component :標(biāo)注Java類(lèi)為普通Spring Bean
    @Controller :標(biāo)注Java類(lèi)為控制器組件
    @Service :標(biāo)注Java類(lèi)為業(yè)務(wù)邏輯組件
    @Repository :標(biāo)注Java類(lèi)為DAO組件
  • 為指定的Spring Bean定義名字(相當(dāng)于之前配置文件里的id值)
    默認(rèn)spring bean的名字是對(duì)應(yīng)Java類(lèi)的類(lèi)名小寫(xiě)首字母
    自定義名字,如: @Component(“myName”)
  • 2.搜索Spring Bean

  • 當(dāng)不用xml配置時(shí),指定成Spring Bean的Java類(lèi)還需要掃描搜索才能找到,這就需要在xml配置文件中指定掃描的包路徑,此時(shí)需要導(dǎo)入context:命名空間:
  • xmlns:context="http://www.springframework.org/schema/context"xsi:schemaLocation=" http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context-3.0-xsd"<!-- 掃描下面包路徑,找到所有springBean--><context:component-scan base-package="包路徑" /> 這樣在創(chuàng)建Spring容器時(shí),spring容器會(huì)掃描搜索上面路徑下的所有被標(biāo)注成Springbean的Java類(lèi),然后創(chuàng)建對(duì)應(yīng)的實(shí)例放在Spring容器中。
  • 通過(guò)為< component-scan.../>元素添加<include-filter.../>或<exclude-filter.../>元素來(lái)指定Spring Bean類(lèi),即使該Java類(lèi)沒(méi)有使用Annotation
    滿足<include-filter.../>規(guī)則的Java類(lèi)會(huì)被當(dāng)成Spring Bean
    滿足< exclude-filter.../>規(guī)則的Java類(lèi)不會(huì)被當(dāng)成Spring Bean
    上面兩元素都要求指定如下兩屬性:
    type:指定過(guò)濾器類(lèi)型,有4種類(lèi)型:
    annotation:此時(shí)表達(dá)式需要指定一個(gè)Annotation類(lèi)完整名
    assignable:此時(shí)表達(dá)式需要指定一個(gè)Java類(lèi)
    regex:此時(shí)表達(dá)式需要指定.一個(gè)正則表達(dá)式
    aspectj:此時(shí)表達(dá)式需要指定一個(gè)AspectJ過(guò)濾器,如:org.example…*Service+
    expression:指定過(guò)濾器需要的表達(dá)式
    示例
  • <!-- 啟動(dòng)包掃描功能,使帶有@Controller、@Service、@Repository、@Component等注解的類(lèi)成為Spring容器的Bean --> <context:component-scan base-package="com.User" > <context:include-filter type="regex" expression=".*Dao"/><context:include-filter type="regex" expression=".*Service"/> </context:component-scan>

    3.配置依賴的@Resource注解

  • @Resource注解直接來(lái)源于JavaEE規(guī)范,其作用類(lèi)似<property.../>元素的ref
  • @Resource注解既能修飾setter方法,也能修飾Field。若不指定name值,則默認(rèn)以變量名為name值
  • 如果@Resource修飾的是接口Field,在沒(méi)有指定name時(shí)按byType方式注入,如果該接口有多個(gè)實(shí)現(xiàn)類(lèi)時(shí),則spring容器會(huì)因?yàn)椴恢唧w去找哪個(gè)類(lèi)而報(bào)錯(cuò)。所以,如果只有其中一個(gè)實(shí)現(xiàn)類(lèi)被指定為Spring Bean時(shí)不指定名字則不會(huì)報(bào)錯(cuò)。
  • 4.指定Bean作用域的@Scope注解

  • Spring Bean的默認(rèn)作用域是singleton

  • 定義Spring Bean作用域,如:

    @Scope("prototype")@Component("user")public class User { ...}
  • 自定義作用域解析器(不再基于Annotation的方法來(lái)指定作用域)
    自定義解析器類(lèi)必須實(shí)現(xiàn)ScopeMetadataResolver接口,還要配置在< component-scan.../>元素中,如:

  • <context:component-scan base-package="包路徑" scope-resolver="自定義解析器類(lèi)"/>

    5 定制SpringBean生命周期行為的注解

    @PostConstruct、@PreDestroy都直接來(lái)源于JavaEE規(guī)范,都用于修飾方法
    @PostConstruct修飾的方法在完成注入之后回調(diào),如果被它修飾的類(lèi)實(shí)現(xiàn)了InitializingBean接口,則@PostConstruct修飾的方法在afterPropertiesSet方法之前執(zhí)行
    @PreDestroy 修飾的方法在Bean銷(xiāo)毀前回調(diào)執(zhí)行

    6 自動(dòng)裝配和精裝配的注解

  • @AutoWired注解用于自動(dòng)裝配,可修飾setter方法、普通方法、Field、構(gòu)造器等
  • @AutoWired注解是通過(guò)byType方式裝配注入的
  • 如果@AutoWired要裝配的是數(shù)組或集合類(lèi)型對(duì)象時(shí),spring會(huì)搜索容器中所有該類(lèi)型的實(shí)例注入到其中,且集合類(lèi)型時(shí)必須指明泛型。
  • 如果@AutoWired要裝配的是接口,且該接口在spring容器中有多個(gè)實(shí)例,則此時(shí)根據(jù)@AutoWired 的byType方式裝配就會(huì)拋異常了,因?yàn)閟pring不知道具體要裝配哪個(gè),這時(shí)我們可以通過(guò)@Qualifier注解來(lái)精確裝配,如:
  • @Autowired @Qualifier("test") private TestInter test;

    7 Spring的其他注解

  • @DependsOn :修飾Bean類(lèi)或方法,用于在初始化其修飾的Bean前強(qiáng)制初始化其他Bean
    @DependsOn({“chinese”,“japanese”}) //在初化Person類(lèi)前初化chinese、japanese
    @ DependsOn(“chinese”) //只強(qiáng)制初始化一個(gè)Bean
  • @Lazy :是否要在創(chuàng)建Spring容器時(shí)預(yù)初始化該Bean,默認(rèn)false
    @Lazy(true) :表示要延遲初始化該Bean,即不預(yù)初始化。
  • Spring的AOP

    為什么需要AOP?
    面向?qū)ο缶幊?#xff08;OOP)里,如果有共用的代碼我們一般的做法是提取出一個(gè)公共方法供大家調(diào)用,這種方式并沒(méi)有完全解耦,比如說(shuō)有一個(gè)方法之前調(diào)用過(guò)公共代碼,現(xiàn)需求變成該方法不需要調(diào)用公共代碼了,此時(shí)我們還得去該方法里刪除公共代碼塊。
    而面向切面編程(AOP)不止能提取出公共代碼,而且還能控制哪些方法調(diào)用該公共代碼,其他方法根本不知道發(fā)生了什么變化,這就實(shí)現(xiàn)了完全的解耦。所有AOP很有用。
    比如事務(wù)管理、安全檢查、緩存、對(duì)象池管理等等都是很好的AOP思想。
    spring的AOP也需要jar包:aspectjweaver.jar和aspectjtr.jar
    在Spring的AOP中,連接點(diǎn)(切入點(diǎn))總是方法的調(diào)用

    1 基于注解管理的AOP

    1.1 使用步驟

  • 啟動(dòng)@AspectJ支持
    在spring配置文件中加入下面配置:
  • <aop:aspectj-autoproxy /> //也可用以下方式啟動(dòng): <bean class="org.springframework.aop.aspectj.annotation.AnnotationAwareAspectJAutoProxyCreator"/> //AnnotationAwareAspectJAutoProxyCreator是一個(gè)Bean后處理器,為spring容器中的bean生成AOP代理

    2.定義切面Bean
    定義切面Bean用@Aspect注解,如:

    @Aspectpublic class LogAspect{....}

    定義好的切面Bean也需要掃描成Spring Bean,有如下兩種方式:
    1):在切面Bean里加入@Component注解
    2):用include-filter元素:

    <context:component-scan base-package="com.*" ><context:include-filter type="annotation" expression="org.aspectj.lang.annotation.Aspect"/> </context:component-scan>

    3.定義一個(gè)要被增強(qiáng)處理的類(lèi)

    @Component public class User {public void say(){System.out.println("被增強(qiáng)處理的方法");} }

    4.指定切入點(diǎn)和增強(qiáng)處理方法

    @Aspect @Component public class BeforeAop {//訪問(wèn)修飾符public 可省略@Before("execution(public void com.User.User.say())")public void before(){System.out.println("在之前切入點(diǎn)之前的增強(qiáng)處理");} }

    execution方法是用來(lái)指定切入點(diǎn)的,這和AspectJ的語(yǔ)法一樣。
    由于通常的增強(qiáng)處理是對(duì)一批方法的處理,所以需要通匹配符*,如下:

    @Before("execution(* *.*(..))")

    根據(jù)Before Aop里的示例可知,第一個(gè)*表示返回值為任意類(lèi)型,第二個(gè)*表示所有類(lèi),第三個(gè)*表示所有方法,括號(hào)里的…表示任意參數(shù)
    如果是某個(gè)包及其子包的所有類(lèi)的所有方法都要匹配,則應(yīng)如下:

    @Before("execution(* com.aops..*.*(..))")

    …代表零個(gè)或多個(gè)
    1.2 簡(jiǎn)單示例

    //1.配置文件代碼: <?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:context="http://www.springframework.org/schema/context" xmlns:mvc="http://www.springframework.org/schema/mvc"xmlns:aop="http://www.springframework.org/schema/aop"xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-4.2.xsdhttp://www.springframework.org/schema/aop http://www.springframework.org/schema/aop/spring-aop-4.2.xsdhttp://www.springframework.org/schema/mvc http://www.springframework.org/schema/mvc/spring-mvc-4.2.xsdhttp://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context-4.2.xsd"><!-- Aspectj支持 --><aop:aspectj-autoproxy /><!-- 啟動(dòng)包掃描功能--><context:component-scan base-package="com.*" > <context:include-filter type="annotation" expression="org.aspectj.lang.annotation.Aspect" /></context:component-scan> </beans> //2. 定義增強(qiáng)處理的切面類(lèi)和切入點(diǎn)@Aspect@Componentpublic class BeforeAop {@Before("execution(public void com.User.User.say())")public void before(){System.out.println("在切入點(diǎn)之前的增強(qiáng)處理");}} //3. 定義一個(gè)要被增強(qiáng)處理的類(lèi)@Componentpublic class User {public void say(){System.out.println("被增強(qiáng)處理的方法");}} //4.測(cè)試:public class Test {public static void main(String[] args) {ApplicationContext app = new ClassPathXmlApplicationContext("spring.xml"); User t = (User) app.getBean("user");t.say();}}

    執(zhí)行結(jié)果:
    在切入點(diǎn)之前的增強(qiáng)處理
    被增強(qiáng)處理的方法

    1.3 定義After增強(qiáng)處理

  • 示例
  • @After("execution(* *.*(..))")public void after(){System.out.println("在切入點(diǎn)之后處理");}

    2.After增強(qiáng)處理與AfterReturning 增強(qiáng)處理的區(qū)別:
    After增強(qiáng)處理不論目標(biāo)方法是否正常結(jié)束,都會(huì)調(diào)用處理
    AfterReturning 只在目標(biāo)方法成功完成后才處理調(diào)用
    1.4 定義AfterReturning 增強(qiáng)處理

  • AfterReturning增強(qiáng)處理是在目標(biāo)方法返回值后進(jìn)行增強(qiáng)處理,比After晚招牌處理。它用@AfterReturning注解標(biāo)注,該注解有兩常用屬性:
    pointcut/value:這兩屬性作用一樣,用于指定切入點(diǎn)的表達(dá)式
    returning:指定一個(gè)返回值形參名,該增強(qiáng)處理定義的方法可通過(guò)該形參名來(lái)訪問(wèn)目標(biāo)方法的返回值
    還有一屬性argNames:參數(shù)列表參數(shù)名
  • 示例:
  • @AfterReturning(pointcut="execution(* *.*(..))",returning="objss") public void returnMethod(Object objss){System.out.println(objss); }

    1.5 定義AfterThrowing增強(qiáng)處理
    類(lèi)似于AfterReturning增強(qiáng)處理,例:

    @AfterThrowing(throwing="ex", pointcut="execution(* *.*(..))") public void doRecoverActions(Throwable ex) { System.out.println("目標(biāo)方法中拋出的異常:" + ex); System.out.println("模擬拋出異常后的增強(qiáng)處理..."); }

    1.6 定義Around增強(qiáng)處理
    Around 增強(qiáng)處理近似等于 Before 增強(qiáng)處理和 AfterReturning 增強(qiáng)處理的總和。它既可在執(zhí)行目標(biāo)方法之前織入增強(qiáng)操作,也可以之后織入。它既可改變執(zhí)行目標(biāo)方法的參數(shù)值,也可改變目標(biāo)方法之后的返回值。甚至能控制目標(biāo)方法什么時(shí)候執(zhí)行。如:

    @Around("execution(* com.aops.User.getHeight(..))") public Object around(ProceedingJoinPoint joinPoint) throws Throwable{System.out.println("---around開(kāi)始-------");Object[] arg = joinPoint.getArgs();//獲得要傳給目標(biāo)方法的所有參數(shù)argArray[0] = "改變第一個(gè)參數(shù)的值";//改變傳入目標(biāo)方法的參數(shù)Object o = joinPoint.proceed(arg);//調(diào)用目標(biāo)方法,并得到返回值System.out.println(obj);//打印返回值 System.out.println(argArray.toString());//打印參數(shù)System.out.println("---around結(jié)束-------");return o+"調(diào)用目標(biāo)方法得到的結(jié)果";//改變調(diào)用目標(biāo)方法的返回值 }

    ProceedingJoinPoint是JointPoint的子類(lèi),其他增強(qiáng)處理的方法里如要想獲得傳入?yún)?shù)就得通過(guò)JointPoint的getArgs方法。
    注:只有Around增強(qiáng)處理能改變目標(biāo)方法參數(shù)。

    1.7 相同增強(qiáng)處理執(zhí)行順序
    1、如果是同一個(gè)切面類(lèi)里有兩個(gè)相同的增強(qiáng)處理在同一個(gè)連接點(diǎn)被織入時(shí),Spring Aop將隨機(jī)織入這兩個(gè)增強(qiáng)處理。
    2、 如果是兩個(gè)切面類(lèi)里有相同的增強(qiáng)處理在同一個(gè)連接點(diǎn)被織入時(shí),具有高優(yōu)先級(jí)的增強(qiáng)處理將先被織入。
    3、指定優(yōu)先級(jí)的兩個(gè)方法:
    1)讓切面類(lèi)實(shí)現(xiàn)org.springframework.core.Ordered接口,然后實(shí)現(xiàn)int getOrder()方法,該方法的返回值越小,優(yōu)先級(jí)越高
    2)用@Order注解修飾切面類(lèi),此時(shí)可指定一個(gè)int型的value,值越小優(yōu)先級(jí)越高

    1.8定義切入點(diǎn)
    AspectdJ和Spring都允許定義切入點(diǎn),即為一個(gè)切入點(diǎn)表達(dá)式起一個(gè)名字,從而允許在多個(gè)增強(qiáng)處理中能重復(fù)調(diào)用。
    1、定義:用@Pointcut注解修飾一個(gè)返回類(lèi)型為void的空方法,方法名即為切入點(diǎn)名字。

    @Pointcut("execution(* *.*(..))") public void myPointcut(){ }

    如果希望該切入點(diǎn)只能在本切面類(lèi)使用,則需將public改為private
    2、引用:
    1) 在同一個(gè)切面類(lèi)里可直接引用,如:

    @After(value="myPointcut()") public void after(){ System.out.println("after......"); }

    2) 如果是引用不同切面類(lèi)里的切入點(diǎn),則需要加上其他切面類(lèi)的類(lèi)名,如:

    @After(value="OtherAdvice.myPointcut()") public void after(){System.out.println("after......"); }

    1.9 切入點(diǎn)指示符

  • execution:匹配執(zhí)行方法的連接點(diǎn),格式如下:
    execution(訪問(wèn)修飾符 目標(biāo)方法返回值類(lèi)型 目標(biāo)所屬類(lèi).目標(biāo)方法名(形參列表)目標(biāo)拋出異常)
    execution(public * * (…)) //匹配任意public方法
    execution(* set*(…)) //匹配任何方法名以set開(kāi)始的方法
    execution(* com.aop.User.(…)) //匹配User類(lèi)的所有方法
    execution( com..(…)) //匹配一個(gè)包中任意類(lèi)的任意方法
  • within:限定匹配特定類(lèi)型的連接點(diǎn)
    within(com.aop.) //匹配aop包中的任意方法
    within(com.aop…) //匹配aop包及其子包的任意方法
  • this:匹配AOP代理
    this(com.aop.UserInter) //匹配AOP實(shí)現(xiàn)UserInter接口,注意是AOP,不太理解
    4.target:匹配目標(biāo)對(duì)象必須是指定類(lèi)型
    target(com.aop.User)
  • args:對(duì)連接點(diǎn)(目標(biāo)方法)的參數(shù)類(lèi)型進(jìn)行限制
    args(java.lang.String) //只匹配傳入?yún)?shù)是String類(lèi)型,且只傳一個(gè)參數(shù)的所有目標(biāo)方法
    這與execution(* *(java.lang.String))不同,execution里表示只匹配只包含一個(gè)String類(lèi)型形參的方法
    6.bean:只匹配指定Bean實(shí)例的目標(biāo)方法
    bean(*Service) // 匹配名字以Service結(jié)尾的bean實(shí)例
    其中名字是Bean的id或name
    1.10 切入點(diǎn)組合表達(dá)
    &&:同時(shí)匹配
    ||:只需要滿足一個(gè)切入點(diǎn)表達(dá)式即可
    !:匹配不是該切入點(diǎn)表達(dá)式的其他連接點(diǎn)
    示例:
  • @Aspect @Component public class BeforeAop {@Before("execution(!public void com.User.User.*())")public void before(){System.out.println("在切入點(diǎn)之前的增強(qiáng)處理");} }

    只要不是User類(lèi)的目標(biāo)方法都能被匹配

    2基于xml配置的AOP

    不推薦使用XML配置方式,推薦使用@Aspect
    2.1 注意
    1、基于注解的AOP配置能被Spring AOP和AspectJ同時(shí)支持
    2、使用 <aop:config…/>元素可能與Spring的自動(dòng)代理方式?jīng)_突,因此,要么全部使用<aop:config…/>配置方式,要么全部使用自動(dòng)代理方式,不能二者混用
    3、XML配置方式僅支持”singleton”的切面Bean,不能在xml中組合多個(gè)命名連接點(diǎn)的聲明
    4、XML配置方式時(shí),所有關(guān)于AOP的信息都必須配在<aop:config…/>元素中
    5、如果<aop:config…/>元素里同時(shí)有<aop:pointcut…/>、<aop:advisor…/>、<aop:aspect…/>元素時(shí),必須是pointcut、advisor、aspect這樣的出現(xiàn)順序。
    6、如果是要增強(qiáng)處理一個(gè)有返回值的目標(biāo)方法,則對(duì)應(yīng)切面類(lèi)的增強(qiáng)方法也必須寫(xiě)上返回值,否則系統(tǒng)一直處于等待狀態(tài)中。
    7、XML方式的組合運(yùn)算符:and(相當(dāng)于&&)、or(相當(dāng)于||)、not(相當(dāng)于!)
    8、遺留問(wèn)題:<aop:advisor…/>是什么?跟spring自動(dòng)代理有什么關(guān)系?什么是自動(dòng)代理?
    2.2 示例與說(shuō)明
    1、切面類(lèi):

    public class AspectAdvice {public void after(){System.out.println("調(diào)用目標(biāo)方法結(jié)束后回調(diào)用,無(wú)論成與否");} public void before(){System.out.println("before......");} public Object afterReturning(Object obj){System.out.println("成功返回后回調(diào)"+obj);return obj;} public Object around(ProceedingJoinPoint jp) throws Throwable{System.out.println("調(diào)用目標(biāo)方法前執(zhí)行增強(qiáng)處理...");Object[] arg =jp.getArgs(); //得到目標(biāo)方法的形參列表Object obj = jp.proceed(arg); // 調(diào)用目標(biāo)方法System.out.println("調(diào)用目標(biāo)方法這后執(zhí)行的增強(qiáng)處理..."); return obj;} }2、配置文件: <!-- 注入切面類(lèi) --> <bean id="advice" class="com.aops.AspectAdvice" /> <aop:config><!-- 配置切入點(diǎn),該配置一定要出現(xiàn)在aop:aspect前面 --><aop:pointcut id="myPointcut" expression="execution(* com.aops.User.getHeight(..))"/><!-- order屬性指定優(yōu)先級(jí),值越小,優(yōu)先級(jí)越高 --><aop:aspect id="aspect" ref="advice" order="1"><!-- method屬性指定調(diào)用切面類(lèi)的哪個(gè)增強(qiáng)方法 --><aop:after method="after" pointcut="execution(* com.aops.User.*(..))"/><!-- pointcut屬性指定切入表達(dá)式 --><aop:before method="before" pointcut="execution(* com.aops.User.*(..))"/><!-- returning指定接收返回參數(shù)的參數(shù)名 --><aop:after-returning returning="obj" pointcut-ref="myPointcut" method="afterReturning"/><!-- pointcut-ref屬性指定配置的切入表達(dá)式id --><aop:around method="around" pointcut-ref="myPointcut"/> </aop:aspect> </aop:config>

    注:當(dāng)<aop:pointcut…/>元素是<aop:aspect >的子元素時(shí),說(shuō)明該切入點(diǎn)只能被當(dāng)前切面類(lèi)使用

    Spring的事務(wù)

  • 對(duì)于不同的持久層訪問(wèn)技術(shù),編程式事務(wù)提供了一致的事務(wù)編程風(fēng)格,通過(guò)模板化操作一致地管理事務(wù)。
  • 聲明式事務(wù)是基于AOP實(shí)現(xiàn)的
  • 傳統(tǒng)的事務(wù)編程與具體的事務(wù)操作代碼耦合,如果切換事務(wù)策略時(shí),必須手動(dòng)更改代碼,而使用Spring管理策略時(shí)則就會(huì)
  • Spring的事務(wù)機(jī)制是一種典型的策略模式,它本身沒(méi)有任何事務(wù)支持,只是負(fù)責(zé)包裝底層的事務(wù)
  • 1. Spring支持的事務(wù)策略

    spring各種全局事務(wù)、局部事務(wù)示例配置,參見(jiàn)P683-P685

    1.1 全局事務(wù)

  • 全局事務(wù)由應(yīng)用的服務(wù)器管理,需要底層服務(wù)器支持JTA(Java Transaction API)
  • 全局事務(wù)可以跨多個(gè)事務(wù)性資源(典型的例子是關(guān)系數(shù)據(jù)庫(kù)和消息對(duì)列)
  • 不論采用哪種持久層訪問(wèn)技術(shù),只要使用JTA全局事務(wù),Spring事務(wù)管理的配置就完全一樣,都采用全局事務(wù)管理策略。
    ###1.2 局部事務(wù)
  • 局部事務(wù)與底層采用的持久化技術(shù)有關(guān),當(dāng)采用了JDBC持久化時(shí),需要用Connection對(duì)象來(lái)操作事務(wù),當(dāng)采用了Hibernate持久化時(shí),需要用Session對(duì)象來(lái)操作事務(wù)。
  • 由于局部事務(wù)事務(wù)不需要應(yīng)用服務(wù)器參與事務(wù)管理,所以不能保證跨多個(gè)事務(wù)資源的事務(wù)的正確性,但實(shí)際情況是,大部分應(yīng)用都是使用單一的事務(wù)性資源
  • 1.3 PlatformTransactionManager

  • Spring事務(wù)策略是通過(guò)PlatformTransactionManager接口實(shí)現(xiàn)的,它是核心。當(dāng)?shù)讓硬捎貌煌某志没中g(shù)時(shí),系統(tǒng)只需要使用該接口的不同實(shí)現(xiàn)類(lèi)即可。
  • PlatformTransactionManager接口包含一個(gè)getTransaction(TransactionDefinition define)方法,該方法返回一個(gè)TransactionStatus對(duì)象,該對(duì)象就表示一個(gè)事務(wù),它可簡(jiǎn)單的控制和查詢事務(wù)。該事務(wù)可能是一個(gè)新的事務(wù),也可能是已經(jīng)存在的事務(wù),如果當(dāng)前執(zhí)行線程已經(jīng)處理事務(wù)管理下,則返回當(dāng)前線程的事務(wù),否則新建一個(gè)事務(wù)對(duì)象返回。它有如下方法:
    isNewTransaction():判斷是否是一個(gè)新事務(wù)
    setRollbackOnly():設(shè)置回滾
    isRollbackOnly():判斷是否有回滾標(biāo)志
  • TransactionDefinition 接口用于定義事務(wù)規(guī)則,如隔離級(jí)別、超時(shí)、只讀狀態(tài)等等….
  • 2 Spring的兩種事務(wù)管理方式

    2.1 編程式配置事務(wù)

  • 編程式通過(guò)寫(xiě)代碼的方式得到PlatformTransactionManager實(shí)例,然后設(shè)置開(kāi)始事務(wù)、提交事務(wù)和回滾事務(wù)。
    2.2 聲明式配置事務(wù)
  • 聲明式配置不寫(xiě)任何Java代碼,只需在XML文件中通過(guò)事務(wù)代理(AOP代理的一種)來(lái)配置。具體實(shí)現(xiàn)原理是,在目標(biāo)方法執(zhí)行前織入開(kāi)始事務(wù),在目標(biāo)方法執(zhí)行之后織入結(jié)束事務(wù)。推薦使用聲明式配置事務(wù)
  • spring用tx:命名空間的<tx:advice…/>元素來(lái)配置事務(wù)的增強(qiáng)處理,然后用<aop:advisor…/>元素啟用自動(dòng)代理
    3.注意:
    spring支持接口代理,也支持對(duì)具體的類(lèi)生成代理。
    如果一個(gè)具體的實(shí)現(xiàn)類(lèi)如UserDaoImpl沒(méi)有實(shí)現(xiàn)接口,按如下配置沒(méi)有問(wèn)題;但是,如果UserDaoImpl類(lèi)實(shí)現(xiàn)了接口,則下面的配置將會(huì)報(bào)錯(cuò),要解決這個(gè)問(wèn)題,需要在配置文件中設(shè)置proxy-target-class屬性的值為true,如下:
  • <aop:aspectj-autoproxy proxy-target-class="true"/>

    這是因?yàn)?#xff0c;Spring默認(rèn)采用JDK動(dòng)態(tài)代理,而CGLIB代理是面向接口代理的,二者區(qū)別需查閱相關(guān)資料。
    2.3 示例:
    對(duì)應(yīng)配置文件:

    <?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:util="http://www.springframework.org/schema/util"xmlns:aop="http://www.springframework.org/schema/aop"xmlns:tx="http://www.springframework.org/schema/tx"xmlns:p="http://www.springframework.org/schema/p"xmlns:context="http://www.springframework.org/schema/context"xsi:schemaLocation=" http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-2.0.xsd http://www.springframework.org/schema/txhttp://www.springframework.org/schema/tx/spring-tx-2.0.xsdhttp://www.springframework.org/schema/aop http://www.springframework.org/schema/aop/spring-aop-2.0.xsd http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context-4.1.xsdhttp://www.springframework.org/schema/utilhttp://www.springframework.org/schema/util/spring-util-4.1.xsd"> <!-- 掃描springbean --><context:component-scan base-package="com.transaction" /><!-- 定義數(shù)據(jù)源Bean,使用C3P0數(shù)據(jù)源,并配置相關(guān)信息 --><bean id="dataSource" class="com.mchange.v2.c3p0.ComboPooledDataSource"destroy-method="close" p:driverClass="com.mysql.jdbc.Driver"p:jdbcUrl="jdbc:mysql://localhost:3306/db1"p:user="root"p:password="root"p:maxPoolSize="40"p:minPoolSize="2"p:initialPoolSize="2"p:maxIdleTime="30"/><!-- 配置JDBC數(shù)據(jù)源的局部事務(wù)管理器:使用DataSourceTransactionManager類(lèi)該類(lèi)實(shí)現(xiàn)了PlatformTransactionManager接口,是針對(duì)采用數(shù)據(jù)源連接的特定實(shí)現(xiàn)所以,也需要注入DataSource的引用 --><bean id="transactionManagerId" class="org.springframework.jdbc.datasource.DataSourceTransactionManager" p:dataSource-ref="dataSource"/> <!-- 配置事務(wù)增強(qiáng)處理,指定事務(wù)管理器,transaction-manager屬性的默認(rèn)值是:transactionManager --> <tx:advice id="txAdvice" transaction-manager="transactionManagerId"><!-- 配置詳細(xì)的事務(wù) --><tx:attributes><!-- 所有以get開(kāi)頭的方法只能讀 --><tx:method name="get*" read-only="true" /><!-- 其他方法設(shè)置默認(rèn)隔離級(jí)別,超時(shí)為5秒 --><tx:method name="*" isolation="READ_COMMITTED"propagation="REQUIRED" timeout="5" /><!-- propagation屬性用于指定事務(wù)傳行為,它的值是枚舉值,具體每個(gè)值對(duì)應(yīng)的行為是什么,請(qǐng)參考P687或百度 。isolation指定事務(wù)隔離級(jí)別rollback-for指定觸發(fā)事務(wù)回滾的異常類(lèi)(須是全限定類(lèi)名),多個(gè)異常類(lèi)時(shí)用逗號(hào)隔開(kāi)no-rollback-for 指定不觸發(fā)事務(wù)回滾的異常類(lèi)--></tx:attributes></tx:advice><!-- 如果UserDaoImpl實(shí)現(xiàn)了接口,則必須加入以下代碼強(qiáng)制實(shí)現(xiàn)CGLIB動(dòng)態(tài)代理,cglib可以在運(yùn)行期擴(kuò)展Java類(lèi)與實(shí)現(xiàn)Java接口。cglib封裝了asm,可以在運(yùn)行期動(dòng)態(tài)生成新的class(默認(rèn)是JDK動(dòng)態(tài)代理),詳情可百度AOP的兩種代理方式 --><!-- <aop:aspectj-autoproxy proxy-target-class="true"/> --><!-- 配置AOP元素 --><aop:config><!-- 配置切入點(diǎn):即AOP適用的范圍 --><aop:pointcut id="point" expression="execution(* com.transaction.UserDaoImpl.*(..))"/><!-- 在切入點(diǎn) 應(yīng)用txAdvice增強(qiáng)處理--><aop:advisor advice-ref="txAdvice" pointcut-ref="point"/></aop:config></beans>

    對(duì)應(yīng)Java邏輯代碼:

    @Repository("userDao") public class UserDaoImpl{@Resource(name="dataSource")private DataSource dataSource;//插入操作public void insertData(){JdbcTemplate jt = new JdbcTemplate(dataSource);jt.update("insert into workers_info values(id,workername) values(1,你好)"); }//讀取操作public void getData(){ JdbcTemplate jt = new JdbcTemplate(dataSource);jt.execute("select * from workers_info");//該方法在事務(wù)配置里設(shè)置為 只讀,執(zhí)行下面的非讀操作會(huì)報(bào)錯(cuò)//jt.update("insert into workers_info values(id,workername) values(1,你好)");} }

    spring還可以為不同的方法指定不同的事務(wù)策略,具體參見(jiàn)P691
    spring還允許將事務(wù)放在Java類(lèi)中定義(@Transaction注解),具體參見(jiàn)P692

    3 spring事務(wù)的傳播屬性

    Spring補(bǔ)充知識(shí)

    ApplicationContextAware

    參考:https://www.jianshu.com/p/4c0723615a52

    注解@ControllerAdvice

    POJO:簡(jiǎn)單的Java對(duì)象即JavaBean
    EJB:服務(wù)器端組件模型

    本人將知識(shí)都生成了圖片,地址:https://img-blog.csdn.net/20160930173240547

    總結(jié)

    以上是生活随笔為你收集整理的spring知识概要的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。

    如果覺(jué)得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。

    ass日本丰满熟妇pics | 精品人妻中文字幕有码在线 | 国产午夜福利100集发布 | 国产精品国产三级国产专播 | 日日天干夜夜狠狠爱 | 午夜精品一区二区三区的区别 | 内射爽无广熟女亚洲 | 成人免费视频一区二区 | 4hu四虎永久在线观看 | 香港三级日本三级妇三级 | 最新国产麻豆aⅴ精品无码 | 人妻无码久久精品人妻 | 亚洲精品中文字幕久久久久 | 亚洲a无码综合a国产av中文 | 亚洲熟妇色xxxxx欧美老妇 | 欧美野外疯狂做受xxxx高潮 | 国产人成高清在线视频99最全资源 | 亚洲小说春色综合另类 | 免费视频欧美无人区码 | 久久久国产一区二区三区 | 久久久久99精品成人片 | 伊人久久大香线蕉午夜 | 国产精品无套呻吟在线 | 熟妇人妻无乱码中文字幕 | 99久久精品国产一区二区蜜芽 | 亚洲精品综合五月久久小说 | 久久亚洲国产成人精品性色 | 亚洲熟妇色xxxxx亚洲 | 一本色道婷婷久久欧美 | 高潮喷水的毛片 | 亚洲熟女一区二区三区 | 国产精品久久久久久久影院 | 国产97在线 | 亚洲 | 国产午夜亚洲精品不卡下载 | 亚洲国产日韩a在线播放 | 人妻无码久久精品人妻 | 国产精品久久久一区二区三区 | 樱花草在线播放免费中文 | 日韩无套无码精品 | 伦伦影院午夜理论片 | 夜夜夜高潮夜夜爽夜夜爰爰 | 99久久精品无码一区二区毛片 | 亚洲熟妇色xxxxx欧美老妇 | 国产色在线 | 国产 | 最新国产乱人伦偷精品免费网站 | 精品人人妻人人澡人人爽人人 | 人妻插b视频一区二区三区 | 装睡被陌生人摸出水好爽 | 免费无码av一区二区 | 无码人妻精品一区二区三区不卡 | 双乳奶水饱满少妇呻吟 | 免费视频欧美无人区码 | 麻豆精产国品 | 又色又爽又黄的美女裸体网站 | 东北女人啪啪对白 | 亚洲国产日韩a在线播放 | 亚洲精品美女久久久久久久 | 无码帝国www无码专区色综合 | 久久久久99精品成人片 | 中文字幕无线码免费人妻 | 色欲av亚洲一区无码少妇 | 久久伊人色av天堂九九小黄鸭 | 久久综合九色综合欧美狠狠 | 免费播放一区二区三区 | 亚洲欧美精品伊人久久 | 日韩在线不卡免费视频一区 | 日产精品高潮呻吟av久久 | 99久久精品无码一区二区毛片 | 六月丁香婷婷色狠狠久久 | 日韩人妻无码一区二区三区久久99 | 日韩人妻无码一区二区三区久久99 | 无码国内精品人妻少妇 | 正在播放老肥熟妇露脸 | 精品一区二区不卡无码av | 国产av剧情md精品麻豆 | 国产精品99爱免费视频 | 青草青草久热国产精品 | 国产乱人偷精品人妻a片 | 成年美女黄网站色大免费视频 | 欧美丰满熟妇xxxx性ppx人交 | 午夜嘿嘿嘿影院 | 欧美精品无码一区二区三区 | 正在播放老肥熟妇露脸 | 亚洲 日韩 欧美 成人 在线观看 | 自拍偷自拍亚洲精品被多人伦好爽 | 国产人妖乱国产精品人妖 | 久激情内射婷内射蜜桃人妖 | 俺去俺来也www色官网 | 性色欲网站人妻丰满中文久久不卡 | 国产在线精品一区二区三区直播 | 欧美真人作爱免费视频 | 中文字幕无码人妻少妇免费 | 亚洲国产欧美国产综合一区 | 国产三级精品三级男人的天堂 | av无码不卡在线观看免费 | 欧美丰满熟妇xxxx性ppx人交 | 秋霞成人午夜鲁丝一区二区三区 | 狂野欧美激情性xxxx | 中文字幕亚洲情99在线 | 中文无码伦av中文字幕 | 兔费看少妇性l交大片免费 | 欧美zoozzooz性欧美 | 国产97人人超碰caoprom | 激情内射日本一区二区三区 | 欧美日韩视频无码一区二区三 | 51国偷自产一区二区三区 | 中文字幕色婷婷在线视频 | 中文字幕亚洲情99在线 | 精品无码成人片一区二区98 | 伊人久久婷婷五月综合97色 | 欧美黑人巨大xxxxx | 美女毛片一区二区三区四区 | 国产又粗又硬又大爽黄老大爷视 | 国产97人人超碰caoprom | 亚洲精品无码人妻无码 | 国产莉萝无码av在线播放 | 亚洲熟妇自偷自拍另类 | 丰满人妻翻云覆雨呻吟视频 | 无遮无挡爽爽免费视频 | 综合人妻久久一区二区精品 | 日本丰满熟妇videos | 中文亚洲成a人片在线观看 | 午夜不卡av免费 一本久久a久久精品vr综合 | 无码av中文字幕免费放 | 宝宝好涨水快流出来免费视频 | 国产特级毛片aaaaaaa高清 | 夜夜躁日日躁狠狠久久av | 无码播放一区二区三区 | 亚洲日韩中文字幕在线播放 | 九月婷婷人人澡人人添人人爽 | 国产精品怡红院永久免费 | 久久精品国产一区二区三区肥胖 | 国内老熟妇对白xxxxhd | 日韩精品一区二区av在线 | 人人爽人人澡人人人妻 | 熟妇人妻无码xxx视频 | 国产精品久久久一区二区三区 | 久久久久亚洲精品中文字幕 | 久精品国产欧美亚洲色aⅴ大片 | 欧美精品一区二区精品久久 | 人妻尝试又大又粗久久 | 免费无码肉片在线观看 | 乱人伦中文视频在线观看 | 国产香蕉97碰碰久久人人 | 久久亚洲精品成人无码 | 精品午夜福利在线观看 | 久久精品无码一区二区三区 | 天天燥日日燥 | 狠狠噜狠狠狠狠丁香五月 | 欧美日韩人成综合在线播放 | 久久综合九色综合97网 | 亚洲精品鲁一鲁一区二区三区 | 国产口爆吞精在线视频 | 麻豆国产人妻欲求不满谁演的 | 国内精品人妻无码久久久影院 | 狠狠色欧美亚洲狠狠色www | 中文字幕无线码免费人妻 | 亚洲综合色区中文字幕 | 国产口爆吞精在线视频 | 亚洲国产精品久久人人爱 | 欧美35页视频在线观看 | 77777熟女视频在线观看 а天堂中文在线官网 | 久久久久亚洲精品中文字幕 | 国产精品久久久久久亚洲影视内衣 | 西西人体www44rt大胆高清 | 无码国产激情在线观看 | 国产成人精品视频ⅴa片软件竹菊 | 欧美成人午夜精品久久久 | 欧美人与物videos另类 | 国产免费观看黄av片 | 色综合久久中文娱乐网 | 丰满诱人的人妻3 | 人人爽人人爽人人片av亚洲 | 最新版天堂资源中文官网 | 亚洲精品国产第一综合99久久 | 秋霞成人午夜鲁丝一区二区三区 | 色综合久久久无码网中文 | 久久久精品人妻久久影视 | 午夜男女很黄的视频 | 欧美丰满少妇xxxx性 | 东京热无码av男人的天堂 | 97久久精品无码一区二区 | 国产精品久久国产三级国 | 亚洲人成影院在线观看 | 国产av一区二区精品久久凹凸 | 国产熟妇另类久久久久 | 久久人人爽人人爽人人片ⅴ | 亚洲国产精品成人久久蜜臀 | 人妻互换免费中文字幕 | 成人综合网亚洲伊人 | 麻豆果冻传媒2021精品传媒一区下载 | 亚洲精品美女久久久久久久 | 国色天香社区在线视频 | 亚洲精品午夜国产va久久成人 | 久久aⅴ免费观看 | 国产又爽又猛又粗的视频a片 | 特黄特色大片免费播放器图片 | 亚洲精品国产精品乱码视色 | 日产精品99久久久久久 | 国产激情一区二区三区 | 精品欧洲av无码一区二区三区 | 免费无码的av片在线观看 | 未满成年国产在线观看 | 亚洲精品久久久久中文第一幕 | 黑人玩弄人妻中文在线 | 无码一区二区三区在线 | 久久五月精品中文字幕 | 亚洲a无码综合a国产av中文 | 欧美精品免费观看二区 | 亚洲小说图区综合在线 | 在线а√天堂中文官网 | 18精品久久久无码午夜福利 | 久久午夜夜伦鲁鲁片无码免费 | 久久精品女人的天堂av | 国产精品永久免费视频 | 国产人妻精品午夜福利免费 | 亚洲欧美色中文字幕在线 | 国产网红无码精品视频 | 99久久精品午夜一区二区 | 激情人妻另类人妻伦 | 四十如虎的丰满熟妇啪啪 | 国产真实夫妇视频 | 亚洲精品午夜无码电影网 | 成 人影片 免费观看 | 丝袜 中出 制服 人妻 美腿 | 亚洲精品国产第一综合99久久 | 免费乱码人妻系列无码专区 | 国产无av码在线观看 | av无码久久久久不卡免费网站 | 性欧美videos高清精品 | 日韩视频 中文字幕 视频一区 | 少妇被粗大的猛进出69影院 | 亚洲精品久久久久avwww潮水 | 久青草影院在线观看国产 | 曰本女人与公拘交酡免费视频 | 精品人妻人人做人人爽夜夜爽 | 强辱丰满人妻hd中文字幕 | 国产精品沙发午睡系列 | 国产免费无码一区二区视频 | 成熟妇人a片免费看网站 | 奇米影视888欧美在线观看 | 欧美一区二区三区视频在线观看 | 国产sm调教视频在线观看 | 亚洲综合在线一区二区三区 | 精品熟女少妇av免费观看 | 亚洲欧美国产精品专区久久 | 午夜福利试看120秒体验区 | 波多野42部无码喷潮在线 | 精品偷拍一区二区三区在线看 | 76少妇精品导航 | 丝袜美腿亚洲一区二区 | 中文字幕乱妇无码av在线 | 亚洲狠狠婷婷综合久久 | 无遮挡啪啪摇乳动态图 | 最近的中文字幕在线看视频 | 老太婆性杂交欧美肥老太 | 久久婷婷五月综合色国产香蕉 | 欧美黑人乱大交 | 亚洲精品国产精品乱码不卡 | 亚洲人成无码网www | 妺妺窝人体色www婷婷 | 超碰97人人做人人爱少妇 | 日本大乳高潮视频在线观看 | 无码人妻av免费一区二区三区 | 中文字幕无码免费久久99 | 久久五月精品中文字幕 | 日日麻批免费40分钟无码 | 十八禁真人啪啪免费网站 | 亚洲国产精华液网站w | 在线观看欧美一区二区三区 | 午夜精品久久久久久久久 | 免费人成网站视频在线观看 | 亚洲热妇无码av在线播放 | 国产又爽又黄又刺激的视频 | 国产69精品久久久久app下载 | 国产精品久久久久无码av色戒 | 乌克兰少妇性做爰 | 久在线观看福利视频 | 久久久中文字幕日本无吗 | 久久人人爽人人爽人人片av高清 | 中文字幕无码av激情不卡 | 激情亚洲一区国产精品 | 欧美高清在线精品一区 | 欧美熟妇另类久久久久久不卡 | 欧美 日韩 亚洲 在线 | 四虎永久在线精品免费网址 | 老司机亚洲精品影院 | 乱人伦中文视频在线观看 | 动漫av一区二区在线观看 | 中文字幕乱妇无码av在线 | 亚洲高清偷拍一区二区三区 | 午夜免费福利小电影 | 国产精品va在线播放 | 国产高清av在线播放 | 亚洲熟熟妇xxxx | 水蜜桃av无码 | 亚洲精品成a人在线观看 | 妺妺窝人体色www婷婷 | 日韩av无码一区二区三区不卡 | 久久午夜无码鲁丝片午夜精品 | 色 综合 欧美 亚洲 国产 | 激情亚洲一区国产精品 | 国产高潮视频在线观看 | 又大又紧又粉嫩18p少妇 | 亚洲国精产品一二二线 | 国产真实夫妇视频 | 永久黄网站色视频免费直播 | 亚洲精品久久久久久久久久久 | 国产免费久久久久久无码 | 亚洲人成人无码网www国产 | 九一九色国产 | 人人爽人人澡人人人妻 | 综合人妻久久一区二区精品 | 久久精品视频在线看15 | 牲欲强的熟妇农村老妇女视频 | 亚洲精品久久久久久久久久久 | 成人免费无码大片a毛片 | 成在人线av无码免费 | 欧美日韩在线亚洲综合国产人 | 天天av天天av天天透 | 国产精品理论片在线观看 | 成人无码精品1区2区3区免费看 | 国产精品亚洲综合色区韩国 | 强开小婷嫩苞又嫩又紧视频 | 日产精品高潮呻吟av久久 | 久久精品国产日本波多野结衣 | 午夜丰满少妇性开放视频 | 99久久婷婷国产综合精品青草免费 | 18黄暴禁片在线观看 | 久久午夜夜伦鲁鲁片无码免费 | 一本色道久久综合狠狠躁 | 2019午夜福利不卡片在线 | 一本久久伊人热热精品中文字幕 | 国产精品久久久久7777 | 18无码粉嫩小泬无套在线观看 | 国产片av国语在线观看 | 亚洲 另类 在线 欧美 制服 | 亚洲国产综合无码一区 | 亚洲欧洲日本无在线码 | 男人的天堂av网站 | 成人无码精品1区2区3区免费看 | 亚洲精品国产第一综合99久久 | 内射白嫩少妇超碰 | 国产精品久久国产精品99 | 午夜成人1000部免费视频 | 亚洲小说图区综合在线 | 乱码午夜-极国产极内射 | 国产亚洲精品久久久ai换 | 中文字幕乱妇无码av在线 | 国产精品亚洲一区二区三区喷水 | 夜夜高潮次次欢爽av女 | 男女下面进入的视频免费午夜 | 妺妺窝人体色www在线小说 | 国产做国产爱免费视频 | 欧美一区二区三区视频在线观看 | 欧洲精品码一区二区三区免费看 | 欧美野外疯狂做受xxxx高潮 | 日韩欧美成人免费观看 | 野狼第一精品社区 | 精品国产一区二区三区av 性色 | 国产亚洲精品久久久久久久 | 国产成人无码av在线影院 | 日韩欧美中文字幕在线三区 | 高潮喷水的毛片 | 久久久久亚洲精品男人的天堂 | 午夜福利电影 | 亚洲天堂2017无码 | 图片小说视频一区二区 | 玩弄少妇高潮ⅹxxxyw | 大乳丰满人妻中文字幕日本 | 国产另类ts人妖一区二区 | 国产艳妇av在线观看果冻传媒 | 国产精品美女久久久 | 国产女主播喷水视频在线观看 | 午夜精品久久久久久久 | 强伦人妻一区二区三区视频18 | 99久久久国产精品无码免费 | 性欧美大战久久久久久久 | 水蜜桃亚洲一二三四在线 | 偷窥日本少妇撒尿chinese | 国内老熟妇对白xxxxhd | 亚洲自偷精品视频自拍 | 激情内射日本一区二区三区 | 风流少妇按摩来高潮 | 清纯唯美经典一区二区 | 亚洲精品国产第一综合99久久 | 欧美老妇交乱视频在线观看 | 成 人 免费观看网站 | 三级4级全黄60分钟 | 伊人久久大香线蕉av一区二区 | 99久久亚洲精品无码毛片 | 少妇人妻偷人精品无码视频 | 夜夜高潮次次欢爽av女 | 国产激情艳情在线看视频 | 国产精品亚洲专区无码不卡 | 亚洲热妇无码av在线播放 | 久久精品人人做人人综合试看 | 东京一本一道一二三区 | 国产精品国产自线拍免费软件 | 日本xxxx色视频在线观看免费 | 精品国产一区二区三区四区在线看 | 日本精品人妻无码免费大全 | 日日鲁鲁鲁夜夜爽爽狠狠 | 国产一区二区不卡老阿姨 | 亚洲综合在线一区二区三区 | 人妻无码αv中文字幕久久琪琪布 | 亚洲精品国产品国语在线观看 | 国产av无码专区亚洲awww | 伊人久久婷婷五月综合97色 | 亚洲精品久久久久久一区二区 | 少妇性l交大片欧洲热妇乱xxx | 九九久久精品国产免费看小说 | 日本熟妇浓毛 | 日韩av无码一区二区三区 | 精品久久久久久人妻无码中文字幕 | 最近中文2019字幕第二页 | 伊在人天堂亚洲香蕉精品区 | 又大又黄又粗又爽的免费视频 | 国产黄在线观看免费观看不卡 | 无套内射视频囯产 | 特黄特色大片免费播放器图片 | 国产成人精品三级麻豆 | 欧美国产日产一区二区 | 最近的中文字幕在线看视频 | 国产一区二区三区四区五区加勒比 | 国内丰满熟女出轨videos | 久久午夜无码鲁丝片午夜精品 | 久久亚洲精品中文字幕无男同 | 又粗又大又硬毛片免费看 | 精品久久8x国产免费观看 | 亚洲欧美中文字幕5发布 | 欧美自拍另类欧美综合图片区 | 国产精品爱久久久久久久 | 国产成人无码区免费内射一片色欲 | 精品偷自拍另类在线观看 | 亚洲自偷自拍另类第1页 | 国产色xx群视频射精 | 亚洲精品中文字幕久久久久 | 日本大香伊一区二区三区 | 亚洲综合在线一区二区三区 | 久久午夜无码鲁丝片午夜精品 | 亚洲国产av精品一区二区蜜芽 | 亚洲精品国产a久久久久久 | 大色综合色综合网站 | 永久黄网站色视频免费直播 | 久久久精品456亚洲影院 | 日韩精品无码一区二区中文字幕 | 亚洲一区二区三区在线观看网站 | 日本高清一区免费中文视频 | 久久99精品久久久久久动态图 | 国产精品永久免费视频 | 日本一卡2卡3卡4卡无卡免费网站 国产一区二区三区影院 | 久久久久se色偷偷亚洲精品av | 久久久久99精品成人片 | 女人高潮内射99精品 | 国产小呦泬泬99精品 | 伊在人天堂亚洲香蕉精品区 | 久久亚洲精品中文字幕无男同 | 中文无码精品a∨在线观看不卡 | 小鲜肉自慰网站xnxx | 一本久久a久久精品亚洲 | 国内综合精品午夜久久资源 | 永久免费观看国产裸体美女 | 日本一卡二卡不卡视频查询 | 亚洲精品成a人在线观看 | 性开放的女人aaa片 | 免费国产黄网站在线观看 | 午夜成人1000部免费视频 | 人人妻人人澡人人爽人人精品 | 婷婷五月综合缴情在线视频 | 午夜精品一区二区三区在线观看 | 国产av一区二区精品久久凹凸 | 亚洲性无码av中文字幕 | 人妻少妇被猛烈进入中文字幕 | 国产激情精品一区二区三区 | 乱人伦人妻中文字幕无码 | 少妇无码av无码专区在线观看 | 久久久精品国产sm最大网站 | 成人无码精品一区二区三区 | 精品偷拍一区二区三区在线看 | 捆绑白丝粉色jk震动捧喷白浆 | 性色欲情网站iwww九文堂 | 天天躁夜夜躁狠狠是什么心态 | 大地资源网第二页免费观看 | 日韩视频 中文字幕 视频一区 | 红桃av一区二区三区在线无码av | 狠狠噜狠狠狠狠丁香五月 | 精品欧美一区二区三区久久久 | av小次郎收藏 | 风流少妇按摩来高潮 | 亚洲国产精品久久久久久 | 成年美女黄网站色大免费视频 | 东北女人啪啪对白 | 99国产欧美久久久精品 | 99精品视频在线观看免费 | 精品偷拍一区二区三区在线看 | 国产办公室秘书无码精品99 | 欧美国产日产一区二区 | 一二三四社区在线中文视频 | 九月婷婷人人澡人人添人人爽 | 水蜜桃色314在线观看 | 无码纯肉视频在线观看 | 国产综合在线观看 | 国内老熟妇对白xxxxhd | 国产成人一区二区三区在线观看 | 日本一区二区更新不卡 | 精品国产国产综合精品 | 欧美日韩综合一区二区三区 | 国产两女互慰高潮视频在线观看 | 国产午夜福利100集发布 | 国精产品一品二品国精品69xx | 无码毛片视频一区二区本码 | 人妻少妇精品无码专区动漫 | 东京热无码av男人的天堂 | 97人妻精品一区二区三区 | 思思久久99热只有频精品66 | 国产av一区二区三区最新精品 | 久久综合九色综合97网 | 天堂久久天堂av色综合 | 人妻少妇被猛烈进入中文字幕 | 久久综合给合久久狠狠狠97色 | 高潮喷水的毛片 | 亚洲大尺度无码无码专区 | 亚洲热妇无码av在线播放 | 中文字幕精品av一区二区五区 | 国产综合色产在线精品 | 久久久久se色偷偷亚洲精品av | av无码电影一区二区三区 | 无码av最新清无码专区吞精 | www国产亚洲精品久久网站 | 欧美大屁股xxxxhd黑色 | 国产超碰人人爽人人做人人添 | 欧美性猛交内射兽交老熟妇 | 中文字幕亚洲情99在线 | 国产激情一区二区三区 | 奇米影视888欧美在线观看 | 色一情一乱一伦一区二区三欧美 | 无码免费一区二区三区 | 亚洲一区二区三区含羞草 | 狂野欧美激情性xxxx | 人妻中文无码久热丝袜 | 麻豆蜜桃av蜜臀av色欲av | 日韩无套无码精品 | 国产香蕉97碰碰久久人人 | 中文字幕人成乱码熟女app | 亚洲色www成人永久网址 | 日本一卡2卡3卡4卡无卡免费网站 国产一区二区三区影院 | 亚洲 a v无 码免 费 成 人 a v | 玩弄人妻少妇500系列视频 | 欧美阿v高清资源不卡在线播放 | 亚洲の无码国产の无码步美 | 无套内谢的新婚少妇国语播放 | 国产精品久免费的黄网站 | 色综合久久久无码网中文 | 亚无码乱人伦一区二区 | 亚洲人成影院在线无码按摩店 | 国产亲子乱弄免费视频 | 成人一在线视频日韩国产 | 国产精品第一国产精品 | 亚洲熟熟妇xxxx | 极品尤物被啪到呻吟喷水 | 国产精品久久精品三级 | 日本丰满护士爆乳xxxx | 国产日产欧产精品精品app | 日韩精品久久久肉伦网站 | 无遮挡国产高潮视频免费观看 | 亚洲精品无码人妻无码 | 国产精品理论片在线观看 | 国产精品高潮呻吟av久久 | 中文字幕久久久久人妻 | 国产成人精品必看 | 亚洲人交乣女bbw | 国产免费观看黄av片 | 精品无码国产一区二区三区av | 免费无码肉片在线观看 | 亚洲爆乳大丰满无码专区 | 内射爽无广熟女亚洲 | 67194成是人免费无码 | 国产超级va在线观看视频 | 少妇被黑人到高潮喷出白浆 | 狠狠色丁香久久婷婷综合五月 | 成人欧美一区二区三区黑人 | 1000部夫妻午夜免费 | 蜜桃视频插满18在线观看 | 九月婷婷人人澡人人添人人爽 | 国产亚洲tv在线观看 | 日韩精品乱码av一区二区 | 色窝窝无码一区二区三区色欲 | 国产亚洲精品久久久久久大师 | 国产精品无码一区二区桃花视频 | 成在人线av无码免费 | 亚洲国产欧美国产综合一区 | 久久99精品国产.久久久久 | 日韩人妻无码中文字幕视频 | 性啪啪chinese东北女人 | 日本高清一区免费中文视频 | 熟妇人妻中文av无码 | 激情综合激情五月俺也去 | 国产精品永久免费视频 | 亚洲精品国偷拍自产在线观看蜜桃 | 5858s亚洲色大成网站www | 少妇性荡欲午夜性开放视频剧场 | 中国女人内谢69xxxxxa片 | 国产亚洲视频中文字幕97精品 | 无码人妻精品一区二区三区下载 | 亚洲gv猛男gv无码男同 | 欧美日本精品一区二区三区 | 大肉大捧一进一出好爽视频 | 99久久人妻精品免费二区 | 日本一卡2卡3卡4卡无卡免费网站 国产一区二区三区影院 | 在教室伦流澡到高潮hnp视频 | 精品午夜福利在线观看 | 蜜桃臀无码内射一区二区三区 | 成人无码精品一区二区三区 | 天天燥日日燥 | 色婷婷香蕉在线一区二区 | 综合人妻久久一区二区精品 | 国产精品无套呻吟在线 | 国产成人无码区免费内射一片色欲 | 强奷人妻日本中文字幕 | 四虎4hu永久免费 | 精品一二三区久久aaa片 | 性欧美疯狂xxxxbbbb | 国产xxx69麻豆国语对白 | 亚洲精品久久久久久久久久久 | 一本色道久久综合亚洲精品不卡 | 亚洲精品综合五月久久小说 | 日韩成人一区二区三区在线观看 | 久久综合久久自在自线精品自 | 无码人妻黑人中文字幕 | 丰满妇女强制高潮18xxxx | 一本加勒比波多野结衣 | 东北女人啪啪对白 | 亚洲 欧美 激情 小说 另类 | 无码精品国产va在线观看dvd | 免费播放一区二区三区 | 成人免费视频在线观看 | 日本一本二本三区免费 | 国产口爆吞精在线视频 | 国产熟妇另类久久久久 | 国产免费久久久久久无码 | 扒开双腿疯狂进出爽爽爽视频 | 无码人妻出轨黑人中文字幕 | 亚洲综合久久一区二区 | 亚洲欧洲日本综合aⅴ在线 | 综合激情五月综合激情五月激情1 | 亚洲综合色区中文字幕 | 波多野结衣高清一区二区三区 | 理论片87福利理论电影 | 国产农村乱对白刺激视频 | 亚洲成色www久久网站 | 7777奇米四色成人眼影 | 粗大的内捧猛烈进出视频 | 国产真实伦对白全集 | 青春草在线视频免费观看 | 精品人妻av区 | 黑森林福利视频导航 | 98国产精品综合一区二区三区 | 欧美午夜特黄aaaaaa片 | 久久97精品久久久久久久不卡 | 青青青手机频在线观看 | 小sao货水好多真紧h无码视频 | 人人妻人人澡人人爽人人精品 | 欧美 丝袜 自拍 制服 另类 | 久久综合给合久久狠狠狠97色 | 精品久久久无码人妻字幂 | 亚洲精品成人av在线 | 久久综合给合久久狠狠狠97色 | 熟妇人妻激情偷爽文 | 日韩人妻无码中文字幕视频 | 久久久亚洲欧洲日产国码αv | 精品久久8x国产免费观看 | 国产精品18久久久久久麻辣 | 欧洲熟妇色 欧美 | 在线观看免费人成视频 | 婷婷五月综合激情中文字幕 | 性开放的女人aaa片 | 亚洲国产午夜精品理论片 | 九九综合va免费看 | 人妻熟女一区 | 亚洲国产精品久久久天堂 | 亚洲综合久久一区二区 | 精品aⅴ一区二区三区 | 久久久亚洲欧洲日产国码αv | 亚洲一区二区三区在线观看网站 | 日韩欧美中文字幕在线三区 | 无码av免费一区二区三区试看 | 999久久久国产精品消防器材 | 麻豆成人精品国产免费 | 少妇愉情理伦片bd | 麻豆国产丝袜白领秘书在线观看 | 亚洲aⅴ无码成人网站国产app | 日产国产精品亚洲系列 | 俺去俺来也www色官网 | 国产精品美女久久久 | 一本久道久久综合婷婷五月 | 日本饥渴人妻欲求不满 | 亚洲区小说区激情区图片区 | 成熟人妻av无码专区 | 国产精品爱久久久久久久 | av人摸人人人澡人人超碰下载 | 无码播放一区二区三区 | 无码国模国产在线观看 | 日本又色又爽又黄的a片18禁 | 国产疯狂伦交大片 | 成人无码精品1区2区3区免费看 | 熟妇人妻中文av无码 | 最近免费中文字幕中文高清百度 | 99精品视频在线观看免费 | 丰满少妇高潮惨叫视频 | 久久综合狠狠综合久久综合88 | 久久精品人妻少妇一区二区三区 | 日韩 欧美 动漫 国产 制服 | 日日天日日夜日日摸 | 久精品国产欧美亚洲色aⅴ大片 | 亚洲综合伊人久久大杳蕉 | 久久国产精品二国产精品 | 激情综合激情五月俺也去 | 99久久人妻精品免费二区 | 97se亚洲精品一区 | 一本一道久久综合久久 | 色欲人妻aaaaaaa无码 | 中文字幕无码免费久久9一区9 | 99久久久国产精品无码免费 | 香蕉久久久久久av成人 | 黑人大群体交免费视频 | 国产精品福利视频导航 | 一本一道久久综合久久 | 成熟女人特级毛片www免费 | 成年美女黄网站色大免费视频 | 欧美35页视频在线观看 | 99精品视频在线观看免费 | 中文字幕久久久久人妻 | 色噜噜亚洲男人的天堂 | v一区无码内射国产 | 少妇被黑人到高潮喷出白浆 | 中文字幕无码热在线视频 | 成人精品一区二区三区中文字幕 | 夜夜夜高潮夜夜爽夜夜爰爰 | 国产色视频一区二区三区 | 亚洲中文字幕av在天堂 | 中国大陆精品视频xxxx | 嫩b人妻精品一区二区三区 | 妺妺窝人体色www婷婷 | 亚洲a无码综合a国产av中文 | 无码国产激情在线观看 | 国产成人一区二区三区别 | 亚洲呦女专区 | 婷婷丁香五月天综合东京热 | 在线 国产 欧美 亚洲 天堂 | 婷婷丁香五月天综合东京热 | v一区无码内射国产 | 国内精品人妻无码久久久影院蜜桃 | 精品久久久中文字幕人妻 | 日产精品高潮呻吟av久久 | 欧洲vodafone精品性 | 免费人成网站视频在线观看 | 欧美成人免费全部网站 | 国产精品无码久久av | 一本无码人妻在中文字幕免费 | 啦啦啦www在线观看免费视频 | 又粗又大又硬又长又爽 | 色欲综合久久中文字幕网 | 日欧一片内射va在线影院 | 国产av人人夜夜澡人人爽麻豆 | 亚洲中文字幕久久无码 | 久久熟妇人妻午夜寂寞影院 | 少妇无码av无码专区在线观看 | 图片区 小说区 区 亚洲五月 | 久久久久久久人妻无码中文字幕爆 | 久久久久久九九精品久 | 东京无码熟妇人妻av在线网址 | 日本xxxx色视频在线观看免费 | 永久黄网站色视频免费直播 | 日韩欧美群交p片內射中文 | 日本一本二本三区免费 | 国产色视频一区二区三区 | 天天做天天爱天天爽综合网 | 四虎4hu永久免费 | a在线亚洲男人的天堂 | 久久99精品久久久久久 | 欧美日韩精品 | 一本色道久久综合亚洲精品不卡 | 日韩精品a片一区二区三区妖精 | 18禁黄网站男男禁片免费观看 | 熟妇人妻无乱码中文字幕 | 少妇性l交大片 | 久久人人爽人人爽人人片ⅴ | 久久精品国产一区二区三区 | 99久久婷婷国产综合精品青草免费 | 国产精品久久久久久亚洲毛片 | 成人免费视频在线观看 | 亚洲狠狠婷婷综合久久 | 久久国产自偷自偷免费一区调 | 色妞www精品免费视频 | 国产在线精品一区二区高清不卡 | 成人综合网亚洲伊人 | 色婷婷欧美在线播放内射 | 永久免费精品精品永久-夜色 | 性欧美videos高清精品 | 激情综合激情五月俺也去 | 精品无码国产自产拍在线观看蜜 | 国精产品一品二品国精品69xx | 精品国偷自产在线 | 久久国内精品自在自线 | 一二三四社区在线中文视频 | 装睡被陌生人摸出水好爽 | 偷窥村妇洗澡毛毛多 | 久久精品国产一区二区三区 | av无码不卡在线观看免费 | 久久成人a毛片免费观看网站 | 国产卡一卡二卡三 | 色偷偷人人澡人人爽人人模 | 福利一区二区三区视频在线观看 | 男女性色大片免费网站 | 久久久精品欧美一区二区免费 | 搡女人真爽免费视频大全 | 欧美乱妇无乱码大黄a片 | 国产av剧情md精品麻豆 | 国产综合在线观看 | 国产无遮挡又黄又爽又色 | 中文字幕人妻丝袜二区 | 日本又色又爽又黄的a片18禁 | 人妻互换免费中文字幕 | 综合激情五月综合激情五月激情1 | 日本饥渴人妻欲求不满 | 2020久久香蕉国产线看观看 | 综合网日日天干夜夜久久 | 国产国语老龄妇女a片 | 麻豆成人精品国产免费 | 国产极品视觉盛宴 | 秋霞成人午夜鲁丝一区二区三区 | 欧美成人家庭影院 | 国产三级精品三级男人的天堂 | 人人妻人人藻人人爽欧美一区 | 国产精品高潮呻吟av久久 | 97人妻精品一区二区三区 | 亚洲 欧美 激情 小说 另类 | 又大又硬又爽免费视频 | a片免费视频在线观看 | 国产精品久久久久久亚洲影视内衣 | 国产亚洲tv在线观看 | 精品国产成人一区二区三区 | 久久综合给合久久狠狠狠97色 | 六十路熟妇乱子伦 | 乱人伦人妻中文字幕无码 | 亚洲精品一区二区三区四区五区 | 99久久人妻精品免费一区 | 免费看少妇作爱视频 | 综合激情五月综合激情五月激情1 | 熟妇人妻无乱码中文字幕 | 国产明星裸体无码xxxx视频 | 国产成人精品优优av | 天堂在线观看www | 欧美亚洲日韩国产人成在线播放 | 免费无码肉片在线观看 | 无码av中文字幕免费放 | 国产xxx69麻豆国语对白 | 亚洲s色大片在线观看 | 熟女少妇在线视频播放 | 性欧美牲交xxxxx视频 | 久久无码专区国产精品s | 狠狠噜狠狠狠狠丁香五月 | 又大又硬又黄的免费视频 | 午夜免费福利小电影 | 水蜜桃av无码 | 亚洲乱码国产乱码精品精 | 无码av免费一区二区三区试看 | 国产亚洲美女精品久久久2020 | 网友自拍区视频精品 | 亚洲欧美日韩国产精品一区二区 | 麻豆蜜桃av蜜臀av色欲av | 国产精品无码一区二区三区不卡 | 久久久久99精品成人片 | 老头边吃奶边弄进去呻吟 | 国产网红无码精品视频 | 亚洲一区二区三区在线观看网站 | 美女张开腿让人桶 | 午夜丰满少妇性开放视频 | 全黄性性激高免费视频 | 国产97色在线 | 免 | 四虎国产精品免费久久 | 欧美国产日韩亚洲中文 | 久久国产36精品色熟妇 | 欧美 日韩 亚洲 在线 | 无码人妻少妇伦在线电影 | 日本一卡2卡3卡四卡精品网站 | 动漫av一区二区在线观看 | 国产香蕉尹人视频在线 | 国产真实夫妇视频 | 国产亚洲精品久久久久久国模美 | 久久综合狠狠综合久久综合88 | 久久99热只有频精品8 | 国产成人精品久久亚洲高清不卡 | 成人动漫在线观看 | 黑人玩弄人妻中文在线 | 久久精品国产亚洲精品 | 日日摸天天摸爽爽狠狠97 | 老头边吃奶边弄进去呻吟 | 日韩视频 中文字幕 视频一区 | 日本在线高清不卡免费播放 | 免费播放一区二区三区 | 中文字幕人成乱码熟女app | 黑人粗大猛烈进出高潮视频 | 国产人成高清在线视频99最全资源 | 又大又硬又爽免费视频 | 精品无码国产自产拍在线观看蜜 | 人妻无码αv中文字幕久久琪琪布 | ass日本丰满熟妇pics | 午夜男女很黄的视频 | 亚洲娇小与黑人巨大交 | 日本一区二区三区免费高清 | 丰满少妇熟乱xxxxx视频 | 国产免费观看黄av片 | 国产精品无码一区二区三区不卡 | 久久久久久国产精品无码下载 | 最近中文2019字幕第二页 | 麻花豆传媒剧国产免费mv在线 | 久久这里只有精品视频9 | 四十如虎的丰满熟妇啪啪 | 亚洲精品一区二区三区大桥未久 | 少妇厨房愉情理9仑片视频 | 欧美老熟妇乱xxxxx | 日韩在线不卡免费视频一区 | 日韩人妻无码一区二区三区久久99 | 久久精品国产亚洲精品 | 亚洲一区二区三区四区 | 中文字幕av伊人av无码av | 久久久精品欧美一区二区免费 | 无码精品国产va在线观看dvd | 国产美女精品一区二区三区 | 久久精品丝袜高跟鞋 | 中文久久乱码一区二区 | 色 综合 欧美 亚洲 国产 | 日韩视频 中文字幕 视频一区 | 亚洲欧美国产精品久久 | 国内精品人妻无码久久久影院蜜桃 | 黄网在线观看免费网站 | 久久成人a毛片免费观看网站 | 小鲜肉自慰网站xnxx | 亚洲春色在线视频 | 精品久久久无码人妻字幂 | 亚洲欧洲中文日韩av乱码 | 麻豆成人精品国产免费 | 日韩亚洲欧美中文高清在线 | 麻豆国产人妻欲求不满 | 国产av一区二区三区最新精品 | 欧美一区二区三区 | 老头边吃奶边弄进去呻吟 | 国产偷国产偷精品高清尤物 | 内射老妇bbwx0c0ck | 国产激情一区二区三区 | 精品国产精品久久一区免费式 | 国产亚洲欧美日韩亚洲中文色 | 性生交大片免费看女人按摩摩 | 欧美一区二区三区 | a国产一区二区免费入口 | 强开小婷嫩苞又嫩又紧视频 | 久久精品国产精品国产精品污 | 国产美女精品一区二区三区 | 国产av一区二区精品久久凹凸 | 99riav国产精品视频 | 亚洲精品国偷拍自产在线麻豆 | 玩弄中年熟妇正在播放 | 国产精品亚洲а∨无码播放麻豆 | 国产成人精品三级麻豆 | 亚洲男人av天堂午夜在 | 18黄暴禁片在线观看 | 日产精品99久久久久久 | 国产特级毛片aaaaaa高潮流水 | 亚洲欧洲无卡二区视頻 | 国产超碰人人爽人人做人人添 | 久久国产精品萌白酱免费 | 美女扒开屁股让男人桶 | 久久综合九色综合欧美狠狠 | 无码人妻精品一区二区三区下载 | 中文字幕人妻无码一区二区三区 | 国产人成高清在线视频99最全资源 | 思思久久99热只有频精品66 | 在教室伦流澡到高潮hnp视频 | 激情爆乳一区二区三区 | 免费国产黄网站在线观看 | 国产成人精品一区二区在线小狼 | 国产成人综合在线女婷五月99播放 | 人人妻人人澡人人爽欧美一区九九 | 国内精品人妻无码久久久影院 | 中文字幕人妻无码一区二区三区 | 中文字幕无码日韩专区 | 国产性生交xxxxx无码 | 国产成人综合色在线观看网站 | 国精产品一区二区三区 | 又紧又大又爽精品一区二区 | 精品国产一区二区三区四区 | 国产成人精品一区二区在线小狼 | аⅴ资源天堂资源库在线 | 国产欧美熟妇另类久久久 | 国产熟妇另类久久久久 | 少妇性俱乐部纵欲狂欢电影 | 18黄暴禁片在线观看 | 欧美怡红院免费全部视频 | 4hu四虎永久在线观看 | 欧美一区二区三区视频在线观看 | 宝宝好涨水快流出来免费视频 | 国产另类ts人妖一区二区 | 欧美zoozzooz性欧美 | 98国产精品综合一区二区三区 | ass日本丰满熟妇pics | 国产精品久免费的黄网站 | 久久99精品国产麻豆蜜芽 | 人妻人人添人妻人人爱 | 国产午夜无码精品免费看 | 国产乱人无码伦av在线a | 亚洲中文字幕av在天堂 | 亚洲性无码av中文字幕 | 国产精品亚洲专区无码不卡 | 亚洲中文字幕av在天堂 | 久久国产自偷自偷免费一区调 | 亚洲精品综合一区二区三区在线 | 秋霞成人午夜鲁丝一区二区三区 | 亚洲男人av天堂午夜在 | 亚洲国产成人a精品不卡在线 | 日本高清一区免费中文视频 | 日韩精品无码免费一区二区三区 | 国产精品办公室沙发 | 蜜臀aⅴ国产精品久久久国产老师 | 久久精品丝袜高跟鞋 | av人摸人人人澡人人超碰下载 | 日韩人妻无码一区二区三区久久99 | 999久久久国产精品消防器材 | 成人影院yy111111在线观看 | 无码人妻av免费一区二区三区 | 国产午夜亚洲精品不卡 | 国产高清不卡无码视频 | 欧美野外疯狂做受xxxx高潮 | 亚洲欧洲日本综合aⅴ在线 | 色婷婷av一区二区三区之红樱桃 | 成人片黄网站色大片免费观看 | 色欲人妻aaaaaaa无码 | 亚洲精品一区二区三区在线 | 日日天干夜夜狠狠爱 | 精品国偷自产在线 | 国产综合色产在线精品 | 呦交小u女精品视频 | 白嫩日本少妇做爰 | 中文字幕无码乱人伦 | 波多野结衣av在线观看 | 国产精品亚洲专区无码不卡 | 日本乱偷人妻中文字幕 | 国产成人综合美国十次 | 亚洲欧美色中文字幕在线 | 成人毛片一区二区 | 亚洲va欧美va天堂v国产综合 | 日韩人妻无码一区二区三区久久99 | 欧美精品免费观看二区 | 少妇无套内谢久久久久 | 人妻尝试又大又粗久久 | 久久久久成人片免费观看蜜芽 | 水蜜桃色314在线观看 | 动漫av网站免费观看 | 欧美国产日产一区二区 | 欧美成人午夜精品久久久 | 水蜜桃av无码 | 亚洲国产高清在线观看视频 | 天天燥日日燥 | 日本大乳高潮视频在线观看 | 国产av剧情md精品麻豆 | 日本乱偷人妻中文字幕 | 激情内射亚州一区二区三区爱妻 | 亚洲中文字幕在线无码一区二区 | 在线欧美精品一区二区三区 | 国产综合在线观看 | 中文字幕乱码中文乱码51精品 | 久青草影院在线观看国产 | 久久久久亚洲精品中文字幕 | 激情国产av做激情国产爱 | 婷婷丁香五月天综合东京热 | 国产真人无遮挡作爱免费视频 | 久久99久久99精品中文字幕 | 日本一区二区三区免费高清 | 无码人妻久久一区二区三区不卡 | 色情久久久av熟女人妻网站 | 亚洲人亚洲人成电影网站色 | 国产无遮挡吃胸膜奶免费看 | 狠狠综合久久久久综合网 | 国产福利视频一区二区 | 一个人看的www免费视频在线观看 | 日日橹狠狠爱欧美视频 | 免费网站看v片在线18禁无码 | 国产精品久免费的黄网站 | 人人爽人人澡人人高潮 | 国产三级精品三级男人的天堂 | 国产精品久久久午夜夜伦鲁鲁 | 日韩精品无码免费一区二区三区 | 国产激情无码一区二区app | 欧美自拍另类欧美综合图片区 | 偷窥日本少妇撒尿chinese | 无码毛片视频一区二区本码 | 国产97在线 | 亚洲 | 亚洲 激情 小说 另类 欧美 | 色噜噜亚洲男人的天堂 | 国精产品一区二区三区 | 精品国产福利一区二区 | 55夜色66夜色国产精品视频 | 少妇高潮一区二区三区99 | 丰满人妻一区二区三区免费视频 | 狂野欧美性猛xxxx乱大交 | av在线亚洲欧洲日产一区二区 | 久久www免费人成人片 | 呦交小u女精品视频 | a国产一区二区免费入口 | 丰满人妻翻云覆雨呻吟视频 | 中文字幕人妻无码一夲道 | 亚洲熟女一区二区三区 | 中文字幕色婷婷在线视频 | 久久国产劲爆∧v内射 | 久久熟妇人妻午夜寂寞影院 | 久久综合网欧美色妞网 | 欧美国产日韩亚洲中文 | 久久99精品久久久久婷婷 | 亚洲精品一区二区三区婷婷月 | 国产综合在线观看 | 国产莉萝无码av在线播放 | 99麻豆久久久国产精品免费 | 亚洲经典千人经典日产 | 日韩精品无码一本二本三本色 | 日本一卡二卡不卡视频查询 | 欧美日韩色另类综合 | 激情综合激情五月俺也去 | 欧美黑人乱大交 | 日韩人妻无码中文字幕视频 | 精品人妻av区 | 无码午夜成人1000部免费视频 | 国产免费无码一区二区视频 | 亚洲精品一区二区三区在线观看 | 久久人人爽人人爽人人片av高清 | 午夜免费福利小电影 | 久久99久久99精品中文字幕 | 18禁黄网站男男禁片免费观看 | 国产国产精品人在线视 | 中文无码精品a∨在线观看不卡 | 67194成是人免费无码 | 欧美性猛交内射兽交老熟妇 | 狠狠色色综合网站 | 在线成人www免费观看视频 | 99精品无人区乱码1区2区3区 | 亚洲精品国产品国语在线观看 | 国产人妻精品一区二区三区不卡 | 3d动漫精品啪啪一区二区中 | 99国产精品白浆在线观看免费 | 亚洲自偷自偷在线制服 | 亚洲日本一区二区三区在线 | 日日鲁鲁鲁夜夜爽爽狠狠 | 又大又硬又黄的免费视频 | 国产成人精品视频ⅴa片软件竹菊 | 伊人久久大香线焦av综合影院 | 亚拍精品一区二区三区探花 | 人妻少妇精品久久 | 丝袜 中出 制服 人妻 美腿 | 狠狠色丁香久久婷婷综合五月 | 在线观看欧美一区二区三区 | 亚洲精品鲁一鲁一区二区三区 | 黑人巨大精品欧美一区二区 | 日本免费一区二区三区最新 | 女人高潮内射99精品 | 成 人影片 免费观看 | 东京无码熟妇人妻av在线网址 | 久久久精品成人免费观看 | 美女黄网站人色视频免费国产 | 国产特级毛片aaaaaa高潮流水 | 亚洲中文字幕无码中字 | www一区二区www免费 | 亚洲日韩一区二区 | 精品一区二区不卡无码av | 97se亚洲精品一区 | 天堂久久天堂av色综合 | 2020久久香蕉国产线看观看 | 成人欧美一区二区三区黑人免费 | 国产一精品一av一免费 | 丰满少妇人妻久久久久久 | www一区二区www免费 | 亚洲一区二区三区含羞草 | 妺妺窝人体色www在线小说 | 激情国产av做激情国产爱 | 国产精品内射视频免费 | 国产精品久久久一区二区三区 | 蜜臀av在线观看 在线欧美精品一区二区三区 | аⅴ资源天堂资源库在线 | a国产一区二区免费入口 | 亚洲精品午夜无码电影网 | 国产尤物精品视频 | 国产人妻大战黑人第1集 | 精品日本一区二区三区在线观看 | 久久亚洲精品中文字幕无男同 | 少妇无码吹潮 | 兔费看少妇性l交大片免费 | 亚洲人成网站在线播放942 | 久久久久免费精品国产 | 欧美 亚洲 国产 另类 | 亚洲码国产精品高潮在线 | 一本色道久久综合狠狠躁 | 亚洲一区二区三区无码久久 | 亚洲日韩av片在线观看 | 2019nv天堂香蕉在线观看 | 久久午夜无码鲁丝片午夜精品 | 特大黑人娇小亚洲女 | 国产精品久久久av久久久 | 免费人成在线观看网站 | 5858s亚洲色大成网站www | 乱码av麻豆丝袜熟女系列 | 激情综合激情五月俺也去 | 日韩无套无码精品 | 亚洲人成网站色7799 | 国产av一区二区三区最新精品 | 青青草原综合久久大伊人精品 | av无码久久久久不卡免费网站 | 中文字幕无码免费久久99 | 日韩欧美群交p片內射中文 | 一二三四社区在线中文视频 | 久青草影院在线观看国产 | 特黄特色大片免费播放器图片 | 日日夜夜撸啊撸 | 一本久久a久久精品vr综合 | 国产精品亚洲综合色区韩国 | 搡女人真爽免费视频大全 | 国产人妻精品一区二区三区不卡 | 无码国内精品人妻少妇 | 日本爽爽爽爽爽爽在线观看免 | 国产精品办公室沙发 | 日本www一道久久久免费榴莲 | 好男人www社区 | 窝窝午夜理论片影院 | 人人澡人摸人人添 | 麻豆果冻传媒2021精品传媒一区下载 | 中文字幕无线码 | 亚洲国产精品一区二区美利坚 | 久久人人爽人人爽人人片av高清 | 国产艳妇av在线观看果冻传媒 | 国产精品99爱免费视频 | 免费观看又污又黄的网站 | аⅴ资源天堂资源库在线 | 99麻豆久久久国产精品免费 | 亚洲无人区午夜福利码高清完整版 | 高潮喷水的毛片 | 77777熟女视频在线观看 а天堂中文在线官网 | 成年美女黄网站色大免费视频 | 国产av一区二区精品久久凹凸 | 国产欧美精品一区二区三区 | 一本久久a久久精品亚洲 | 内射后入在线观看一区 | 玩弄人妻少妇500系列视频 | 十八禁视频网站在线观看 | 国产av人人夜夜澡人人爽麻豆 | 久久久久人妻一区精品色欧美 | 99er热精品视频 | 日韩精品无码一本二本三本色 | 色狠狠av一区二区三区 | 麻豆蜜桃av蜜臀av色欲av | 午夜精品久久久内射近拍高清 | 国内精品久久毛片一区二区 | 一本久久a久久精品vr综合 | 丰满少妇人妻久久久久久 | 色一情一乱一伦一区二区三欧美 | 国产黑色丝袜在线播放 | 国产激情一区二区三区 | 人人澡人人妻人人爽人人蜜桃 | 日本乱偷人妻中文字幕 | 欧美人与善在线com | 性做久久久久久久久 | 97久久超碰中文字幕 | 九九久久精品国产免费看小说 | 亚洲欧美国产精品专区久久 | 精品无码国产一区二区三区av | 日本乱偷人妻中文字幕 | 国产一区二区三区四区五区加勒比 | 国产成人综合美国十次 | 激情亚洲一区国产精品 | 亲嘴扒胸摸屁股激烈网站 | 免费无码肉片在线观看 | 亚洲欧美日韩国产精品一区二区 | 日日天干夜夜狠狠爱 | 精品国产国产综合精品 | 伊人久久大香线蕉亚洲 | 欧美性生交活xxxxxdddd | 最新国产乱人伦偷精品免费网站 | 日韩欧美成人免费观看 | 一个人看的视频www在线 | 国产亚洲日韩欧美另类第八页 | 久久精品国产大片免费观看 | 精品人妻av区 | 亚洲伊人久久精品影院 | 大地资源网第二页免费观看 | 红桃av一区二区三区在线无码av | 国产一区二区三区四区五区加勒比 | 亚洲精品一区二区三区婷婷月 | aⅴ亚洲 日韩 色 图网站 播放 | 国产亚洲tv在线观看 | 暴力强奷在线播放无码 | 日韩亚洲欧美精品综合 | 中文毛片无遮挡高清免费 | 日本乱人伦片中文三区 | 熟妇人妻无乱码中文字幕 | 免费视频欧美无人区码 | 精品无码一区二区三区爱欲 | 无码av中文字幕免费放 | 亚洲精品综合一区二区三区在线 | 久久午夜无码鲁丝片午夜精品 | 玩弄中年熟妇正在播放 | 在线亚洲高清揄拍自拍一品区 | 国产午夜视频在线观看 | 久久99精品国产麻豆蜜芽 | 国产乡下妇女做爰 | 国产三级久久久精品麻豆三级 | 亚洲日韩一区二区三区 | 无码人妻av免费一区二区三区 | 亚洲 激情 小说 另类 欧美 | 国产精品爱久久久久久久 | 久久久精品人妻久久影视 | 欧美激情一区二区三区成人 | 2019nv天堂香蕉在线观看 | 六月丁香婷婷色狠狠久久 | 亚洲乱亚洲乱妇50p | 中文字幕色婷婷在线视频 | 中文精品无码中文字幕无码专区 | 亚洲第一无码av无码专区 | 国内精品九九久久久精品 | 国产精品沙发午睡系列 | 国产午夜视频在线观看 | 久久精品中文字幕大胸 | 国产办公室秘书无码精品99 | 亚洲精品国偷拍自产在线观看蜜桃 | 亚洲精品国产品国语在线观看 | 久久国产精品萌白酱免费 | 日日摸天天摸爽爽狠狠97 | 亚洲综合久久一区二区 | 精品水蜜桃久久久久久久 | 国产av无码专区亚洲a∨毛片 | 牲交欧美兽交欧美 | 国产在线精品一区二区高清不卡 | 精品久久久久久人妻无码中文字幕 | 亚洲国产一区二区三区在线观看 | 少妇邻居内射在线 | 性色av无码免费一区二区三区 | 精品无码一区二区三区的天堂 | 天堂无码人妻精品一区二区三区 | 麻花豆传媒剧国产免费mv在线 | 亚洲爆乳精品无码一区二区三区 | 精品国产麻豆免费人成网站 | 国产电影无码午夜在线播放 | 亚洲色欲久久久综合网东京热 | 未满成年国产在线观看 | 久久亚洲国产成人精品性色 | 国产麻豆精品精东影业av网站 | 领导边摸边吃奶边做爽在线观看 | 日本va欧美va欧美va精品 | 久久久www成人免费毛片 | 亚洲第一网站男人都懂 | 国产区女主播在线观看 | 国产真人无遮挡作爱免费视频 | 亚洲の无码国产の无码步美 | 狠狠亚洲超碰狼人久久 | 久久人人97超碰a片精品 | 漂亮人妻洗澡被公强 日日躁 | 久久久久久a亚洲欧洲av冫 | 露脸叫床粗话东北少妇 | 无码av免费一区二区三区试看 | 国产激情一区二区三区 | 国产精品办公室沙发 | 国产精品免费大片 | 久久午夜夜伦鲁鲁片无码免费 | 丰满护士巨好爽好大乳 | 亚洲综合精品香蕉久久网 | 亚洲а∨天堂久久精品2021 | 日本xxxx色视频在线观看免费 | 男人和女人高潮免费网站 | 亚洲欧美色中文字幕在线 | 国产精品igao视频网 | 亚拍精品一区二区三区探花 | 国产成人无码av一区二区 | 久久精品一区二区三区四区 | 色欲人妻aaaaaaa无码 | 亚洲a无码综合a国产av中文 | 色综合天天综合狠狠爱 | 亚洲日本一区二区三区在线 | 双乳奶水饱满少妇呻吟 | 人妻天天爽夜夜爽一区二区 | 日日鲁鲁鲁夜夜爽爽狠狠 | 成年美女黄网站色大免费视频 | 性色欲网站人妻丰满中文久久不卡 | 国产精品久久久久久亚洲影视内衣 | 欧美日韩亚洲国产精品 | 国产真人无遮挡作爱免费视频 | 99久久久国产精品无码免费 | 丰满肥臀大屁股熟妇激情视频 | 国内揄拍国内精品人妻 | 无码国模国产在线观看 | 天下第一社区视频www日本 | 成人无码精品1区2区3区免费看 | 久久久国产一区二区三区 | 国产成人一区二区三区别 | 日本高清一区免费中文视频 | 人妻与老人中文字幕 | 免费国产黄网站在线观看 | 樱花草在线社区www | 日韩精品成人一区二区三区 | 欧美兽交xxxx×视频 | 麻豆精产国品 | 天堂久久天堂av色综合 | 国产国产精品人在线视 | 乱人伦人妻中文字幕无码久久网 | 7777奇米四色成人眼影 | 蜜桃av蜜臀av色欲av麻 999久久久国产精品消防器材 | 麻豆av传媒蜜桃天美传媒 | 久久婷婷五月综合色国产香蕉 | 999久久久国产精品消防器材 | 久久精品国产一区二区三区 | 偷窥日本少妇撒尿chinese | 欧美激情一区二区三区成人 | 精品人妻人人做人人爽 | 中文字幕无码免费久久9一区9 | a在线观看免费网站大全 | 牲交欧美兽交欧美 | 在线 国产 欧美 亚洲 天堂 | 亚拍精品一区二区三区探花 | 欧美大屁股xxxxhd黑色 | 久久99精品国产麻豆 | 国精品人妻无码一区二区三区蜜柚 | 亚洲呦女专区 | 色妞www精品免费视频 | 98国产精品综合一区二区三区 | 国产又爽又猛又粗的视频a片 | 欧美日韩在线亚洲综合国产人 | 麻豆精品国产精华精华液好用吗 | 人妻少妇精品视频专区 | 巨爆乳无码视频在线观看 | 亚洲欧美综合区丁香五月小说 | 中文字幕 亚洲精品 第1页 | 天堂а√在线地址中文在线 | 亚洲伊人久久精品影院 | 久久久久免费看成人影片 | 亚洲国产午夜精品理论片 | 草草网站影院白丝内射 | 一个人免费观看的www视频 | 亚洲人成网站色7799 | 久久人人爽人人爽人人片av高清 | 丰满护士巨好爽好大乳 | 国产免费观看黄av片 | 国产一区二区三区日韩精品 | 久久精品国产一区二区三区 | av在线亚洲欧洲日产一区二区 | 粉嫩少妇内射浓精videos | 久久久久久久女国产乱让韩 | 天堂在线观看www | 奇米影视7777久久精品 | 久久综合久久自在自线精品自 | 国产亚洲欧美在线专区 | 国产精品视频免费播放 | 乱中年女人伦av三区 | 国产高清不卡无码视频 | 国语精品一区二区三区 | 国产亚洲欧美日韩亚洲中文色 | 午夜丰满少妇性开放视频 | 奇米影视7777久久精品 | 天天av天天av天天透 | 粉嫩少妇内射浓精videos | 亚洲gv猛男gv无码男同 | 无码国模国产在线观看 | 亚洲综合久久一区二区 | 亚洲无人区午夜福利码高清完整版 | a在线观看免费网站大全 | 色综合久久久久综合一本到桃花网 | 暴力强奷在线播放无码 | 亚洲一区二区三区国产精华液 | 性色av无码免费一区二区三区 | 狠狠躁日日躁夜夜躁2020 | 久热国产vs视频在线观看 | 亚洲色欲色欲天天天www | 男人扒开女人内裤强吻桶进去 | 国产亚洲精品精品国产亚洲综合 | 久久久久久av无码免费看大片 | av香港经典三级级 在线 | 少妇愉情理伦片bd | 在线精品国产一区二区三区 | 成人精品天堂一区二区三区 | 亚洲成在人网站无码天堂 | 国产精品无码久久av | 97无码免费人妻超级碰碰夜夜 | 在线 国产 欧美 亚洲 天堂 | 色综合久久久久综合一本到桃花网 | 国产成人精品一区二区在线小狼 | 亚洲一区二区三区国产精华液 | 久久人妻内射无码一区三区 | 国产在线精品一区二区三区直播 | 黑人大群体交免费视频 | 日韩精品一区二区av在线 | 亚洲色欲色欲天天天www | 西西人体www44rt大胆高清 | 亚洲日韩av一区二区三区中文 | 精品久久综合1区2区3区激情 | 国内老熟妇对白xxxxhd | 国产 精品 自在自线 | 国产精品久久久久9999小说 | 日韩人妻无码一区二区三区久久99 | 久久精品女人天堂av免费观看 | 夜精品a片一区二区三区无码白浆 | 天堂亚洲免费视频 | 国产精品无码mv在线观看 | 亚洲区小说区激情区图片区 | 久久精品女人的天堂av | 中文字幕+乱码+中文字幕一区 | 在线观看国产午夜福利片 | 国产av无码专区亚洲awww | 国产成人无码区免费内射一片色欲 | 人人澡人人妻人人爽人人蜜桃 | 国产精品久久久 | 青草视频在线播放 | 波多野结衣av在线观看 | 午夜成人1000部免费视频 | 内射巨臀欧美在线视频 | 国产精品久久福利网站 | 又色又爽又黄的美女裸体网站 | 亚洲成av人综合在线观看 | 无码乱肉视频免费大全合集 | 亚洲精品久久久久中文第一幕 | 国产香蕉尹人综合在线观看 | 全黄性性激高免费视频 | 少妇人妻av毛片在线看 | 老头边吃奶边弄进去呻吟 | 亚洲成色在线综合网站 | 人妻中文无码久热丝袜 | 人妻天天爽夜夜爽一区二区 | 国产成人无码区免费内射一片色欲 | 日本乱偷人妻中文字幕 | 国产精品丝袜黑色高跟鞋 | 欧美亚洲日韩国产人成在线播放 | 熟女少妇在线视频播放 | 国产成人午夜福利在线播放 | 国产精品自产拍在线观看 | 中文字幕无码人妻少妇免费 | 一本久道高清无码视频 | 无码福利日韩神码福利片 | 欧美丰满老熟妇xxxxx性 | 大肉大捧一进一出好爽视频 | 精品一区二区不卡无码av | 特黄特色大片免费播放器图片 | 国产成人综合色在线观看网站 | 国产色精品久久人妻 | 亚洲aⅴ无码成人网站国产app | 成人欧美一区二区三区黑人免费 | 亚洲人成网站免费播放 | 无遮挡啪啪摇乳动态图 | 久久精品无码一区二区三区 | 国产精品美女久久久网av | 国产精品久久久av久久久 | 精品午夜福利在线观看 | 国产精品.xx视频.xxtv | 中文字幕+乱码+中文字幕一区 | 色婷婷av一区二区三区之红樱桃 | 蜜臀av在线播放 久久综合激激的五月天 | 国产精品久久久午夜夜伦鲁鲁 | www国产精品内射老师 | 精品国精品国产自在久国产87 | 国产精品va在线播放 | 国产人妻精品一区二区三区不卡 | 国产性猛交╳xxx乱大交 国产精品久久久久久无码 欧洲欧美人成视频在线 | 国产极品美女高潮无套在线观看 | 久久99精品久久久久婷婷 | 女人高潮内射99精品 | 少妇无套内谢久久久久 | 婷婷综合久久中文字幕蜜桃三电影 | 国产精品亚洲lv粉色 | 亚洲七七久久桃花影院 | 欧美大屁股xxxxhd黑色 | 18黄暴禁片在线观看 | 国产国产精品人在线视 | 精品国产一区二区三区av 性色 | 久久精品99久久香蕉国产色戒 | 国产成人精品一区二区在线小狼 | 少女韩国电视剧在线观看完整 | 无码人妻丰满熟妇区五十路百度 | 俺去俺来也www色官网 | 国产亚洲视频中文字幕97精品 | 无码国产激情在线观看 | 久久熟妇人妻午夜寂寞影院 | 亚洲成av人片在线观看无码不卡 | 曰本女人与公拘交酡免费视频 | 丰满人妻一区二区三区免费视频 | 无码任你躁久久久久久久 | 欧美一区二区三区视频在线观看 | 成人欧美一区二区三区黑人 | 人妻夜夜爽天天爽三区 | 午夜精品一区二区三区的区别 | 日本护士毛茸茸高潮 | 欧美精品一区二区精品久久 | 偷窥村妇洗澡毛毛多 | 激情亚洲一区国产精品 | 小sao货水好多真紧h无码视频 | 久久亚洲a片com人成 | 久久久中文久久久无码 | 亚洲乱码中文字幕在线 | 国产成人综合在线女婷五月99播放 | 美女黄网站人色视频免费国产 | 欧美35页视频在线观看 | 六月丁香婷婷色狠狠久久 | 久久综合久久自在自线精品自 | 黑人巨大精品欧美黑寡妇 | 久久人妻内射无码一区三区 | 久激情内射婷内射蜜桃人妖 | 久久无码专区国产精品s | 久久久久99精品国产片 | 亚洲精品国产a久久久久久 | 熟妇人妻激情偷爽文 | 中文字幕 人妻熟女 | 日韩精品无码免费一区二区三区 | 国产精品99久久精品爆乳 | 爱做久久久久久 | 午夜丰满少妇性开放视频 | 日本www一道久久久免费榴莲 | 亚洲乱亚洲乱妇50p | 中文字幕 亚洲精品 第1页 | 亚洲人成人无码网www国产 | 久久99精品久久久久婷婷 | 亚洲精品午夜国产va久久成人 | 国产人妻久久精品二区三区老狼 | 女人被男人爽到呻吟的视频 | 动漫av网站免费观看 | 精品熟女少妇av免费观看 | 成人欧美一区二区三区 | 老司机亚洲精品影院无码 | 亚洲国产欧美日韩精品一区二区三区 | 日本爽爽爽爽爽爽在线观看免 | 色五月五月丁香亚洲综合网 | 少妇高潮一区二区三区99 | 呦交小u女精品视频 | 色综合久久久无码网中文 | 亚洲爆乳无码专区 | 天堂亚洲2017在线观看 | 亚洲精品一区二区三区四区五区 | 国产亚洲精品久久久久久国模美 | 最新版天堂资源中文官网 | 久久精品99久久香蕉国产色戒 | 亚洲精品无码国产 | 亚洲精品鲁一鲁一区二区三区 | 沈阳熟女露脸对白视频 | 日韩精品久久久肉伦网站 | 欧美真人作爱免费视频 | 99精品视频在线观看免费 | 女人被男人躁得好爽免费视频 | 精品少妇爆乳无码av无码专区 | 国产超级va在线观看视频 | 亚无码乱人伦一区二区 | 成人av无码一区二区三区 | 一本大道久久东京热无码av | 狠狠色色综合网站 | 国产无遮挡吃胸膜奶免费看 | 天堂亚洲2017在线观看 | 亚洲综合在线一区二区三区 | 色 综合 欧美 亚洲 国产 | 精品国产一区二区三区av 性色 | 最近免费中文字幕中文高清百度 | 国产办公室秘书无码精品99 | 中文字幕乱码人妻二区三区 | 九月婷婷人人澡人人添人人爽 | 18禁黄网站男男禁片免费观看 | 亚洲高清偷拍一区二区三区 | 日日摸天天摸爽爽狠狠97 | 性色欲网站人妻丰满中文久久不卡 | 欧美乱妇无乱码大黄a片 | 精品国偷自产在线视频 | 99精品无人区乱码1区2区3区 | 亚洲色www成人永久网址 | 国内综合精品午夜久久资源 | 午夜精品久久久久久久 | 国内丰满熟女出轨videos | 小sao货水好多真紧h无码视频 | 中文字幕av日韩精品一区二区 | 正在播放东北夫妻内射 |