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

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 前端技术 > javascript >内容正文

javascript

SpringFramework-IOC(依赖注入)+AOP(面向切面编程)

發(fā)布時間:2023/12/31 javascript 39 豆豆
生活随笔 收集整理的這篇文章主要介紹了 SpringFramework-IOC(依赖注入)+AOP(面向切面编程) 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

文章目錄

    • 簡介
      • 七大模塊
    • IOC(控制反轉(zhuǎn))
    • HelloSpring
    • IOC創(chuàng)建對象方式
    • Spring配置文件
      • alias(別名)
      • Bean的配置
      • import
    • 依賴注入(DI)
      • set注入
      • c命名和p命名空間注入
    • bean的作用域
    • bean 的自動裝配(autowire)
    • 使用注解開發(fā)
      • bean(@Component)
      • 屬性注入(@Value(""))
      • 衍生的注解
      • 使用注解自動裝配(@Autowired)
      • 作用域
      • 使用Java的方式配置Spring
    • 代理模式
      • 靜態(tài)代理
      • 動態(tài)代理
    • AOP
      • 使用Spring的API接口實現(xiàn)
      • 自定義切入點類
      • 注解實現(xiàn)AOP(@Aspect)
    • 整合myBatis
      • 方法一
      • 方法二
    • 事務(wù)
      • 聲明式事務(wù)

簡介

中文文檔

Spring Framework中文文檔

  • 目的:解決企業(yè)應(yīng)用開發(fā)的復(fù)雜性

  • 功能:使用基本的JavaBean代替EJB,并提供了更多的企業(yè)應(yīng)用功能

  • 范圍:任何Java應(yīng)用

  • Spring是一個輕量級控制反轉(zhuǎn)(IoC)和面向切面(AOP)的容器框架。

  • Rod Johnson是spring Framework的創(chuàng)始人

  • Spring的理念:使現(xiàn)在的技術(shù)更加的容易使用,整合現(xiàn)有的技術(shù)框架

  • SSH:Struct2 + Spring + Hibernate

  • SSM:SpringMvc + Spring +MyBatis

  • 優(yōu)點:

    • Spring是一個開源的免費的框架
    • Spring是一個輕量級的、非入侵式的框架
    • 控制反轉(zhuǎn)(IOC),面向切面編程(AOP
    • 支持事務(wù)的處理
    • 對框架的整合支持
      Spring就是一個輕量級的控制反轉(zhuǎn)(IOC)和面向切面編程(AOP)的框架

Github地址
maven倉庫:

<!-- https://mvnrepository.com/artifact/org.springframework/spring-webmvc --> <dependency><groupId>org.springframework</groupId><artifactId>spring-webmvc</artifactId><version>5.2.8.RELEASE</version> </dependency><!-- https://mvnrepository.com/artifact/org.springframework/spring-jdbc --> <dependency><groupId>org.springframework</groupId><artifactId>spring-jdbc</artifactId><version>5.2.8.RELEASE</version> </dependency>

七大模塊

  • Spring Boot:
    • 一個快速開發(fā)的腳手架
    • 基于SpringBoot可以快速的開發(fā)單個微服務(wù)
    • 約定大于配置
  • Spring Cloud:
    • 基于SpringBoot實現(xiàn)的

IOC(控制反轉(zhuǎn))

  • 之前,程序主動創(chuàng)建對象,控制權(quán)在底層
  • 使用set注入,程序不再有主動權(quán),變成了被動的接收對象,降低系統(tǒng)耦合性
  • 控制反轉(zhuǎn)是一種通過描述(XML或者注解)并通過第三方去生產(chǎn)或獲取特定對象的方式,在Spring中實現(xiàn)控制反轉(zhuǎn)的是IOC容器,其實現(xiàn)方法是依賴注入(Dependency Injection ,DI)

控制反轉(zhuǎn)IOC(Inversion of Control),是一種設(shè)計思想,沒有IoC的程序中,我們使用面向?qū)ο蟮木幊?#xff0c;對象的創(chuàng)建與對象間的依賴關(guān)系完全硬編碼在程序中,對象的創(chuàng)建由程序自己控制,控制反轉(zhuǎn)后將對象的創(chuàng)建轉(zhuǎn)移給第三方

HelloSpring

  • 對象由Spring來創(chuàng)建,管理和裝配
  • 創(chuàng)建一個測試類
  • public class Hello {private String str;public String getStr() {return str;}public void setStr(String str) {this.str = str;}@Overridepublic String toString() {return "Hello{" +"str='" + str + '\'' +'}';} }
  • 在xml文件中注冊
  • <?xml version="1.0" encoding="UTF-8"?> <beans xmlns="http://www.springframework.org/schema/beans"xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"xsi:schemaLocation="http://www.springframework.org/schema/beanshttp://www.springframework.org/schema/beans/spring-beans.xsd"><!--使用Spring來創(chuàng)建對象,在Spring中這些都稱為bean類型 變量名 = new 類型();id:變量名class:new的對象property:相當(dāng)于給對象里的屬性設(shè)置值ref:引用Spring中創(chuàng)建好的對象value:基本的數(shù)據(jù)類型 --><bean id="hello" class="com.huang.pojo.Hello"><property name="str" value="Spring"/></bean> </beans>
  • 測試調(diào)用
  • public class myTest {@Testpublic void testHello(){//獲取Spring的容器ApplicationContext context = new ClassPathXmlApplicationContext("beans.xml");//我們的對象都在Spring中管理了,要使用直接去取出來Hello hello = (Hello) context.getBean("hello");System.out.println(hello.toString());} }

    IOC創(chuàng)建對象方式

    • 在配置文件加載的時候,容器中管理的對象就已經(jīng)被創(chuàng)建了
    • 無參構(gòu)造:property
    • 有參構(gòu)造:constructor-arg
    <bean id="hello" class="com.huang.pojo.Hello"> <!--無參構(gòu)造--><property name="str" value="Spring"/> <!--有參構(gòu)造方法:1. 下標賦值2. 類型賦值3. 直接通過參數(shù)名 --><constructor-arg index="0" value="huang"/><constructor-arg type="java.lang.String" value="yaohui"/><constructor-arg name="str" value="hanhan"</bean>

    Spring配置文件

    alias(別名)

    • 如果添加了別名,也可以通過別名獲取這個對象
    <alias name="hello" alias="hello2"/>

    Bean的配置

    • id:bean的唯一標識符,也相當(dāng)于我們學(xué)的對象名
    • class:bean對象所對應(yīng)的全限定名
    • name:也是別名,可以起多個別名,可以用(,;空格)等來間隔
    <bean id="myname" class="com.huang.pojo.Hello" name="name1 name2,name3"></bean>

    import

    • 一般用于團隊開發(fā),可以將多個配置文件合并
    <import resource="beans.xml"/>

    依賴注入(DI)

    • 構(gòu)造器注入
    • set方式注入
    • 拓展方式注入

    set注入

    • 依賴注入:set注入
      • 依賴:bean對象的創(chuàng)建依賴于容器
      • 注入:bean對象中所有的屬性,由容器來注入
    • 包含類型:
    bean | ref | idref | list | set | map | props | value | null
    • 例子:
    <bean id="student" class="com.huang.pojo.Student"><!--1. 普通注入 value--><property name="name" value="persistenthuang"/><!--2. bean注入 ref--><property name="hello" ref="hello"/><!--3. 數(shù)組注入 array--><property name="books"><array><value type="java.lang.String">紅樓夢</value><value type="java.lang.String">西游記</value><value type="java.lang.String">水滸傳</value><value type="java.lang.String">三國演義</value></array></property><!--4. List集合注入 list--><property name="hobby"><list><value type="java.lang.String">聽歌</value><value type="java.lang.String">看電影</value></list></property><!--5. Map注入 map--><property name="card"><map><entry key="cad1" value="123"/><entry key="cad2" value="123456"/></map></property><!--6. Set注入 set--><property name="games"><set><value type="java.lang.String">LoL</value><value type="java.lang.String">紅警</value><value type="java.lang.String">刀塔</value></set></property><!--7. 空值注入 null--><property name="wife"><null/></property><!--8. 配置注入:property--><property name="properties"><props><prop key="學(xué)號">22111222</prop><prop key="班級">三年二班</prop><prop key="姓名">persistenthuang</prop></props></property></bean>

    c命名和p命名空間注入

    P命名空間:可以直接注入屬性的值(property)

    • 導(dǎo)入p命名空間
    xmlns:p="http://www.springframework.org/schema/p"
    • 測試使用
    //通過set注入<bean id="hello3" class="com.huang.pojo.Hello" p:str="huang"></bean>

    C命名空間:

    • 引入C命名空間
    xmlns:c="http://www.springframework.org/schema/c"
    • 測試使用
    //通過構(gòu)造器注入<bean id="hello4" class="com.huang.pojo.Hello" c:str="hhhh"></bean>
    • 注意:
      • p命名和c命名空間不能直接使用,要導(dǎo)入xml約束

    bean的作用域

    • singleton(單例模式):Spring默認機制
    • prototype(原型模式):每次從容器中g(shù)et的時候都會產(chǎn)生一個新對象
    • 其余request、session、application,在web開發(fā)中才能用
    范圍使用描述
    singleton(單例)scope=“singleton”(默認)為每個 Spring IoC 容器的單個 object 實例定義單個 bean 定義。
    prototype(原型)scope=“prototype”為任意數(shù)量的 object 實例定義單個 bean 定義。
    request(請求)scope=“request”將單個 bean 定義范圍限定為單個 HTTP 請求的生命周期。也就是說,每個 HTTP 請求都有自己的 bean 實例,該實例是在單個 bean 定義的后面創(chuàng)建的。僅在 web-aware Spring ApplicationContext的 context 中有效。
    sessionscope=“session”將單個 bean 定義范圍限定為 HTTP Session的生命周期。僅在 web-aware Spring ApplicationContext的 context 中有效。
    application(應(yīng)用)將單個 bean 定義范圍限定為ServletContext的生命周期。僅在 web-aware Spring ApplicationContext的 context 中有效。
    WebSocket將單個 bean 定義范圍限定為WebSocket的生命周期。僅在 web-aware Spring ApplicationContext的 context 中有效。

    bean 的自動裝配(autowire)

    • 自動裝配式Spring滿足bean依賴的一種方式

    • Spring會在上下文中自動查找,并自動給bean裝配屬性

    • Spring中的三種裝配的方式:

      • 在xml中顯示的配置
      • 在java中顯示配置
      • 隱式的自動裝配bean
    • 裝配方式:

      • byName:(名字對應(yīng))會自動在容器上下文中查找,和自己對象set方法后面的值對應(yīng)的beanid
      • byType:(類型唯一)會自動在容器上下文中查找,和自己對象屬性類型相同的bean

    使用注解開發(fā)

    • 在使用Spring4之后,要使用注解開發(fā),必須保證aop包導(dǎo)入了
    • 使用注解要導(dǎo)入context約束,增加注解支持注解支持
    <?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"xsi:schemaLocation="http://www.springframework.org/schema/beanshttp://www.springframework.org/schema/beans/spring-beans.xsdhttp://www.springframework.org/schema/contexthttp://www.springframework.org/schema/context/spring-context.xsd"><context:annotation-config/> <!--指定要掃描的包,這個包下的注解就會生效--><context:component-scan base-package="com.huang.pojo"/> </beans>

    bean(@Component)

    • 加注解:@Component
    • @Component:組件,放在類上,說明這個類被Spring管理了,就是bean

    屬性注入(@Value(""))

    • 加注解:@Value("")
    • 可以放在屬性或者set方法上
    • 適用簡單屬性,復(fù)雜屬性適用xml注入

    衍生的注解

    • 【@Component】有幾個衍生注解,在Web開發(fā)中,會按照mvc三層架構(gòu)分層
      • Dao:【@Repository】
      • Service:【@Service】
      • Controller:【@Controller】
    • 這四個注解功能都一樣 ,代表將這個類注冊到Spring中,裝配Bean

    使用注解自動裝配(@Autowired)

    • jdk1.5支持注解,Spring2.5就支持注解了

    • 使用注解:

      • 導(dǎo)入約束: xmlns:context=“http://www.springframework.org/schema/context”
      • 配置注解支持:context:annotation-config/
      • 在要自動裝配的屬性上使用,也可以在Set方法上使用: @Autowired
    <?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"xsi:schemaLocation="http://www.springframework.org/schema/beanshttp://www.springframework.org/schema/beans/spring-beans.xsdhttp://www.springframework.org/schema/contexthttp://www.springframework.org/schema/context/spring-context.xsd"><!--指定要掃描的包,這個包下的注解就會生效--><context:component-scan base-package="com.huang.Dao"/><context:annotation-config/> </beans>
    • 使用Autowired我們可以不用編寫Set方法,前提是你這個自動裝配的屬性在IOC(Spring)容器中存在,且符合名字byName
      • 顯示的定義了@Autowired(required = false),說明這個對象可以為空,否則不允許為空
      • @Nullable:字段標記了這個注解,說明這個注解可以為NULL
      • @Qualifier(value=“指定的命名”):自動裝配環(huán)境比較復(fù)雜的時候,無法通過一個注解完成時添加的
      • 不使用Autowired時可以使用@Resource(name="")
    @Autowired(required = false)@Qualifier(value = "hello2")private Hello hello;
    • @Autowired和@Resource的區(qū)別
      • 都是用來自動裝配的,都可以放在屬性字段上
      • @Autowired通過byType的方式實現(xiàn),而且必須要求這個對象存在
      • @Resource默認通過byName方式實現(xiàn),如果找不到名字,則通過byType實現(xiàn)

    作用域

    • @Scope(“singleton”):單例模式

    • @Scope(“prototype”):原型模式

    • XML與注解

      • xml:更加萬能,適用于任何場合,維護簡單方便
      • 注解:不是自己的類適用不了,維護相對復(fù)雜
      • xml與注解結(jié)合:
        • xml用來管理bean
        • 注解完成屬性注入

    使用Java的方式配置Spring

    • 不適用Spring的xml配置
    • JavaConfig是Spring的一個子項目,Spring4之后變成了核心功能
  • 寫一個實體類
  • //@Component:等價于<bean id="user" class="com.huang.Dao.User"/> @Data @Component @Scope("singleton") public class User {@Value("huang")private String name; }
  • 寫一個 配置類
  • //這個也會Spring容器托管,注冊到容器中,因為它本身就是一個組件 //@Configuration代表一個配置類,和之前的beans.xml一樣 @Configuration @ComponentScan("com.huang") //掃描包 @Import(config2.class) //引入其他配置類 public class huangConfig {/*** 注冊一個bean相當(dāng)于之前寫的一個bean標簽* 方法名 = bean標簽中的id屬性* 方法返回類型 = bean標簽中的class屬性*/@Beanpublic User getUser(){return new User();} }
  • 調(diào)用測試
  • @Testpublic void testHello(){//如果完全使用配置類的方式去做//只能通過AnnotationConfig上下文來獲取容器//通過配置類的class對象來加載ApplicationContext context = new AnnotationConfigApplicationContext(huangConfig.class);User user = context.getBean("getUser", User.class);System.out.println(user.toString());}

    代理模式

    • 分類:
      • 靜態(tài)代理
      • 動態(tài)代理

    靜態(tài)代理

    • 角色
      • 抽象角色:一般會使用接口或者抽象類來解決
      • 真實角色:被代理的角色
      • 代理角色:代理真實角色,代理真實角色后,一般會做一些附屬操作
      • 客戶角色:訪問代理對象的人
    • 代理模式的好處:
      • 可以使用真實角色的操作更加純粹,不用去關(guān)注一些公共業(yè)務(wù)
      • 公共業(yè)務(wù)也就交給了代理角色!實現(xiàn)了業(yè)務(wù)的分工
      • 公共業(yè)務(wù)發(fā)生擴展的時候,方便集中管理
    • 缺點:
      • 一個真實角色就會產(chǎn)生一個代理角色,代碼量會翻倍,開發(fā)效率會變低
      • 動態(tài)代理好處:
        • 一個動態(tài)代理代理的是一類接口,一般就是對應(yīng)的一類業(yè)務(wù)
        • 一個動態(tài)代理可以代理多個類,只要實現(xiàn)了同一個接口即可

    動態(tài)代理

    • 角色:動態(tài)代理和靜態(tài)代理的角色是一樣

    • 動態(tài)代理的代理類是動態(tài)生成的

    • 動態(tài)代理分為兩大類:基于接口的動態(tài)代理,基于類的動態(tài)代理

      • 基于接口:JDK動態(tài)代理
      • 基于類:cgLib
      • Java字節(jié)碼實現(xiàn):javasist
    • 了解兩個類:

      • Proxy:代理
      • InvocationHandler:調(diào)用處理程序

    InvocationHandler是由代理實例的調(diào)用處理程序?qū)崿F(xiàn)的接口。
    每個代理實例都有一個關(guān)聯(lián)的調(diào)用處理程序。 在代理實例上調(diào)用方法時,方法調(diào)用將被編碼并調(diào)度到其調(diào)用處理程序的invoke方法。

    • 實現(xiàn)一個萬能代理類生成類:
    //使用這個類自動生成代理類 public class ProxyInvocationHandler implements InvocationHandler {//被代理的接口private Object target;public void setTarget(Object target) {this.target = target;}//生成代理對象public Object getProxy(){return Proxy.newProxyInstance(this.getClass().getClassLoader(),target.getClass().getInterfaces(),this);}//處理代理實類,并返回結(jié)果public Object invoke(Object proxy, Method method, Object[] args) throws Throwable {//動態(tài)代理的本質(zhì),就是使用反射機制實現(xiàn)Object result = method.invoke(target, args);return result;} }
    • 測試使用:Host是一個繼承Rent接口的實現(xiàn)類,Rent是一個
    public class Client {public static void main(String[] args) {//真實角色Host host=new Host();//代理角色:動態(tài)創(chuàng)建ProxyInvocationHandler handler = new ProxyInvocationHandler();//通過調(diào)用程序處理角色,來創(chuàng)建對象handler.setTarget(host);Rent proxy = (Rent)handler.getProxy(); //這里的proxy是動態(tài)生成的proxy.rent();} }

    AOP

    AOP(Aspect Oriented Programming)意為:面向切面編程,通過預(yù)編譯方式和運行期間動態(tài)代理實現(xiàn)程序功能的統(tǒng)一維護的一種技術(shù)。AOP是OOP的延續(xù),是軟件開發(fā)中的一個熱點,也是Spring框架中的一個重要內(nèi)容,是函數(shù)式編程的一種衍生范型。利用AOP可以對業(yè)務(wù)邏輯的各個部分進行隔離,從而使得業(yè)務(wù)邏輯各部分之間的耦合度降低,提高程序的可重用性,同時提高了開發(fā)的效率。

    • 添加依賴
    <dependency><groupId>org.aspectj</groupId><artifactId>aspectjweaver</artifactId><version>1.9.4</version></dependency>

    提供聲明式事務(wù):允許用戶自定義切面

    • 橫切關(guān)注點:跨越應(yīng)用程序多個模塊的方法或功能。即是,與我們業(yè)務(wù)邏輯無關(guān),但是我們需要關(guān)注的部分,就是橫切關(guān)注點。如日志,安全,緩存,事務(wù)等等
    • 切面(ASPECT):橫切關(guān)注點,被模塊化的特殊對象。即,它是一個類
    • 通知(Advice):切面必須要完成的工作。即,它是類中的一個方法
    • 目標(Target):被通知對象
    • 代理(Proxy):向目標對象應(yīng)用通知后創(chuàng)建的對象
    • 切入點(PointCut):切面通知執(zhí)行的“地點”的定義
    • 連接點(JointPoint):與切入點匹配的執(zhí)行點

    使用Spring的API接口實現(xiàn)

    • 創(chuàng)建兩個日志類繼承接口:MethodBeforeAdvice,AfterReturningAdvice
    public class logBefore implements MethodBeforeAdvice {/*** method:要執(zhí)行的目標對象的方法* objects:參數(shù)* o:目標對象*/public void before(Method method, Object[] objects, Object o) throws Throwable {System.out.println(o.getClass().getName()+"的"+method.getName()+"被執(zhí)行了");} }public class logAfter implements AfterReturningAdvice {//o:返回值public void afterReturning(Object o, Method method, Object[] objects, Object o1) throws Throwable {System.out.println("執(zhí)行了"+method.getName());} }
    • 在Spring的xml中注冊
    <?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:aop="http://www.springframework.org/schema/aop"xsi:schemaLocation="http://www.springframework.org/schema/beanshttp://www.springframework.org/schema/beans/spring-beans.xsdhttp://www.springframework.org/schema/aophttp://www.springframework.org/schema/aop/spring-aop.xsd"><!--注冊bean--><bean id="host" class="com.Proxy.Host"/><bean id="logbefore" class="com.Proxy.Log.logBefore"/><bean id="logafter" class="com.Proxy.Log.logAfter"/><!--方式一:使用原生態(tài)Spring API接口--><!--配置AOP:需要導(dǎo)入aop的約束--><aop:config><!--切入點: expression表達式,execution(要執(zhí)行的位置)--><aop:pointcut id="pointCut" expression="execution(* com.Proxy.Host.*(..))"/><!--執(zhí)行環(huán)繞增加--><aop:advisor advice-ref="logbefore" pointcut-ref="pointCut"/><aop:advisor advice-ref="logafter" pointcut-ref="pointCut"/></aop:config> </beans>
    • 測試調(diào)用
    @Testpublic void testAOP(){ApplicationContext context = new ClassPathXmlApplicationContext("applicationContext.xml");Rent host = (Rent) context.getBean("host");host.rent();}

    自定義切入點類

    execution用法參考連接

    • 自定義一個類
    public class DiyPointCut {private void before(){System.out.println("===============before=============");}private void after(){System.out.println("===============after=============");} }
    • 編寫配置文件
    <!--方式二:自定義類--><bean id="diy" class="com.Proxy.Diy.DiyPointCut"/><aop:config><!--自定義切面:ref要引用的類--><aop:aspect ref="diy"><!--切入點--><aop:pointcut id="point" expression="execution(* com.Proxy.Host.*(..))"/><!--通知--><aop:before method="before" pointcut-ref="point"/><aop:after method="after" pointcut-ref="point"/></aop:aspect></aop:config>

    注解實現(xiàn)AOP(@Aspect)

    • 代理方法寫法:
    @Aspect public class DiyPointCut {@Before("execution(* com.Proxy.Host.*(..))")private void before(){System.out.println("===============before=============");}@After("execution(* com.Proxy.Host.*(..))")private void after(){System.out.println("===============after=============");}//在環(huán)繞增強中,可以給一個參數(shù),代表我們要獲取處理切入的點@Around("execution(* com.Proxy.Host.*(..))")public void around(ProceedingJoinPoint jp) throws Throwable {System.out.println("===============around-before=============");Object proceed = jp.proceed(); //代表執(zhí)行方法System.out.println("===============around-after=============");} }
    • 注冊方法
    <!--方式三--><bean id="diy" class="com.Proxy.Diy.DiyPointCut"/><!--開啟注解支持, JDK(默認proxy-target-class="false") cgLib(proxy-target-class="true")--><aop:aspectj-autoproxy/>

    整合myBatis

    官方文檔

  • 導(dǎo)入相關(guān)jar包
    • junit
    • myBatis
    • mysql數(shù)據(jù)庫
    • Spring
    • aop
    • myBatis-spring
  • <dependencies><!--單元測試--><dependency><groupId>junit</groupId><artifactId>junit</artifactId><version>4.13</version><scope>test</scope></dependency><!--mysql連接數(shù)據(jù)庫--><dependency><groupId>mysql</groupId><artifactId>mysql-connector-java</artifactId><version>5.1.49</version></dependency><!--mybatis --><dependency><groupId>org.mybatis</groupId><artifactId>mybatis</artifactId><version>3.5.5</version></dependency><!--spring-webmvc --><dependency><groupId>org.springframework</groupId><artifactId>spring-webmvc</artifactId><version>5.2.8.RELEASE</version></dependency><!--spring-jdbc --><dependency><groupId>org.springframework</groupId><artifactId>spring-jdbc</artifactId><version>5.2.8.RELEASE</version></dependency><dependency><groupId>org.aspectj</groupId><artifactId>aspectjweaver</artifactId><version>1.9.4</version></dependency><!--mybatis-spring --><dependency><groupId>org.mybatis</groupId><artifactId>mybatis-spring</artifactId><version>2.0.5</version></dependency></dependencies>
  • 編寫數(shù)據(jù)源
  • sqlSessionFactory
  • sqlSessionTemplate
  • 給接口加實現(xiàn)類
  • 將自己寫的實現(xiàn)類注入到mybatis
  • 測試
  • 方法一

    • 實體類:
    @Data public class User {int id;String class_name; }
    • Mapper接口
    public interface UserMapper {public List<User> selectUser(); }
    • mapper.xml
    <?xml version="1.0" encoding="UTF-8" ?> <!DOCTYPE mapperPUBLIC "-//mybatis.org//DTD Mapper 3.0//EN""http://mybatis.org/dtd/mybatis-3-mapper.dtd"> <!--namespace=命名空間--> <mapper namespace="com.huang.mapper.UserMapper"><select id="selectUser" resultType="com.huang.pojo.User">select * from school.test2</select> </mapper>
    • mapper的實現(xiàn)類
    @Data public class UserMapperImpl implements UserMapper {SqlSessionTemplate sqlSession;public List<User> selectUser() {UserMapper mapper = sqlSession.getMapper(UserMapper.class);return mapper.selectUser();} }
    • myBatis-config.xml:mybatis的核心配置文件
    <?xml version="1.0" encoding="UTF-8" ?> <!DOCTYPE configurationPUBLIC "-//mybatis.org//DTD Config 3.0//EN""http://mybatis.org/dtd/mybatis-3-config.dtd"> <!--configuration核心配置文件--> <configuration> </configuration>
    • spring-dao.xml:整合配置文件,專注于mybatis的一些對象生成
    <?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:aop="http://www.springframework.org/schema/aop"xsi:schemaLocation="http://www.springframework.org/schema/beanshttp://www.springframework.org/schema/beans/spring-beans.xsdhttp://www.springframework.org/schema/aophttp://www.springframework.org/schema/aop/spring-aop.xsd"><!--DataSource:使用spring的數(shù)據(jù)源替換mybatis的配置,使用spring提供的jdbc--><bean id="dataSource" class="org.springframework.jdbc.datasource.DriverManagerDataSource"><property name="driverClassName" value="com.mysql.jdbc.Driver"/><property name="url" value="jdbc:mysql://localhost:3306/school?useSSL=false&amp;useUnicode=true&amp;characterEncoding=UTF-8"/><property name="username" value="root"/><property name="password" value="123456"/></bean><!--sqlSessionFactory--><bean id="sqlSessionFactory" class="org.mybatis.spring.SqlSessionFactoryBean"><property name="dataSource" ref="dataSource"/><!--綁定myBatis--><property name="configLocation" value="classpath:myBatis-config.xml"/><property name="mapperLocations" value="classpath:com/huang/mapper/UserMapper.xml"/></bean><!--SqlSessionTemplate就是我們用的sqlSession--><bean id="sqlSession" class="org.mybatis.spring.SqlSessionTemplate"><!--只能使用構(gòu)造器注入,因為沒有set函數(shù)--><constructor-arg index="0" ref="sqlSessionFactory"/></bean></beans>
    • applicationContext.xml:總配置文件,引入spring-dao.xml
    <?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:aop="http://www.springframework.org/schema/aop"xsi:schemaLocation="http://www.springframework.org/schema/beanshttp://www.springframework.org/schema/beans/spring-beans.xsdhttp://www.springframework.org/schema/aophttp://www.springframework.org/schema/aop/spring-aop.xsd"><import resource="spring-dao.xml"/><bean id="userMapper" class="com.huang.mapper.UserMapperImpl"><property name="sqlSession" ref="sqlSession"/></bean><bean id="userMapper2" class="com.huang.mapper.UserMapperImpl2"><property name="sqlSessionFactory" ref="sqlSessionFactory"/></bean> </beans>
    • 測試調(diào)用
    @Testpublic void testSB(){ApplicationContext context = new ClassPathXmlApplicationContext("applicationContext.xml");UserMapper userMapper = context.getBean("userMapper", UserMapper.class);for (User user : userMapper.selectUser()) {System.out.println(user.toString());}}

    方法二

    • 不用創(chuàng)建sqlsession對象了,實現(xiàn)接口繼承一個SqlSessionDaoSupport對象
    public class UserMapperImpl2 extends SqlSessionDaoSupport implements UserMapper {public List<User> selectUser() {return getSqlSession().getMapper(UserMapper.class).selectUser();} }
    • 注冊
    <bean id="userMapper2" class="com.huang.mapper.UserMapperImpl2"><property name="sqlSessionFactory" ref="sqlSessionFactory"/></bean>

    事務(wù)

    • 事務(wù):
    • 要么都成功,要么都失敗
    • 保持完整性和一致性
    • 事務(wù)的ACID原則:原子性,一致性,隔離性,持久性

    聲明式事務(wù)

    • 使用AOP的方式

    • 修改后的spring-dao.xml

    <?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:aop="http://www.springframework.org/schema/aop"xmlns:tx="http://www.springframework.org/schema/tx"xsi:schemaLocation="http://www.springframework.org/schema/beanshttp://www.springframework.org/schema/beans/spring-beans.xsdhttp://www.springframework.org/schema/aophttp://www.springframework.org/schema/aop/spring-aop.xsdhttp://www.springframework.org/schema/txhttp://www.springframework.org/schema/tx/spring-tx.xsd"><!--DataSource:使用spring的數(shù)據(jù)源替換mybatis的配置,使用spring提供的jdbc--><bean id="dataSource" class="org.springframework.jdbc.datasource.DriverManagerDataSource"><property name="driverClassName" value="com.mysql.jdbc.Driver"/><property name="url" value="jdbc:mysql://localhost:3306/school?useSSL=false&amp;useUnicode=true&amp;characterEncoding=UTF-8"/><property name="username" value="root"/><property name="password" value="123456"/></bean><!--sqlSessionFactory--><bean id="sqlSessionFactory" class="org.mybatis.spring.SqlSessionFactoryBean"><property name="dataSource" ref="dataSource"/><!--綁定myBatis--><property name="configLocation" value="classpath:myBatis-config.xml"/><property name="mapperLocations" value="classpath:com/huang/mapper/UserMapper.xml"/></bean><!--SqlSessionTemplate就是我們用的sqlSession--><bean id="sqlSession" class="org.mybatis.spring.SqlSessionTemplate"><!--只能使用構(gòu)造器注入,因為沒有set函數(shù)--><constructor-arg index="0" ref="sqlSessionFactory"/></bean><!--配置聲明式事務(wù)--><bean id="transactionManager" class="org.springframework.jdbc.datasource.DataSourceTransactionManager"><property name="dataSource" ref="dataSource"/></bean> <!--結(jié)合AOP實現(xiàn)事務(wù)的織入--><!--配置事務(wù)的通知--><tx:advice id="txAdvice" transaction-manager="transactionManager"><!--給哪些方法配置事務(wù)--><!--配置事務(wù)傳播特性--><tx:attributes><tx:method name="*" propagation="REQUIRED"/></tx:attributes></tx:advice><!--配置事務(wù)切入--><aop:config><aop:pointcut id="txPointCut" expression="execution(* com.huang.mapper.*.*(..))"/><aop:advisor advice-ref="txAdvice" pointcut-ref="txPointCut"/></aop:config></beans>

    總結(jié)

    以上是生活随笔為你收集整理的SpringFramework-IOC(依赖注入)+AOP(面向切面编程)的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

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

    人人揉人人揉人人揉人人揉97 | 亚洲aⅴ乱码精品成人区 | 麻豆成人精品视频 | 中文字幕在线免费观看 | 精品国产自在精品国产精野外直播 | 婷婷色在线 | 久久无码av一区二区三区电影网 | 日韩av成人免费看 | 日日色综合 | 国产精品久久久久久久免费 | 国产亚洲精品久久久久久久久久久久 | 一二区av | 欧美一区二视频在线免费观看 | 97国产小视频 | 日韩av一区在线观看 | 91精品久久久久久久久久入口 | 久久久首页| 久久精品综合 | 欧美国产亚洲精品久久久8v | 4hu视频| 久久精品99国产精品 | 天天色天天射综合网 | 亚洲无吗视频在线 | 98超碰人人 | 四虎在线免费视频 | 综合久久久久久久久 | 亚洲波多野结衣 | 久久 国产一区 | 久草视频在线免费 | 97在线观看免费高清 | 国产精品完整版 | 麻豆视传媒官网免费观看 | 欧美精品久久久久久久久久白贞 | 在线观看中文字幕网站 | 国产精品嫩草影视久久久 | 一区二区毛片 | 亚洲综合精品视频 | 丁香六月天 | 一区二区三区四区五区在线 | 九九热久久久 | 国产精品欧美久久 | 超级碰碰免费视频 | 在线免费观看羞羞视频 | 亚洲一级电影视频 | 亚洲欧美日韩一区二区三区在线观看 | www久久久久| 日本韩国精品在线 | 日韩字幕在线观看 | 国产精品毛片一区二区在线看 | 色操插 | 午夜精品久久久久久久99水蜜桃 | 天天干天天干天天干天天干天天干天天干 | 97色综合 | 中文字幕精品一区二区三区电影 | 中文字幕日韩免费视频 | 6080yy精品一区二区三区 | 天天色天天色天天色 | 国产69久久| 精品国产123 | 国精产品一二三线999 | 成人午夜电影免费在线观看 | 国产美女久久 | 亚洲精品视频在线免费播放 | 欧洲精品久久久久毛片完整版 | 久久久久女人精品毛片九一 | 三级黄色网络 | 91插插影库 | 97理论片| 在线观看日本高清mv视频 | 黄色网址中文字幕 | 中日韩男男gay无套 日韩精品一区二区三区高清免费 | 欧美成人h版在线观看 | 久久这里只有精品久久 | 午夜精品久久久 | 亚洲精品9| 99热都是精品 | 国产精品露脸在线 | 视频在线国产 | 91香蕉视频好色先生 | 欧美日韩一区久久 | 久色小说 | 国产成人一区二区啪在线观看 | 97精品国自产拍在线观看 | 成人毛片在线观看视频 | 香蕉视频在线看 | japanese黑人亚洲人4k | 国产视频一区二区在线播放 | 免费色av| 夜夜操狠狠操 | 2021国产视频 | 亚洲成色777777在线观看影院 | 国产中文字幕一区 | 国产高清不卡在线 | 3d黄动漫免费看 | 久久免费视频一区 | av免费黄色 | 精品福利在线视频 | zzijzzij亚洲成熟少妇 | 麻豆影视在线观看 | 久久婷婷精品视频 | 久久字幕精品一区 | 国产私拍在线 | 高清中文字幕 | 91丨九色丨首页 | 日韩精品免费一区 | 黄色的视频网站 | 久久久精品影视 | 欧美日韩一区二区在线观看 | 国产99免费视频 | 97超碰中文字幕 | 天天干天天爽 | 日本公妇在线观看 | 91香蕉视频在线下载 | 日韩中文字幕免费看 | 91中文字幕在线视频 | 黄色在线观看网站 | 99产精品成人啪免费网站 | 中文字幕 影院 | 精品国产一区在线观看 | 日日射天天射 | 91亚洲精品久久久蜜桃网站 | 亚洲欧美乱综合图片区小说区 | 色综合久久99| 久久久久久久久久久久久影院 | 久久久久久久久久久久久9999 | 免费高清在线视频一区· | 亚洲最大av网站 | 九色91av | 99视频在线观看免费 | 国产亚洲精品av | 91在线日本 | 国产精品第二页 | 久青草视频 | 亚洲黄在线观看 | 亚洲成人av在线电影 | 伊人天堂网 | 天天操天天摸天天干 | 91成人免费看片 | av在线8| 99久久婷婷国产 | 欧美日韩中文字幕在线视频 | 国产九色在线播放九色 | 香蕉影视 | 中文字幕三区 | 在线视频91 | 天天干天天操天天射 | 久久艹久久 | 国产欧美在线一区 | 狠狠色狠狠综合久久 | 69精品久久| 亚洲成年人av | 久久国产免费看 | 在线视频一二三 | 亚洲美女视频在线 | 蜜桃视频日韩 | 中文字幕 国产 一区 | 久久久蜜桃一区二区 | 日韩中文字幕国产精品 | 欧美日韩国产在线观看 | 亚洲综合在线发布 | 国产字幕av | 一区久久久| 韩国精品在线观看 | 午夜电影 电影 | 欧美日韩精品二区第二页 | av一级片网站| 久久成人黄色 | 热re99久久精品国产66热 | 国产视频欧美视频 | 999久久久久久久久久久 | 精品国产精品久久一区免费式 | 97在线影院 | 中文字幕电影网 | 最近2019年日本中文免费字幕 | 精品在线观看一区二区 | 久久精品免费观看 | 91亚洲精品国偷拍自产在线观看 | 国产精品 日本 | 91精品办公室少妇高潮对白 | 久久不射电影网 | 激情婷婷av | 91视频午夜 | 精品久久久久久久久中文字幕 | 精品成人国产 | 96在线 | 人人澡av| 欧美日韩另类在线 | 日日日爽爽爽 | 亚洲综合视频在线 | 亚洲精品9 | 亚洲在线精品视频 | 欧美日韩久久久 | 精品视频一区在线观看 | 国产亚洲永久域名 | 日韩精品久久久久久久电影99爱 | 丁香影院在线 | 日韩欧美国产精品 | 日韩二级毛片 | 色婷婷综合久久久久中文字幕1 | 国产黄色精品视频 | 午夜免费在线观看 | 国产精品18久久久久白浆 | 中文字幕一区二区三区在线播放 | 97超碰国产精品女人人人爽 | 欧美黄色成人 | 日韩在线免费看 | 丁香六月在线观看 | 激情av五月婷婷 | 久久欧美精品 | 欧美片网站yy | 香蕉影视app | 一区二区精品久久 | 婷婷深爱五月 | 免费久久视频 | 在线成人高清电影 | 日韩爱爱网站 | 久草在线这里只有精品 | 国产视频色 | 四虎影视精品成人 | 91污在线 | 日韩在线观看你懂的 | 日产乱码一二三区别在线 | 91视频在线自拍 | 91亚洲精品国产 | av资源网在线播放 | 91精品视屏 | 六月丁香伊人 | 国产99久久久久久免费看 | 国产一区欧美一区 | 97久久久免费福利网址 | 免费在线播放av电影 | 欧美一级视频在线观看 | 久久爽久久爽久久av东京爽 | 中文字幕在线观看日本 | 亚洲国产欧美在线人成大黄瓜 | 国产麻豆精品传媒av国产下载 | 国产又粗又猛又黄又爽视频 | 中文字幕电影网 | 久久精品理论 | 91色蜜桃| 婷婷色 亚洲 | 男女全黄一级一级高潮免费看 | 高清国产在线一区 | 久艹视频在线观看 | 久久久久久久久久电影 | 西西www4444大胆在线 | 97夜夜澡人人双人人人喊 | 国产成人一区三区 | 97高清视频 | 伊人影院在线观看 | 欧美a√在线 | 国产成人在线观看 | 久久精品网站免费观看 | 91成人精品观看 | 国产乱对白刺激视频在线观看女王 | 国产在线免费观看 | 综合激情婷婷 | av大全在线观看 | 国产色黄网站 | 在线小视频你懂得 | 日韩r级电影在线观看 | 狠狠躁夜夜躁人人爽超碰97香蕉 | 激情久久伊人 | 超碰人人91 | 成人av在线资源 | 国产成人精品一区二区三区 | 亚洲视屏一区 | 婷婷精品进入 | 四虎精品成人免费网站 | 成人天堂网 | 久久精视频 | 国产精品理论片在线播放 | 国产超碰在线观看 | 日本不卡一区二区三区在线观看 | 久草精品视频在线看网站免费 | 美女久久精品 | 欧美日韩在线电影 | 婷婷色六月天 | 一本一道久久a久久综合蜜桃 | 午夜免费电影院 | 免费黄色激情视频 | 国产精品美乳一区二区免费 | 在线看黄色的网站 | 国产日韩精品视频 | 国产专区视频在线 | av中文字幕在线免费观看 | 婷婷丁香在线 | 色婷婷www | 免费观看国产成人 | 狠狠色丁香婷婷综合欧美 | 亚洲午夜久久久久久久久电影网 | 国产精品a级 | 在线观看成人av | 国产精品原创在线 | 午夜狠狠干 | 成人av中文字幕在线观看 | 婷婷综合视频 | 国产精品 视频 | 亚洲精品www久久久 www国产精品com | 六月婷色| 成人av一区二区兰花在线播放 | 精品国偷自产在线 | 999热线在线观看 | 色视频网站在线观看一=区 a视频免费在线观看 | 精品久久一级片 | 国产专区在线看 | 国产一区精品在线观看 | av官网在线| 国产中文字幕免费 | 日本高清中文字幕有码在线 | 六月色婷婷| 九九视频免费 | 999热线在线观看 | 色视频成人在线观看免 | 久久综合加勒比 | 久久综合狠狠综合久久狠狠色综合 | 国产亚洲精品久久久久久电影 | 免费a一级 | 免费亚洲片 | 高清一区二区 | 免费黄色网址网站 | 日本中文字幕一二区观 | 中文字幕乱码视频 | av亚洲产国偷v产偷v自拍小说 | 国产精品久久麻豆 | a一片一级| 亚洲女同videos | 91丨九色丨国产在线 | 久九视频 | 五月激情久久 | 亚洲国产日韩一区 | 精品久久久久一区二区国产 | 午夜精品福利一区二区 | 久精品一区 | 一区 二区电影免费在线观看 | 婷婷国产v亚洲v欧美久久 | 国产玖玖在线 | 在线观看网站av | 成年人黄色大全 | 美女福利视频在线 | 亚洲精品在线一区二区三区 | 黄色三级在线看 | 亚洲精品免费观看 | 又黄又刺激视频 | 天天操狠狠操网站 | 国产精品久久久久久久99 | 国产精品九九九 | 亚洲人久久 | 麻豆你懂的 | 精品麻豆入口免费 | 日韩欧美电影 | 欧美精品在线视频观看 | 国产在线精品二区 | 亚洲撸撸 | 欧美 亚洲 另类 激情 另类 | 久久国产精品电影 | 天天射天天射天天 | 日韩免费看片 | 国产精品69av | 在线午夜av | 精品一区中文字幕 | 啪啪午夜免费 | 91香蕉视频720p | 午夜精品一区二区三区免费视频 | 国产高清免费视频 | 日韩欧美亚洲 | 日韩久久精品一区二区 | 久草久草在线观看 | 天天综合网 天天 | 免费看的黄色片 | 国产夫妻av在线 | 成人天堂网 | 亚州人成在线播放 | 99热精品在线 | 日本aaa在线观看 | 黄色三级免费网址 | 五月天综合婷婷 | 久久午夜电影网 | 日韩爱爱网站 | 日韩,精品电影 | 一级黄色免费网站 | 婷婷综合导航 | 久久激情视频 久久 | 久一久久 | 91成人区| 西西大胆啪啪 | 久久人视频 | 日韩在线视频播放 | 少妇超碰在线 | 日日干,天天干 | 国产亚洲精品bv在线观看 | 久久久久久久久久久久久国产精品 | 91亚洲精品国产 | 在线视频日韩精品 | 欧美日韩国产综合一区二区 | av高清一区| 午夜99| 免费在线观看av电影 | 婷婷丁香激情综合 | 欧美日韩久久不卡 | 日韩在线色视频 | 九九欧美视频 | 欧美激情精品久久久久久 | 亚洲高清视频一区二区三区 | 久草在在线 | 国产一区二区三区在线免费观看 | 亚洲一级理论片 | 一本一本久久a久久精品综合 | 亚洲色视频 | 国产日韩视频在线 | 99久久精品国产一区 | 亚洲精品乱码久久久久久蜜桃动漫 | 免费情趣视频 | 日韩天天操 | 色先锋av资源中文字幕 | 网站在线观看日韩 | 免费午夜av | 91桃色在线播放 | 在线观看91网站 | 青青草华人在线视频 | av线上看 | 999亚洲国产996395 | 操夜夜操 | 成人免费视频网 | 成人av片免费看 | 色婷婷在线播放 | 91九色精品女同系列 | 粉嫩av一区二区三区入口 | 免费中文字幕视频 | 国产生活一级片 | 欧美成年黄网站色视频 | 免费在线观看黄色网 | 亚洲精区二区三区四区麻豆 | 国产高清福利在线 | 日韩草比| 欧洲不卡av | 久久国产精品久久久 | aaa毛片视频 | 人人澡av | 久久婷婷精品视频 | 国产精品99精品 | 久久在视频| 青青草国产精品 | 中文字幕国产精品 | 91av99| 天天爱天天舔 | 国产视频1区2区3区 久久夜视频 | 色a网 | av一本久道久久波多野结衣 | 在线免费三级 | 国内精品久久久久影院一蜜桃 | 久久久午夜影院 | 日韩在线播放欧美字幕 | 草草草影院| 一区二区高清在线 | 免费亚洲婷婷 | 夜夜骑首页 | 久久成年人网站 | 青青河边草观看完整版高清 | 日本黄色a级大片 | bayu135国产精品视频 | 久草网免费 | 欧美日韩性生活 | 伊人色综合久久天天网 | 国产精品门事件 | 久久99精品久久久久久久久久久久 | 欧美另类xxxx | 日韩在线观看中文字幕 | 国产99精品 | 免费看一及片 | 美女国内精品自产拍在线播放 | 夜夜嗨av色一区二区不卡 | 久久国内精品视频 | 国产专区视频在线观看 | 久久黄色小说视频 | 久久久国产一区二区 | 日韩成人精品一区二区三区 | 色视频网站在线 | 精品国产免费av | 中文字幕精品一区久久久久 | 亚洲精品小视频在线观看 | 日韩视频欧美视频 | 日韩欧美成人网 | 91成人在线网站 | 蜜臀精品久久久久久蜜臀 | 久久国产一区二区 | 国产成人精品久久二区二区 | 色综合久久久久久久久五月 | 国产精品成人av在线 | 伊人久久电影网 | 99看视频在线观看 | 国产免费黄色 | 欧美日韩亚洲在线观看 | 久久久久国产一区二区三区 | 又黄又爽的免费高潮视频 | 国产精品麻| 精品乱码一区二区三四区 | 久久精品视频免费观看 | 久久精品男人的天堂 | 欧美日韩一级久久久久久免费看 | 婷婷综合亚洲 | 色多多污污在线观看 | 一区二区av | 国产大陆亚洲精品国产 | 在线不卡a| 丝袜美腿在线视频 | 2020天天干夜夜爽 | 久久高清毛片 | 欧美另类交人妖 | 午夜免费福利视频 | 天天干天天操天天 | 中文字幕国产 | 国产一区二区在线免费观看 | 日韩欧美精品一区 | 最近中文字幕国语免费高清6 | 色五月色开心色婷婷色丁香 | 91网站免费观看 | 中文字幕色网站 | 国产精品18久久久久久首页狼 | 欧美激情视频一二三区 | 免费观看v片在线观看 | 欧美一级日韩三级 | 亚洲国产精品va在线看 | 日韩免费av网址 | 草久热| 视频一区二区视频 | 亚洲国产剧情av | 婷婷丁香色综合狠狠色 | 五月天九九 | 91亚洲国产成人久久精品网站 | 97精品超碰一区二区三区 | 欧美视频一区二 | 三级免费黄 | 亚洲国产精品电影在线观看 | 亚洲好视频 | 国产永久网站 | 亚洲综合色视频在线观看 | 国产精品久久久久久久久久久免费看 | 99久久成人 | 中文字幕免费播放 | a色视频 | 永久免费精品视频网站 | 99麻豆久久久国产精品免费 | 福利视频网址 | 亚洲 欧美 成人 | 亚洲黄色成人网 | 精品国产_亚洲人成在线 | av三级av | 欧美在线视频一区二区三区 | 免费一级特黄录像 | 天天拍天天爽 | 在线观看亚洲专区 | a天堂最新版中文在线地址 久久99久久精品国产 | 毛片久久久 | 国产精品美女视频 | 亚洲精品乱码久久久久久蜜桃欧美 | 日韩成人免费电影 | 97在线观看视频国产 | 成人av资源站 | 麻豆久久精品 | 激情在线网站 | 高清不卡一区二区在线 | 欧美日韩视频在线观看免费 | 最新国产在线观看 | 亚洲桃花综合 | av网址在线播放 | 91一区二区三区久久久久国产乱 | 超级碰视频 | 色综合天 | 国产在线 一区二区三区 | 免费看三片 | 人人玩人人弄 | 日本aa在线 | 免费在线观看av | 超碰97中文 | 欧美激情精品 | 日韩欧美电影网 | 亚洲爱爱视频 | 亚洲天堂网在线观看视频 | 亚洲老妇xxxxxx | 免费精品人在线二线三线 | 日韩美女久久 | 国产精品一区二区久久精品爱微奶 | 四虎在线免费观看视频 | 91最新地址永久入口 | av高清影院 | 国产99一区视频免费 | 欧美在线视频一区二区 | 午夜精品久久久久久久99热影院 | 日韩大片在线免费观看 | 国内精品久久久久久久久久久久 | 国产成人一区二区三区 | av观看久久久 | 亚洲精品久久久久久久蜜桃 | 一级黄色大片 | 最近的中文字幕大全免费版 | 日韩欧美在线综合网 | 国产亚洲精品美女 | 午夜av在线 | 黄色高清视频在线观看 | 天天爽人人爽夜夜爽 | 五月婷婷激情综合 | 一本一道久久a久久综合蜜桃 | 免费看三片 | 91亚洲精品久久久蜜桃借种 | 国产精品大片免费观看 | 国产精品夜夜夜一区二区三区尤 | 久久久久国产一区二区 | 久久a v视频 | 国产精品99久久久精品 | 久久久久五月天 | 九九99| 色资源网免费观看视频 | 欧美日韩国产免费视频 | 三级黄色网址 | 在线韩国电影免费观影完整版 | 精品视频免费在线 | 免费视频一级片 | 国偷自产视频一区二区久 | 国产在线观看免费 | 日本深夜福利视频 | 日韩欧美一区二区在线 | 色诱亚洲精品久久久久久 | 国产亚洲精品久久久久久移动网络 | 亚洲韩国一区二区三区 | 国产黄色特级片 | 狠狠操天天干 | 一色av| 亚洲jizzjizz日本少妇 | 五月天亚洲精品 | 国产高清免费在线播放 | 特级a老妇做爰全过程 | 久久免费99 | 特级毛片在线观看 | 亚洲精品日韩一区二区电影 | 精品久久久久久亚洲综合网站 | 色视频网址 | 亚洲精品国精品久久99热一 | 国产美女视频黄a视频免费 久久综合九色欧美综合狠狠 | 四虎在线观看视频 | 色干综合 | av中文字幕在线播放 | 天天干天天色2020 | 色婷婷在线视频 | 久久精品久久精品久久 | 免费在线观看污网站 | 西西444www大胆高清图片 | www黄色com | 蜜臀av麻豆 | 国产精品久久久久9999 | 精品在线免费观看 | www.伊人网 | 手机看片久久 | v片在线播放 | 亚洲欧洲一区二区在线观看 | 操综合 | 日日夜夜狠狠 | 日本大尺码专区mv | 亚洲精品视频在线观看网站 | 91精品久久香蕉国产线看观看 | 亚洲婷婷网 | 91看片淫黄大片一级在线观看 | 国产伦精品一区二区三区高清 | av在线免费网站 | 97国产大学生情侣白嫩酒店 | 亚洲永久精品在线观看 | 日韩精品中文字幕一区二区 | 男女全黄一级一级高潮免费看 | 国产精品视频地址 | 97超视频| 国产精品久久久久一区二区三区 | 日韩理论影院 | 国产精品久久久久久久久久久久午夜 | 欧美日韩视频在线观看免费 | 日韩欧美视频免费在线观看 | 最新国产在线 | 一区久久久 | 91色视频| 久久试看 | 久久综合干 | 日日夜夜天天操 | 丁香花在线视频观看免费 | 亚洲精品乱码久久久久久久久久 | 久久免费影院 | 成年人在线看视频 | 波多野结衣一区二区三区中文字幕 | 在线免费色 | 91精品一区二区在线观看 | 久久久久久欧美二区电影网 | 国产网站在线免费观看 | 激情自拍av | 国产日韩精品久久 | 亚洲 成人 一区 | 免费视频一区二区 | 在线看中文字幕 | 亚洲精品美女久久久久 | 操一草 | 欧美日韩激情视频8区 | 久久国产精品99久久久久久老狼 | 国产精品免费久久久久久久久久中文 | 精品视频在线视频 | 亚洲精品黄网站 | 亚洲第一久久久 | 最近2019中文免费高清视频观看www99 | 91视频啊啊啊 | 韩国在线一区二区 | 国产精品3 | 国产精品美女免费 | 九色视频网站 | 美女免费黄网站 | 日韩簧片在线观看 | 午夜久久视频 | 久久99精品波多结衣一区 | 久久精品视频4 | 国产精品久久久久影院日本 | 正在播放国产一区二区 | 中文字幕久久精品亚洲乱码 | 久久草网站 | 国内视频在线观看 | 激情视频免费在线 | www.av在线.com| 中文字幕av全部资源www中文字幕在线观看 | 91麻豆文化传媒在线观看 | 涩涩在线 | www91在线| 特级黄色一级 | 久久爱www.| 在线观看韩日电影免费 | 视频一区二区三区视频 | 韩国精品一区二区三区六区色诱 | 欧洲激情综合 | 久久av网址 | 国内精品久久久久久久久久清纯 | 日韩中文字幕视频在线 | 国产精品久久久久久久久久久免费 | 日日爽日日操 | 91chinese在线| 99热精品国产 | 欧美成a人片在线观看久 | 六月色婷婷 | 午夜国产福利在线 | 午夜.dj高清免费观看视频 | 欧美大片第1页 | 色资源网在线观看 | 五月综合激情 | 欧美大码xxxx | 亚洲精品乱码久久久久久按摩 | 在线观看日本韩国电影 | 五月天综合网站 | 少妇bbbb搡bbbb搡bbbb | 久久综合婷婷 | 97超碰色偷偷 | 精品在线观看一区二区三区 | 日本黄色a级大片 | 在线免费视频a | 91亚瑟视频| 久久成人一区 | 中文字幕av一区二区三区四区 | 亚洲精品玖玖玖av在线看 | 国产精品白浆视频 | 天天干亚洲 | 国产 日韩 欧美 在线 | 国产精品麻 | 成人丝袜 | 久久香蕉电影网 | 在线国产黄色 | 精品在线观看一区二区三区 | 欧美精品v国产精品 | 美女福利视频一区二区 | 日日摸日日爽 | 蜜桃麻豆www久久囤产精品 | 久久电影国产免费久久电影 | 婷婷亚洲综合五月天小说 | 91精选在线 | 又长又大又黑又粗欧美 | 久久优 | 久久久久久久毛片 | 色就是色综合 | 99精品久久久久久久久久综合 | 欧美 日韩精品 | 91视频电影 | 久久精品一区二区三区国产主播 | 91超碰免费在线 | 一区二区三区在线看 | 色狠狠久久av五月综合 | 免费中文字幕 | 亚洲亚洲精品在线观看 | 欧美人牲| 美女久久精品 | 国产一区二区三区四区大秀 | 国产精品美女久久久久久久久久久 | 精品亚洲午夜久久久久91 | 在线观看韩日电影免费 | 黄色av网站在线观看免费 | 国产女人免费看a级丨片 | 九九免费视频 | 色综合色综合久久综合频道88 | 久久午夜网 | 亚洲欧洲国产精品 | 丁香网五月天 | 成人91在线观看 | 国产婷婷色 | 欧美久久久久久久久久 | 亚洲国产mv | 久久国产精品99久久久久久老狼 | 特级黄色一级 | 九色视频自拍 | 婷婷色在线视频 | 国产精品久久人 | 国产精品成人免费一区久久羞羞 | 亚洲精品 在线视频 | 亚洲精品三级 | 91视频国产高清 | 999国内精品永久免费视频 | 中文字幕在线看视频国产 | 欧美日韩中文视频 | 黄视频色网站 | 午夜视频在线观看一区二区三区 | 国产一级特黄毛片在线毛片 | 亚洲激情五月 | 日韩一区二区三区免费视频 | 欧美日韩午夜爽爽 | 一级电影免费在线观看 | 91精品啪在线观看国产 | 在线看小早川怜子av | 日韩av电影中文字幕在线观看 | 曰本三级在线 | 黄网站免费大全入口 | 天天操天天爱天天爽 | 极品国产91在线网站 | 99久久久久久国产精品 | 久草视频网 | 久久艹欧美 | 蜜臀久久99精品久久久无需会员 | 国产v在线播放 | 亚洲精品国产精品国 | 手机在线欧美 | 国产高清免费视频 | 2019中文字幕网站 | 免费视频三区 | 亚洲成a人片在线观看网站口工 | 国产经典 欧美精品 | 91在线视频观看免费 | 亚洲三级黄色 | 午夜精品久久久久久久99水蜜桃 | 曰本三级在线 | 婷婷av电影 | 手机av在线免费观看 | 日韩在线观看 | 亚洲日韩欧美一区二区在线 | 欧美一级黄大片 | 欧美精品少妇xxxxx喷水 | 色综合久久88色综合天天免费 | 欧美午夜精品久久久久久浪潮 | 又黄又爽又刺激的视频 | 国产精品久久视频 | 日本久久不卡视频 | 婷婷激情小说网 | 亚洲婷婷免费 | 在线观看 亚洲 | 国产精品初高中精品久久 | 日韩av一区二区三区 | 射射色| 亚洲视频 一区 | 国产一区欧美在线 | 亚洲日b视频 | 久久国产亚洲视频 | 91大神在线看 | 日韩精品一区二区不卡 | 久久五月婷婷丁香社区 | 国产日产精品一区二区三区四区的观看方式 | 成人亚洲精品国产www | 午夜999 | 玖玖视频国产 | 日本三级久久久 | 亚洲国产影院 | 久久精品视频4 | 欧美在线视频精品 | 欧美一二三区在线观看 | 中文字幕在线视频一区二区三区 | 国精产品永久999 | 午夜精品电影一区二区在线 | 国产精品美女久久久免费 | 97爱| 香蕉视频在线视频 | 91精品免费在线观看 | 久久精品99北条麻妃 | www欧美色 | 高清视频一区二区三区 | 久久精品国产久精国产 | 色偷偷88欧美精品久久久 | 精品高清美女精品国产区 | 在线看片视频 | 天天干人人干 | 国产一级精品绿帽视频 | 精品一区精品二区高清 | 国产专区视频 | 欧美,日韩| 三级动态视频在线观看 | 日韩在线短视频 | 久久国产精品99久久久久久丝袜 | 超碰在线网 | 99久久9| 一本—道久久a久久精品蜜桃 | 国产在线免费观看 | 国内精品久久天天躁人人爽 | 黄色成人在线 | 国产在线第三页 | 国产精品久久久久国产a级 激情综合中文娱乐网 | 国产免费观看久久黄 | 国产视频高清 | 亚洲一区二区三区四区在线视频 | 国产精品久久一区二区三区, | jizz999| 99热精品国产一区二区在线观看 | 亚洲专区欧美专区 | 亚洲精品美女在线 | 涩五月婷婷 | 亚洲精品免费在线观看视频 | 丁香六月国产 | 91人人爽久久涩噜噜噜 | 天天拍天天草 | 日韩精品一区二区不卡 | 九色视频自拍 | 在线观看视频免费播放 | 91成人精品国产刺激国语对白 | 亚洲精品小区久久久久久 | 99久久婷婷国产一区二区三区 | 特级免费毛片 | 久久国产热视频 | 国产黄在线播放 | 丁香视频五月 | a在线观看免费视频 | 午夜 免费 | 91成人免费在线视频 | 中文字幕日韩有码 | 国产精品黄色 | 婷婷丁香色综合狠狠色 | 97高清视频 | 97在线视频免费看 | 亚洲美女精品区人人人人 | 成人精品国产免费网站 | 久久福利国产 | 91亚洲永久精品 | 欧美成人中文字幕 | 开心激情综合网 | 婷婷亚洲最大 | 色视频在线 | 成人在线黄色电影 | 日韩大片免费在线观看 | 中文av在线播放 | 久久久久高清 | 日日爱夜夜爱 | 久久国产剧场电影 | 久久伊人国产精品 | 国内99视频 | 精品一区二区电影 | 操久在线 | 精品国产视频在线观看 | 黄色不卡av | 国产一级电影 | 91成熟丰满女人少妇 | 一区二区观看 | 国产精品毛片久久 | 日本系列中文字幕 | 日韩高清三区 | 四虎影视久久久 | 久久香蕉国产 | 99久久精品久久亚洲精品 | 激情五月在线视频 | av网站有哪些 | 黄色免费电影网站 | 中文永久免费观看 | 亚洲人久久 | 日韩av片免费在线观看 | 亚洲免费视频观看 | 成人久久亚洲 | 精品女同一区二区三区在线观看 | 青青草在久久免费久久免费 | 国产黄色片网站 | 91国内在线视频 | 精品高清视频 | 国产网红在线 | 欧美韩国日本在线 | 97视频免费观看 | 胖bbbb搡bbbb擦bbbb | 精品国产一区二区三区久久影院 | 免费看的黄色小视频 | 亚洲精品欧美视频 | 看片的网址 | 午夜久久久久 | www日韩在线 | 在线播放你懂 | 91视频麻豆 | 久久国内视频 | www免费网站在线观看 | 亚洲不卡在线 | 午夜在线免费视频 |