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

歡迎訪問 生活随笔!

生活随笔

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

javascript

Spring学习总结一

發布時間:2025/3/15 javascript 40 豆豆
生活随笔 收集整理的這篇文章主要介紹了 Spring学习总结一 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

Spring框架IoC與DI思想及應用

  • Spring學習總結一
    • 1、Spring是什么
    • 2、Spring的優點
      • 2.1、關鍵概念
      • 2.2、Spring的優點
      • 3、Spring的架構圖
      • 3.1、核心容器:包括 Core 、 Beans 、 Context 、 EL 模塊
      • 3.2、AOP 、 Aspects 模塊:
    • 4、Spring的應用場景
      • 4.1、典型 Web 應用程序應用場景
      • 4.2、遠程訪問應用場景
      • 4.3、EJB 應用場景
    • 5、Spring的入門案例
      • 5.1、下載并導入Spring核心的jar
      • 5.2、創建一個對象
      • 5.3、配置applicationContext.xml
      • 5.4、測試
    • 6、控制反轉(IoC)
      • 6.1、什么是控制反轉
      • 6.2、控制反轉容器
      • 6.3、第一個案例的哪個部分用到控制反轉?
    • 7、依賴注入(DI)
      • 7.1、什么是依賴注入?
      • 7.2、案例中哪里用到了依賴注入?
      • 7.3、注入的屬性如果是一個bean,應該怎么編寫xml?
    • 8、更多依賴注入的方法
      • 8.1、p命名空間
      • 8.2、屬性注入
      • 8.3、構造函數注入
        • 8.3.1、修改Address類
        • 8.3.2、修改User類
        • 8.3.3、修改struts.xml
        • 8.3.4、測試
      • 8.4、集合屬性注入
        • 8.4.1、編寫CollectionTest類
        • 8.4.2、編寫struts.xml
        • 8.4.3、測試
    • 9、bean的作用域
    • 10、注解開發
      • 10.1、在applicationContext.xml中開啟注解掃描器
      • 10.2、在交給spring控制的bean上面寫注解
        • 10.2.1、Address類
        • 10.2.2、User類
        • 10.2.3、UserDao類
        • 10.2.4、UserService類
        • 10.2.5、UserController類
        • 10.2.6、測試
    • 參考

Spring學習總結一

以下幾點:

  • Spring是什么
  • Spring的優點
  • Spring的架構圖
  • Spring的應用場景
  • Spring的入門案例
  • 控制反轉(Ioc)
  • 依賴注入(DI)
  • 更多依賴注入的方法
  • bean的作用域
  • 注解開發

  • 1、Spring是什么

    Spring 是一個開源的輕量級 Java SE( Java 標準版本)/Java EE( Java 企業版本)開發應用框架,其目的是用于簡化企業級應用程序開發。在傳統應用程序開發中,一個完整的應用是由一組相互協作的對象組成的。所以開發一個應用除了要開發業務邏輯之外,最多的是關注使這些對象協作來完成所需功能的同時,實現低耦合、高內聚。所以,業務邏輯開發是不可避免的。如果有個框架可以幫我們來創建對象及管理這些對象之間的依賴關系,能通過配置方式來創建對象,管理對象之間依賴關系,我們不需要通過工廠和生成器來創建及管理對象之間的依賴關系,這樣我們必然會減少許多工作量,加快開發。Spring 框架問世之初主要就是來完成這個功能。

    Spring 框架除了幫我們管理對象及其依賴關系,還提供像通用日志記錄、性能統計、安全控制、異常處理等面向切面的能力,可以幫我們管理最頭疼的數據庫事務,同時,它本身提供了一套簡單的 JDBC 訪問實現,能與第三方數據庫訪問框架集成(如 Hibernate、JPA ),與各種 Java EE 技術整合(如 Java Mail、任務調度等等),提供一套自己的 web 層框架 Spring MVC 、而且還能非常簡單的與第三方 web 框架集成。從這里我們可以認為 Spring 是一個超級粘合平臺,除了自己提供功能外,還提供粘合其他技術和框架的能力,從而使我們可以更自由的選擇到底使用什么技術進行開發。而且不管是 JAVA SE( C/S 架構)應用程序還是 JAVA EE( B/S 架構)應用程序都可以使用這個平臺進行開發。


    2、Spring的優點

    Spring 能幫助我們簡化應用程序開發,幫助我們創建和組裝對象,為我們管理事務,簡單的 MVC 框架,可以把 Spring 看作是一個超級粘合平臺,能把很多技術整合在一起,形成一個整體,使系統結構更優良、性能更出眾,從而加速我們程序開發,有如上優點,我們沒有理由不考慮使用它。

    2.1、關鍵概念

  • 應用程序:能完成我們所需要功能的成品,比如購物網站、OA 系統。
  • 框架:能完成一定功能的半成品,比如我們可以使用框架進行購物網站開發;框架做一部分功能,我們自己做一部分功能,輔助高效工作。而且框架規定了你在開發應用程序時的整體架構,提供了一些基礎功能,還規定了類和對象的如何創建、如何協作等,從而簡化我們的代碼編寫,讓我們專注于業務邏輯開發。
  • 非侵入式設計:從框架角度可以這樣理解,無需繼承框架提供的類,這種設計就可以看作是非侵入式設計,如果繼承了這些框架類,就是侵入設計,如果以后想更換框架,之前寫過的代碼幾乎無法重用,如果非侵入式設計則之前寫過的代碼仍然可以繼續使用。
  • 輕量級與重量級:輕量級是相對于重量級而言的,輕量級一般就是非入侵性的、所依賴的東西非常少、資源占用非常少、部署簡單等等,其實就是比較容易使用,而重量級正好相反。
  • POJO : POJO ( Plain Ordinary Java Object )簡單的 Java 對象。它可以包含業務邏輯或持久化邏輯,但不擔當任何特殊角色且不繼承或不實現任何其它 Java 框架的類或接口。
  • 容器:在日常生活中容器就是一種盛放東西的器具,從程序設計角度看就是裝對象的的對象,因為存在放入、拿出等操作,所以容器還要管理對象的生命周期。
  • 控制反轉:即 Inversion of Control ,縮寫為 IoC ,控制反轉還有一個名字叫做依賴注入( Dependency Injection ),就是由容器控制程序之間的關系,而非傳統實現中,由程序代碼直接操控。
  • Bean :一般指容器管理對象,在 Spring 中指 Spring IoC 容器管理對象。
  • 2.2、Spring的優點

  • 非常輕量級的容器:以集中的、自動化的方式進行應用程序對象創建和裝配,除此之外還會負責管理對象生命周期,能組合成復雜的應用程序。Spring 容器是非侵入式的(不需要依賴任何 Spring 特定類),而且完全采用 POJOs 進行開發,使應用程序更容易測試、更容易管理。而且核心 JAR 包非常小,Spring3.0.5 不到 1 M ,而且不需要依賴任何應用服務器,可以部署在任何環境( Java SE 或 Java EE )。
  • AOP: AOP 是 Aspect Oriented Programming 的縮寫,意思是面向切面編程。從另一個角度來考慮程序結構以完善面向對象編程( OOP ),即可以通過在編譯期間、裝載期間或運行期間實現在不修改源代碼的情況下給程序動態添加功能的一種技術。通俗點說就是把可重用的功能提取出來,然后將這些通用功能在合適的時候織入到應用程序中;比如安全,日志記錄,這些都是通用的功能,我們可以把它們提取出來,然后在程序執行的合適地方植入這些代碼并執行它們,從而完成需要的功能并復用了這些功能。
  • 簡單的數據庫事務管理:在使用數據庫的應用程序當中,自己管理數據庫事務是一項很讓人頭疼的事,而且很容易出現錯誤,Spring 支持可插入的事務管理支持,而且無需 JavaEE 環境支持,通過 Spring 管理事務可以把我們從事務管理中解放出來來專注業務邏輯。
  • JDBC 抽象及 ORM (對象關系映射)框架支持: Spring 使 JDBC 更加容易使用;提供 DAO(數據訪問對象)支持,非常方便集成第三方 ORM 框架,比如 Hibernate 等;并且完全支持 Spring 事務和使用 Spring 提供的一致的異常體系。
  • 靈活的 Web 層支持: Spring 本身提供一套非常強大的 MVC 框架,而且可以非常容易的與第三方 MVC 框架集成,比如 Struts 等。
  • 簡化各種技術集成:提供對 Java Mail 、任務調度、 JMX 、 JMS 、 JNDI 、 EJB 、動態語言、遠程訪問、 Web Service 等的集成。

  • 3、Spring的架構圖


    簡單來看,主要部分就是Core Container這個部分!

    3.1、核心容器:包括 Core 、 Beans 、 Context 、 EL 模塊

  • Core 模塊:封裝了框架依賴的最底層部分,包括資源訪問、類型轉換及一些常用工具類。
  • Beans 模塊:提供了框架的基礎部分,包括控制反轉( IOC )和依賴注入( DI )。其中 BeanFactory 是容器核心,本質是“工廠設計模式”的實現,而且無需編程實現“單例設計模式”,單例完全由容器控制,而且提倡面向接口編程,而非面向實現編程;所有應用程序對象及對象間關系由框架管理,從而真正從程序邏輯中把維護對象之間的依賴關系提取出來,所有這些依賴關系都由 BeanFactory 來維護。
  • Context 模塊:以 Core 和 Beans 為基礎,集成 Beans 模塊功能并添加資源綁定、數據驗證、國際化、 Java EE 支持、容器生命周期、事件傳播等;核心接口是 ApplicationContext 。
  • EL 模塊:提供強大的表達式語言支持,支持訪問和修改屬性值,方法調用,支持訪問及修改數組、容器和索引器,命名變量,支持算數和邏輯運算,支持從 Spring 容器獲取 Bean, 它也支持列表投影、選擇和一般的列表聚合等。
  • 3.2、AOP 、 Aspects 模塊:

  • AOP 模塊: Spring AOP 模塊提供了符合 AOP Alliance 規范的面向切面的編程( aspect-oriented programming )實現,提供比如日志記錄、權限控制、性能統計等通用功能和業務邏輯分離的技術,并且能動態的把這些功能添加到需要的代碼中;這樣各專其職,降低業務邏輯和通用功能的耦合。
  • Aspects 模塊:提供了對 AspectJ 的集成,AspectJ 提供了比 Spring ASP 更強大的功能。
  • 數據訪問/集成模塊:該模塊包括了 JDBC 、 ORM 、 OXM 、 JMS 和事務管理。
  • 事務模塊:該模塊用于 Spring 管理事務,只要是 Spring 管理對象都能得到 Spring 管理事務的好處,無需在代碼中進行事務控制了,而且支持編程和聲明性的事務管理。
  • JDBC 模塊:提供了一個 JBDC 的樣例模板,使用這些模板能消除傳統冗長的 JDBC 編碼還有必須的事務控制,而且能享受到 Spring 管理事務的好處。
  • ORM 模塊:提供與流行的“對象-關系”映射框架的無縫集成,包括 Hibernate 、JPA 、 MyBatis 等。而且可以使用 Spring 事務管理,無需額外控制事務。
  • OXM 模塊:提供了一個對 Object / XML 映射實現,將 java 對象映射成 XML 數據,或者將 XML 數據映射成 java 對象, Object / XML 映射實現包括 JAXB 、 Castor 、 XMLBeans 和 XStream 。
  • JMS 模塊:用于 JMS ( Java Messaging Service ),提供一套 “消息生產者、消息消費者”模板用于更加簡單的使用 JMS , JMS 用于用于在兩個應用程序之間,或分布式系統中發送消息,進行異步通信。
  • Web / Remoting 模塊: Web / Remoting 模塊包含了 Web 、 Web-Servlet 、 Web-Struts 、 Web-Porlet 模塊。
  • Web 模塊:提供了基礎的 web 功能。例如多文件上傳、集成 IoC 容器、遠程過程訪問( RMI 、Hessian 、 Burlap )以及 Web Service 支持,并提供一個 RestTemplate 類來提供方便的 Restful services 訪問。
  • Web-Servlet 模塊:提供了一個 Spring MVC Web 框架實現。Spring MVC 框架提供了基于注解的請求資源注入、更簡單的數據綁定、數據驗證等及一套非常易用的 JSP 標簽,完全無縫與 Spring 其他技術協作。
  • Web-Struts 模塊:提供了與 Struts 無縫集成, Struts1.x 和 Struts2.x 都支持。
  • Test 模塊: Spring 支持 Junit 和 TestNG 測試框架,而且還額外提供了一些基于 Spring 的測試功能,比如在測試 Web 框架時,模擬 Http 請求的功能。

  • 4、Spring的應用場景

    Spring 可以應用到許多場景,從最簡單的標準 Java SE 程序到企業級應用程序都能使用 Spring 來構建。以下介紹幾個比較流行的應用場景:

  • 典型 Web 應用程序應用場景。
  • 遠程訪問應用場景。
  • EJB 應用場景。
  • 4.1、典型 Web 應用程序應用場景

    4.2、遠程訪問應用場景

    4.3、EJB 應用場景


    5、Spring的入門案例

    需要做的幾件事情:

  • 下載并導入Spring核心的jar。
  • 創建一個對象。
  • 配置applicationContext.xml。
  • 測試類。
  • 5.1、下載并導入Spring核心的jar

    Spring官方下載地址

    隨便下載一個,建議下載4…以上的,3的版本好像并不支持jdk1.8。

    還需要一個依賴的jar包,Spring依賴的logging下載地址


    5.2、創建一個對象

    package com.csa.domain;public class User {private String username;private Integer age;public String getUsername() {return username;}public void setUsername(String username) {this.username = username;}public Integer getAge() {return age;}public void setAge(Integer age) {this.age = age;}@Overridepublic String toString() {return "User [username=" + username + ", age=" + age + "]";} }

    5.3、配置applicationContext.xml

    注意我是放在src下面:

    <?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/beans http://www.springframework.org/schema/beans/spring-beans.xsd"><bean id="user" class="com.csa.domain.User"><!-- 依賴注入(DI) --><property name="username" value="hello"></property><property name="age" value="18"></property></bean></beans>

    5.4、測試

    package com.csa.app;import org.junit.Test; import org.springframework.context.ApplicationContext; import org.springframework.context.support.ClassPathXmlApplicationContext;import com.csa.domain.User;public class App {@Testpublic void app() {// 1.加載applicationContext.xmlString xmlPath = "applicationContext.xml";ApplicationContext applicationContext = new ClassPathXmlApplicationContext(xmlPath);// 2.獲取user的bean --> 也叫控制反轉(IoC)!User user = (User) applicationContext.getBean("user");System.out.println(user);} }

    結果:


    6、控制反轉(IoC)

    幾個問題:

  • 什么是控制反轉。
  • 控制反轉容器。
  • 第一個案例的哪個部分用到控制反轉?
  • 6.1、什么是控制反轉

    IoC 不是一種技術,只是一種思想,一個重要的面向對象編程的法則,它能指導我們如何設計出松耦合、更優良的程序。傳統應用程序都是由我們在類內部主動創建依賴對象,從而導致類與類之間高耦合,難于測試;有了IoC容器后,把創建和查找依賴對象的控制權交給了容器,由容器進行注入組合對象,所以對象與對象之間是松散耦合,這樣也方便測試,利于功能復用,更重要的是使得程序的整個體系結構變得非常靈活。

    其實 IoC 對編程帶來的最大改變不是從代碼上,而是從思想上,發生了“主從換位”的變化。應用程序原本是老大,要獲取什么資源都是主動出擊,但是在 IoC/DI 思想中,應用程序就變成被動的了,被動的等待 IoC 容器來創建并注入它所需要的資源了。

    IoC 很好的體現了面向對象設計法則之一的好萊塢法則:“別找我們,我們找你”;即由 IoC 容器幫對象找相應的依賴對象并注入,而不是由對象主動去找。

    6.2、控制反轉容器

    IoC 容器就是具有依賴注入(DI在下面會說明到)功能的容器,IoC 容器負責實例化、定位、配置應用程序中的對象及建立這些對象間的依賴。 應用程序無需直接在代碼中 new 相關的對象,應用程序由 IoC 容器進行組裝。在 Spring 中 BeanFactory 是 IoC 容器的實際代表者。

    Spring IoC 容器如何知道哪些是它管理的對象呢?

    這就**需要配置文件,Spring IoC 容器通過讀取配置文件中的配置元數據,通過元數據對應用中的各個對象進行實例化及裝配。**一般使用基于 xml 配置文件進行配置元數據,而且 Spring 與配置文件完全解耦的,可以使用其他任何可能的方式進行配置元數據,比如注解、基于 java 文件的、基于屬性文件的配置都可以。

    Spring Ioc 容器的代表就是 org.springframework.beans 包中的 BeanFactory 接口, BeanFactory 接口提供了 IoC 容器最基本功能;而 org.springframework.context 包下的 ApplicationContext 接口擴展了 BeanFactory ,還提供了與Spring AOP 集成、國際化處理、事件傳播及提供不同層次的 context 實現 (如針對 web 應用的 WebApplicationContext )。簡單說, BeanFactory 提供了 IoC 容器最基本功能,而 ApplicationContext 則增加了更多支持企業級功能支持。 ApplicationContext 完全繼承 BeanFactory ,因而 BeanFactory 所具有的語義也適用于 ApplicationContext。

    6.3、第一個案例的哪個部分用到控制反轉?

    applicationContext.xml中配置了一個User的bean,說明User的管理權被applicationContext.xml給奪走。簡單的說,User的獲取交給Spring容器來處理。也就是說配置application其實就是配置了一個Spring,配置了Spring其實就配置了一個IoC。 IoC主要又是一種思想!真正起到作用的是我們導入的spring的bean這個jar。


    上面2附圖合起來就算是一個控制反轉的例子!


    7、依賴注入(DI)

    解決下面幾個問題:

  • 什么是依賴注入?
  • 案例中哪里用到了依賴注入?
  • 注入的屬性如果是一個對象,應該怎么編寫xml?
  • 7.1、什么是依賴注入?

    DI—Dependency Injection,即“依賴注入”:是組件之間依賴關系由容器在運行期決定,形象的說,即由容器動態的將某個依賴關系注入到組件之中。 依賴注入的目的并非為軟件系統帶來更多功能,而是為了提升組件重用的頻率,并為系統搭建一個靈活、可擴展的平臺。通過依賴注入機制,我們只需要通過簡單的配置,而無需任何代碼就可指定目標需要的資源,完成自身的業務邏輯,而不需要關心具體的資源來自何處,由誰實現。

    理解 DI 的關鍵是:“誰依賴誰,為什么需要依賴,誰注入誰,注入了什么”,那我們來深入分析一下:

  • 誰依賴于誰:當然是某個容器管理對象依賴于 IoC 容器;“被注入對象的對象”依賴于“依賴對象”;
  • 為什么需要依賴:容器管理對象需要 IoC 容器來提供對象需要的外部資源;
  • 誰注入誰:很明顯是 IoC 容器注入某個對象,也就是注入“依賴對象”;
  • 注入了什么:就是注入某個對象所需要的外部資源(包括對象、資源、常量數據)。
  • 7.2、案例中哪里用到了依賴注入?

    7.3、注入的屬性如果是一個bean,應該怎么編寫xml?

    假設User多了Address屬性!

    Address類

    package com.csa.domain;public class Address {private String province;private String city;public String getProvince() {return province;}public void setProvince(String province) {this.province = province;}public String getCity() {return city;}public void setCity(String city) {this.city = city;}@Overridepublic String toString() {return "Address [province=" + province + ", city=" + city + "]";} }

    修改applicationContext.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/beans http://www.springframework.org/schema/beans/spring-beans.xsd"><bean id="user" class="com.csa.domain.User"><!-- 依賴注入(DI) --><property name="username" value="hello"></property><property name="age" value="18"></property><!-- 注意不是value,而是ref哦 --><property name="address" ref="address"></property></bean><bean id="address" class="com.csa.domain.Address"><property name="province" value="AA"></property><property name="city" value="BB"></property></bean></beans>

    測試結果如下:

    package com.csa.app;import org.junit.Test; import org.springframework.context.ApplicationContext; import org.springframework.context.support.ClassPathXmlApplicationContext;import com.csa.domain.User;public class App {@Testpublic void app() {// 1.加載applicationContext.xmlString xmlPath = "applicationContext.xml";ApplicationContext applicationContext = new ClassPathXmlApplicationContext(xmlPath);// 2.獲取user的bean --> 也叫控制反轉(IoC)!User user = (User) applicationContext.getBean("user");System.out.println(user);} }


    8、更多依賴注入的方法

    還有其他幾種常見的依賴注入的方法:

  • p命名空間。
  • 屬性注入。
  • 構造函數注入。
  • 集合屬性的注入。
  • 8.1、p命名空間

    做下面幾個步驟:

  • 引入p命名空間的約束。
  • 使用p命名空間。
  • 例子:

    <?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:p="http://www.springframework.org/schema/p"xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd"><bean id="user" class="com.csa.domain.User"><!-- 依賴注入(DI) --><property name="username" value="hello"></property><property name="age" value="18"></property><!-- 注意不是value,而是ref哦 --><property name="address" ref="address"></property></bean><!-- 注意約束上面加了一個xmlns:p的內容,并且這個時候是以"p:屬性名"在bean中作為屬性名的形式注入的 --><bean id="address" class="com.csa.domain.Address" p:province="CC" p:city="DD"></bean></beans>

    最后測試:

    package com.csa.app;import org.junit.Test; import org.springframework.context.ApplicationContext; import org.springframework.context.support.ClassPathXmlApplicationContext;import com.csa.domain.User;public class App {@Testpublic void app() {// 1.加載applicationContext.xmlString xmlPath = "applicationContext.xml";ApplicationContext applicationContext = new ClassPathXmlApplicationContext(xmlPath);// 2.獲取user的bean --> 也叫控制反轉(IoC)!User user = (User) applicationContext.getBean("user");System.out.println(user);} }

    8.2、屬性注入

    <?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/beans http://www.springframework.org/schema/beans/spring-beans.xsd"><bean id="user" class="com.csa.domain.User"><!-- 依賴注入(DI) --><property name="username" value="hello"></property><property name="age" value="18"></property><!-- set方法注入 --><property name="address"><bean class="com.csa.domain.Address"><property name="province" value="hello"></property><property name="city" value="world"></property></bean></property></bean></beans>

    8.3、構造函數注入

    需要做下面4步:

  • 修改Address類(主要是創建一個構造函數)。
  • 修改User類。
  • 修改struts.xml。
  • 測試。
  • 8.3.1、修改Address類

    package com.csa.domain;public class Address {private String province;private String city;public Address(String province, String city) {super();this.province = province;this.city = city;}public String getProvince() {return province;}public void setProvince(String province) {this.province = province;}public String getCity() {return city;}public void setCity(String city) {this.city = city;}@Overridepublic String toString() {return "Address [province=" + province + ", city=" + city + "]";} }

    8.3.2、修改User類

    package com.csa.domain;public class User {private String username;private Integer age;private Address address;public User(String username, Integer age, Address address) {super();this.username = username;this.age = age;this.address = address;}public String getUsername() {return username;}public void setUsername(String username) {this.username = username;}public Integer getAge() {return age;}public void setAge(Integer age) {this.age = age;}public Address getAddress() {return address;}public void setAddress(Address address) {this.address = address;}@Overridepublic String toString() {return "User [username=" + username + ", age=" + age + ", address=" + address + "]";} }

    8.3.3、修改struts.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/beans http://www.springframework.org/schema/beans/spring-beans.xsd"><bean id="user" class="com.csa.domain.User"><!-- 第一種寫法(我一般都這樣玩):name指向的是屬性名,value是對應的值 --><constructor-arg name="username" value="hello"></constructor-arg><constructor-arg name="age" value="18"></constructor-arg><!-- 這樣注入一個依賴,我是有點不太適應的! --><constructor-arg name="address"><bean class="com.csa.domain.Address"><!-- 第二種寫法(我一般不這樣玩!):index按照全部參數情況下的第幾個參數 --><!-- 按這個例子來說,第一個String是"省份" --><constructor-arg index="0" value="hello"></constructor-arg><!-- 第二個是"城市" --><constructor-arg index="1" value="world"></constructor-arg></bean></constructor-arg></bean> </beans>

    8.3.4、測試

    package com.csa.app;import org.junit.Test; import org.springframework.context.ApplicationContext; import org.springframework.context.support.ClassPathXmlApplicationContext;import com.csa.domain.User;public class App {@Testpublic void app() {// 1.加載applicationContext.xmlString xmlPath = "applicationContext.xml";ApplicationContext applicationContext = new ClassPathXmlApplicationContext(xmlPath);// 2.獲取user的bean --> 也叫控制反轉(IoC)!User user = (User) applicationContext.getBean("user");System.out.println(user);} }

    測試結果:

    8.4、集合屬性注入

    做以下幾個步驟:

  • 編寫一個CollectionTest類。
  • 編寫struts.xml(自己屢屢最后控制臺出現的結果)。
  • 測試結果。
  • 8.4.1、編寫CollectionTest類

    package com.csa.domain;import java.util.Arrays; import java.util.List; import java.util.Map; import java.util.Properties; import java.util.Set;public class CollectionTest {private Object[] arr;private List<Object> list;private Set<Object> set;private Map<String,Object> map;private Properties pros;public Object[] getArr() {return arr;}public void setArr(Object[] arr) {this.arr = arr;}public List<Object> getList() {return list;}public void setList(List<Object> list) {this.list = list;}public Set<Object> getSet() {return set;}public void setSet(Set<Object> set) {this.set = set;}public Map<String, Object> getMap() {return map;}public void setMap(Map<String, Object> map) {this.map = map;}public Properties getPros() {return pros;}public void setPros(Properties pros) {this.pros = pros;}@Overridepublic String toString() {return "CollectionTest [\r\narr=" + Arrays.toString(arr) + ", \r\nlist=" + list + ",\r\nset=" + set + ",\r\nmap=" + map+ ",\r\npros=" + pros + "]";} }

    8.4.2、編寫struts.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/beans http://www.springframework.org/schema/beans/spring-beans.xsd"><bean id="user" class="com.csa.domain.User"><!-- 第一種寫法:name指向的是屬性名,value是對應的值 --><constructor-arg name="username" value="hello"></constructor-arg><constructor-arg name="age" value="18"></constructor-arg><constructor-arg name="address"><bean class="com.csa.domain.Address"><!-- 第二種寫法:index按照全部參數情況下的第幾個參數 --><!-- 按這個例子來說,第一個String是"省份" --><constructor-arg index="0" value="hello"></constructor-arg><!-- 第二個是城市 --><constructor-arg index="1" value="world"></constructor-arg></bean></constructor-arg></bean><bean id="address" class="com.csa.domain.Address"><constructor-arg index="0" value="hello"></constructor-arg><constructor-arg index="1" value="spring"></constructor-arg></bean><bean id="collectionBean" class="com.csa.domain.CollectionTest"><property name="arr"><array><value>1</value><ref bean="user"/><bean class="com.csa.domain.Address"><constructor-arg index="0" value="spring"></constructor-arg><constructor-arg index="1" value="arr"></constructor-arg></bean></array></property><property name="list"><list><value>2</value><ref bean="user"/><bean class="com.csa.domain.Address"><constructor-arg index="0" value="spring"></constructor-arg><constructor-arg index="1" value="list"></constructor-arg></bean></list></property><property name="set"><set><value>3</value><ref bean="address"/><bean class="com.csa.domain.Address"><constructor-arg index="0" value="spring"></constructor-arg><constructor-arg index="1" value="set"></constructor-arg></bean></set></property><property name="map"><map><entry key="1" value="4"></entry><entry key="2" value-ref="address"></entry><entry key="3"><bean class="com.csa.domain.Address"><constructor-arg index="0" value="spring"></constructor-arg><constructor-arg index="1" value="set"></constructor-arg></bean></entry></map></property><!-- Properties 類型類似于Map,但是Properties只能是字符串--><property name="pros"><props><prop key="1">1</prop><prop key="2">2</prop><prop key="3">3</prop></props></property></bean></beans>

    8.4.3、測試

    package com.csa.app;import org.junit.Test; import org.springframework.context.ApplicationContext; import org.springframework.context.support.ClassPathXmlApplicationContext;import com.csa.domain.User;public class App {@Testpublic void app() {// 1.加載applicationContext.xmlString xmlPath = "applicationContext.xml";ApplicationContext applicationContext = new ClassPathXmlApplicationContext(xmlPath);// 2.獲取user的bean --> 也叫控制反轉(IoC)!CollectionTest collection = (CollectionTest) applicationContext.getBean("collectionBean");System.out.println(collection);} }

    測試結果:


    9、bean的作用域

    使用方法就是:<bean name="bean名字" class="包名.類名" scope="作用域"></bean>。

    在 Spring 中,支持以下5 種類型的作用域:

  • singleton — 單例模式,由 IOC 容器返回一個唯一的 bean 實例。
  • prototype — 原型模式,被請求時,每次返回一個新的 bean 實例。
  • request — 每個 HTTP Request 請求返回一個唯一的 Bean 實例。
  • session — 每個 HTTP Session 返回一個唯一的 Bean 實例。
  • globalSession — Http Session 全局 Bean 實例。
  • 注:大多數情況下,你可能只需要處理 Spring 的核心作用域 — 單例模式( singleton )和原型模式( prototype ),默認情況下,作用域是單例模式。

    10、注解開發

    注解開發需要做下面幾個步驟:

  • 在applicationContext.xml中開啟注解掃描器。
  • 在交給spring控制的bean上面寫注解。
  • 10.1、在applicationContext.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:context="http://www.springframework.org/schema/context"xsi:schemaLocation="http://www.springframework.org/schema/beans http://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.csa.domain,com.csa.dao,com.csa.service,com.csa.controller"></context:component-scan><!-- 第二種:常用 --><!-- <context:component-scan base-package="com.csa"></context:component-scan> --></beans>

    10.2、在交給spring控制的bean上面寫注解

    需要寫的類,還需要注意,每個類不能允許有構造并且基本類型需要編寫get/set方法:

  • Address類。
  • User類。
  • UserDao類。
  • UserService類。
  • UserController類。
  • 10.2.1、Address類

    package com.csa.domain;import org.springframework.beans.factory.annotation.Value; import org.springframework.stereotype.Component; //等價于<bean name="address" class="com.csa.domain.Address"></bean> @Component(value="address") public class Address {// 等價于<property name="province" value="hello"></property>@Value(value="hello")private String province;// 等價于<property name="city" value="spring"></property>@Value(value="spring")private String city;public String getProvince() {return province;}public void setProvince(String province) {this.province = province;}public String getCity() {return city;}public void setCity(String city) {this.city = city;}@Overridepublic String toString() {return "Address [province=" + province + ", city=" + city + "]";} }

    10.2.2、User類

    package com.csa.domain;import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Qualifier; import org.springframework.beans.factory.annotation.Value; import org.springframework.stereotype.Component;// 等價于<bean name="user" class="com.csa.domain.User"></bean> @Component(value="user") public class User {// 等價于<property name="username" value="小A"></property>@Value(value="小A")private String username;// 等價于<property name="age" value="18"></property>@Value(value="18")private Integer age;// 等價于<property name="age" value="18"></property>@Autowired@Qualifier(value="address")private Address address;public String getUsername() {return username;}public void setUsername(String username) {this.username = username;}public Integer getAge() {return age;}public void setAge(Integer age) {this.age = age;}public Address getAddress() {return address;}public void setAddress(Address address) {this.address = address;}@Overridepublic String toString() {return "User [username=" + username + ", age=" + age + ", \r\n\taddress=" + address + "]";} }

    10.2.3、UserDao類

    package com.csa.dao;import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Qualifier; import org.springframework.stereotype.Repository;import com.csa.domain.User;// 等同于<bean name="userDao" class="com.csa.dao.UserDao"></bean> @Repository(value="userDao") public class UserDao {// 這個相當于獲取一個name為user的bean@Autowired// 不寫,默認取user,寫了更清晰@Qualifier(value="user")private User user;public void printUser() {System.out.println(user);} }

    10.2.4、UserService類

    package com.csa.service;import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service;import com.csa.dao.UserDao;//等價于<bean name="userService" class="com.csa.service.UserService"></bean> @Service(value="userService") public class UserService {@Autowiredprivate UserDao userDao;public void printUser() {userDao.printUser();}}

    10.2.5、UserController類

    package com.csa.controller;import javax.annotation.Resource;import org.springframework.context.annotation.Scope; import org.springframework.stereotype.Controller;import com.csa.service.UserService; // 等價于<bean name="userController" class="com.csa.controller.UserController" scope="singleton"></bean> @Controller(value="userController") @Scope(value="singleton") public class UserController {// 第一種方式:// 這個相當于獲取一個name為userService的bean// @Autowired// @Qualifier(value="userService")// 第二種方式:// @Resource(name="userService")// 第三種方式:不寫name,則name的默認"類名首字母小寫"@Resourceprivate UserService userService;public void printUser() {userService.printUser();}}

    10.2.6、測試

    package com.csa.app;import org.junit.Test; import org.springframework.context.ApplicationContext; import org.springframework.context.support.ClassPathXmlApplicationContext;import com.csa.controller.UserController;public class App {@Testpublic void app() {// 1.加載applicationContext.xmlString xmlPath = "applicationContext.xml";ApplicationContext applicationContext = new ClassPathXmlApplicationContext(xmlPath);UserController userController = (UserController) applicationContext.getBean("userController");userController.printUser();} }

    測試結果:


    參考

    實驗樓

    總結

    以上是生活随笔為你收集整理的Spring学习总结一的全部內容,希望文章能夠幫你解決所遇到的問題。

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

    一区二区三区四区影院 | 久草在线在线视频 | www.av在线播放 | 日韩一区二区久久 | 黄色成人小视频 | 99久久婷婷国产综合亚洲 | 在线视频手机国产 | 高清av免费看 | 97视频亚洲 | 女人魂免费观看 | 色综合久久久久综合体 | 99热这里只有精品国产首页 | 成人毛片一区二区三区 | 最新国产精品拍自在线播放 | 337p日本欧洲亚洲大胆裸体艺术 | 欧美精品在线观看 | 国产日韩欧美在线播放 | 中文字幕无吗 | 99产精品成人啪免费网站 | 久久久久久久久久久网 | 狠狠色丁香婷婷综合久小说久 | 国产成人三级在线观看 | 一级c片 | 中文字幕高清有码 | www五月| 久久久国产精品麻豆 | 成人h在线| 精品在线观看国产 | 玖玖在线观看视频 | 日日夜操 | 人人狠狠综合久久亚洲 | 成人在线免费视频观看 | 欧美激情第八页 | 在线欧美最极品的av | 五月视频 | www免费网站在线观看 | 色噜噜日韩精品一区二区三区视频 | 91片黄在线观看动漫 | 久久伊人精品一区二区三区 | 亚洲免费观看在线视频 | 国产视频精品免费播放 | 国产精品亚洲综合久久 | 日韩三级视频在线看 | 成人av电影免费在线播放 | 精品国内自产拍在线观看视频 | 9草在线 | 久久国色夜色精品国产 | 成人免费网视频 | 十八岁以下禁止观看的1000个网站 | 黄色片免费在线 | 精品久久久免费视频 | 99精品在线免费在线观看 | 一区二区激情视频 | 99视频99 | a在线观看免费视频 | 亚洲一区二区天堂 | 日韩精品久久中文字幕 | 成年人在线播放视频 | 高清免费在线视频 | 亚洲国产午夜精品 | av网址aaa | 久久一区二区三区四区 | 99久久99久国产黄毛片 | 日韩久久一区 | 一级片视频在线 | 国产拍揄自揄精品视频麻豆 | 999在线视频| 丁香资源影视免费观看 | 日韩福利在线观看 | 国产精品日韩在线观看 | 1000部18岁以下禁看视频 | 国产精品免费小视频 | 久久精品成人欧美大片古装 | 日本久久成人中文字幕电影 | 天天干天天操天天拍 | 狠狠色丁香婷婷综合欧美 | 开心婷婷色 | 在线观看视频你懂得 | 欧美性久久久 | 最近中文字幕免费av | av成人在线看 | 91精品国产91热久久久做人人 | 国产精品麻豆视频 | 天天操夜 | 日本中文字幕在线电影 | 精品国产1区2区 | 久久精品伊人 | 国产中文字幕网 | 国产精品久99 | 国产精品电影一区二区 | 亚洲成av人影院 | 亚洲精品欧美视频 | 欧美一级高清片 | 亚洲伦理中文字幕 | 欧美一级久久 | 91成人网在线播放 | 亚洲我射av | 中国一级片在线播放 | 九九精品视频在线看 | 三级免费黄色 | 久久久www成人免费毛片 | 久久午夜国产精品 | 中文字幕888| 东方av在线免费观看 | 天堂va在线观看 | 免费久久网| 国产精品乱码一区二三区 | 97国产一区| 粉嫩aⅴ一区二区三区 | 69av在线播放| 久久久精品国产免费观看一区二区 | 久久成人18免费网站 | 久久成人毛片 | 综合久久2023| 91手机电视| 最新国产福利 | 欧美精品国产综合久久 | 免费观看不卡av | 精品免费一区二区三区 | 久久国产精品成人免费浪潮 | 国产国产人免费人成免费视频 | 日韩一区二区免费视频 | 亚欧日韩成人h片 | 美女视频黄网站 | 91视频高清免费 | 国产 日韩 在线 亚洲 字幕 中文 | 开心激情久久 | 九九欧美视频 | 一本一道波多野毛片中文在线 | 中文字幕在线观看完整版 | 日韩四虎| av中文字幕在线观看网站 | 狠狠操电影网 | 少妇视频在线播放 | 一区二区三区播放 | 97综合网| 国产亚洲精品久久网站 | 久久99精品波多结衣一区 | 色国产视频 | 日韩视频中文字幕在线观看 | 在线观看日本高清mv视频 | 欧美精品久久久久久久久久久 | 国产自产在线视频 | 91刺激视频 | 人交video另类hd | 亚洲精品小区久久久久久 | 中文字幕亚洲综合久久五月天色无吗'' | 久久精品综合网 | 欧美日韩一区二区三区在线免费观看 | 国产成人精品一区二区三区在线观看 | 亚洲国产精品传媒在线观看 | 久久国产剧场电影 | 亚洲精品tv久久久久久久久久 | 国产亚洲日本 | 久久观看最新视频 | 免费观看的av网站 | www国产一区 | 欧美精品在线观看免费 | 日韩av女优视频 | 日本精品视频一区二区 | 少妇自拍av| 91福利国产在线观看 | 激情婷婷在线 | 日韩精品视频在线免费观看 | 久青草视频 | 99久久精品午夜一区二区小说 | h视频日本 | 婷婷激情网站 | 美女视频黄频大全免费 | 99视频免费播放 | 久久综合亚洲鲁鲁五月久久 | 亚洲精品视频在线观看免费 | 五月天视频网站 | 三级黄色网址 | 亚洲人成人在线 | 日韩欧美成 | 亚洲视频一级 | 911av视频| 国产在线小视频 | 久久久av免费 | 国产经典三级 | 在线精品视频免费观看 | 中文字幕日韩精品有码视频 | av日韩中文 | 黄污视频大全 | 久久线视频| 国产在线永久 | 九九综合九九 | 亚洲伊人婷婷 | 91精品国产高清自在线观看 | 国产123区在线观看 国产精品麻豆91 | 久久免费a | 99视频在线精品免费观看2 | 中文字幕亚洲综合久久五月天色无吗'' | 九九九电影免费看 | 一区二区三区在线视频111 | 日日干精品 | 在线观看中文字幕网站 | 99r在线观看| 色99之美女主播在线视频 | 免费看国产一级片 | 亚洲欧美视频在线观看 | 国产99久久久久久免费看 | 久久亚洲欧美日韩精品专区 | 久久 一区| 不卡av在线免费观看 | 国产在线播放一区二区三区 | 欧美日韩国产网站 | 亚洲天天摸日日摸天天欢 | av网站手机在线观看 | 免费一级日韩欧美性大片 | 手机av网站 | av大片免费在线观看 | 日批视频在线播放 | 久久免费资源 | 国产精品久久久久久久免费大片 | 久久久久久国产精品亚洲78 | 日本中文一级片 | 国产成人精品一区二区三区福利 | 成人a在线观看 | 久久在线电影 | 深夜福利视频一区二区 | 久久精品亚洲一区二区三区观看模式 | 久久激情精品 | 精品亚洲免费 | 色狠狠综合天天综合综合 | 日韩美在线观看 | 丁香婷婷综合五月 | 日韩在观看线 | 狠狠干中文字幕 | 国产老太婆免费交性大片 | 国产精品自产拍在线观看中文 | 中文字幕一区二区三区乱码不卡 | 亚洲精品久久久久久久不卡四虎 | 在线免费观看黄色 | 又湿又紧又大又爽a视频国产 | 国产一区久久 | 美女中文字幕 | 久久精品免视看 | 成人午夜黄色 | 久久久久久免费视频 | 久久综合亚洲鲁鲁五月久久 | 日日草av | 国产一区二区在线免费 | 操综合| 久久久综合 | 欧美一区二区三区免费观看 | 亚洲激情 欧美激情 | 色吊丝在线永久观看最新版本 | 视频一区二区在线 | 欧美在线视频精品 | 黄色大片网 | 东方av在线免费观看 | 91理论片午午伦夜理片久久 | 国产精品久久久久久久久久免费看 | 综合色狠狠 | 国产麻豆果冻传媒在线观看 | 欧美日韩二区在线 | 91夜夜夜| 五月天综合色 | 综合久久久| 99精品成人 | 成人黄色视 | 91精品国产电影 | 成人午夜在线电影 | 在线a视频 | 日韩av电影手机在线观看 | 中文字幕人成一区 | 99热国产在线观看 | 欧美一区二区三区激情视频 | 激情五月色播五月 | 在线观看成人一级片 | 99久久日韩精品免费热麻豆美女 | 五月av在线| 天天操婷婷 | 国色天香第二季 | 日本中文字幕一二区观 | 婷婷在线视频 | 久草在线99 | 在线天堂日本 | 黄色毛片一级片 | 日韩精品网址 | 在线91色 | 亚洲专区在线播放 | 中文字幕精品一区二区精品 | 成人免费在线播放 | 91成人区| 色播五月激情综合网 | 98久9在线 | 免费 | 久99久久 | 99精彩视频在线观看免费 | 欧美一区在线观看视频 | 午夜天使 | 又粗又长又大又爽又黄少妇毛片 | www.久久免费| 二区三区中文字幕 | 欧美日韩国产一区二 | 日韩中文幕 | 一本到视频在线观看 | 日本三级中文字幕在线观看 | 国产一区二区精品久久91 | 国产精品成人a免费观看 | 伊人天堂网 | 国产精品久久久久一区二区国产 | 久久国产剧场电影 | 亚洲国产美女精品久久久久∴ | 欧美色就是色 | 久久激五月天综合精品 | 97理论电影 | 欧美日韩一区二区三区在线观看视频 | 久久久久黄 | 超级碰碰碰免费视频 | 国产视频在 | 国产福利av在线 | 麻豆国产网站 | 日韩在线视频国产 | 99久久久国产免费 | 超碰97.com | 91麻豆福利 | 丁香五月亚洲综合在线 | 久久国产精品区 | 青青草久草在线 | 国产免费亚洲 | 99re视频在线观看 | 在线视频1卡二卡三卡 | 综合av在线 | 国产精品国产自产拍高清av | 国产日韩精品一区二区三区 | a v在线视频 | 久久这里只有精品视频99 | 日韩欧美xxxx | 国产在线观看你懂的 | 国产精品久久一卡二卡 | 国产探花| 黄网站污| 久久精品视频中文字幕 | 亚洲色综合 | 亚洲精品福利在线观看 | 国产精品麻豆果冻传媒在线播放 | 综合国产在线 | 九九国产视频 | 五月婷婷在线视频观看 | 国产精品久久久久aaaa九色 | 在线亚洲观看 | 在线午夜av | 中国精品少妇 | 97偷拍视频| 亚洲视频综合 | 99久久视频| 久久爱www. | 国产亚洲视频在线免费观看 | 国产999精品视频 | 亚洲在线视频网站 | 很污的网站| 国产在线a免费观看 | 亚洲精品午夜一区人人爽 | 欧美男男激情videos | 一区二区三区免费在线观看视频 | 久久成人久久 | 精品久久久久久久久中文字幕 | 五月激情丁香婷婷 | 欧洲高潮三级做爰 | 日韩中文字幕视频在线观看 | 欧美三级高清 | 97久久精品午夜一区二区 | 成人久久免费视频 | 色资源中文字幕 | 国产亚洲一区二区三区 | 91视频啪 | 日韩三级免费观看 | 亚洲激情国产精品 | 麻豆国产精品va在线观看不卡 | 成人国产亚洲 | 97在线观看免费 | 国产日韩av在线 | 久草网站在线 | 国产精品密入口果冻 | 又爽又黄又无遮挡网站动态图 | 超碰夜夜 | 国产精品久久久久久久久久久久午夜 | 亚洲精品国产成人av在线 | 婷婷中文字幕在线观看 | 免费a网| 91精品久久久久久久久久久久久 | 国产理论一区二区三区 | 久草.com| 激情久久久久久久久久久久久久久久 | 在线视频中文字幕一区 | 日日操狠狠干 | 久久老司机精品视频 | 亚洲做受高潮欧美裸体 | 免费观看黄色12片一级视频 | 亚洲精品国偷拍自产在线观看蜜桃 | 国产高清中文字幕 | 精品久久久久久久久久久久 | 美女黄频在线观看 | 国产精品资源在线 | 天天色天天 | 日韩精品中文字幕在线观看 | 在线黄网站| 欧美日韩国产一区二 | 一区二区亚洲精品 | 免费在线观看av的网站 | 久久久久日本精品一区二区三区 | 中文字幕影片免费在线观看 | 日韩视频免费观看高清 | 国产一区视频在线 | 中文字幕中文中文字幕 | 91久久国产露脸精品国产闺蜜 | 国产99视频在线观看 | 色香com. | 韩日精品在线 | 97偷拍在线视频 | 99热这里只有精品1 av中文字幕日韩 | 亚洲最大av | 国产一区二区精品久久91 | 久久99精品热在线观看 | 久久99久久99精品免观看粉嫩 | 成人资源在线观看 | 亚洲国产欧洲综合997久久, | 黄色精品一区 | 99久久精品免费看国产 | 久久久久久黄 | 草久久av| 最近更新好看的中文字幕 | 亚洲精品国内 | 日本久久电影 | 色婷婷www | 婷婷社区五月天 | 麻豆高清免费国产一区 | 久久久久欧美精品999 | 欧美一区二区日韩一区二区 | 久草在线最新 | 久久97视频| 国产一区二区手机在线观看 | 亚洲人成免费网站 | 中文字幕国产精品一区二区 | 日日夜夜网站 | 中文字幕在线观看一区 | 久久福利小视频 | 91福利社在线观看 | 91九色精品女同系列 | 久久国产精品小视频 | 亚洲精品女人久久久 | 99视频精品在线 | 激情视频一区二区三区 | 婷婷国产v亚洲v欧美久久 | 一区二区三区日韩在线 | 高清不卡毛片 | 亚洲日本在线视频观看 | 激情网站 | 国内精品在线观看视频 | 伊人网综合在线观看 | 久久视频 | 日韩精品免费在线观看视频 | 午夜日b视频 | 久久成年人 | 国产成人一区二区在线观看 | 国产一二区免费视频 | 国产成人精品一区在线 | av短片在线| 国产最新福利 | 免费久久99精品国产 | 国产精品一区二区久久精品爱涩 | 18久久久久久 | 久草资源在线观看 | 免费av片在线 | 97成人精品 | 99综合视频| 亚洲精品乱码久久久久久写真 | 色综合久久天天 | 久久久免费少妇 | 91精品视频网站 | 天天操天天干天天干 | 国产永久免费高清在线观看视频 | 久久66热这里只有精品 | 午夜视频在线瓜伦 | 成年人在线看片 | 夜夜操天天 | 久久久国产精华液 | 成人午夜影院 | 六月丁香综合网 | 国产999视频在线观看 | 黄色小网站免费看 | 日产av在线播放 | 热热热热热色 | 国产 欧美 日产久久 | 亚洲一区美女视频在线观看免费 | 亚洲一区久久久 | www狠狠 | 成人av在线影视 | 久久国产精品久久w女人spa | 色综合久久久久 | 成人黄色在线 | 国产精品乱码一区二三区 | 精品一区中文字幕 | 国产91精品在线播放 | 男女全黄一级一级高潮免费看 | 天天拍天天爽 | 国产精品婷婷午夜在线观看 | 欧美午夜a| 国产成人一区二区三区在线观看 | 久久久久久久影视 | 九草在线视频 | 欧美婷婷综合 | 99久久99热这里只有精品 | 午夜一级免费电影 | 国产色a在线观看 | 在线观看久久久久久 | 日韩欧美视频免费看 | 久久不射电影院 | 国产aa精品 | 国产不卡免费视频 | 久久99久久99精品中文字幕 | a黄色一级片 | 一区二区三区免费网站 | 四虎精品成人免费网站 | 欧美亚洲国产精品久久高清浪潮 | 丝袜美女在线 | 国产精品嫩草影视久久久 | 国产在线观看污片 | 婷婷色综合色 | 午夜美女网站 | 久久国产精品网站 | 色九九影院 | 欧美日韩在线播放一区 | 国产特级毛片aaaaaa毛片 | 亚洲狠狠| 少妇视频在线播放 | 欧美激情综合五月色丁香 | 福利二区视频 | 成人播放器 | 亚洲精品乱码久久久久久久久久 | 国产裸体永久免费视频网站 | 999视频在线播放 | 日本 在线 视频 中文 有码 | 国产手机av在线 | 不卡的av在线播放 | 亚洲精品xxxx | 日韩高清在线一区二区三区 | 中文字幕婷婷 | 中文字幕一区二区三区精华液 | 精品国产伦一区二区三区观看方式 | 狠狠色综合网站久久久久久久 | 日韩精品视频久久 | 亚洲欧洲视频 | 国产 在线 高清 精品 | 日本精品久久久久中文字幕5 | 亚洲综合色婷婷 | 日本中文字幕视频 | 97**国产露脸精品国产 | 91精彩在线视频 | 亚洲精品国产综合久久 | 日韩在线精品视频 | 久久伊人五月天 | 国产99久久九九精品免费 | 久久久亚洲精品 | 最近最新mv字幕免费观看 | 久草视频在线免费 | 亚洲国产片| 日韩精品免费在线观看 | 国产成人不卡 | 免费色黄| 国产成人综合图片 | 又黄又刺激视频 | 国产成人av片 | 久久精品在线视频 | 免费福利在线观看 | 天天操天天干天天爽 | 韩日视频在线 | 五月天激情开心 | 99久久精品网 | 7777xxxx| 精品国产一区二区三区四区在线观看 | 五月天色婷婷丁香 | 欧美精品视 | 91av短视频 | 四虎免费在线观看视频 | 日韩一二三 | 香蕉视频免费在线播放 | 日日射av | 一区二区在线电影 | av在线永久免费观看 | 天天草天天干 | 免费在线观看黄色网 | 色偷偷888欧美精品久久久 | 一区二区三区播放 | 免费97视频 | 最新色站 | 香蕉网站在线观看 | 99久久激情 | 国产精品专区在线观看 | 国产精品系列在线观看 | 在线亚洲高清视频 | 在线观看视频黄色 | 91网站在线视频 | 亚洲激情免费 | 久久艹久久 | 国产精品尤物视频 | 亚洲国产精品成人综合 | 国产精品久久一区二区三区, | 五月天丁香综合 | 蜜臀aⅴ国产精品久久久国产 | 日韩中字在线 | 欧美日韩另类视频 | 日本中文乱码卡一卡二新区 | av韩国在线 | 国产一区二区在线精品 | 99精品欧美一区二区蜜桃免费 | 午夜精品视频一区二区三区在线看 | 精品爱爱| 日韩av专区 | 精品久久五月天 | 欧美成人久久 | 香蕉97视频观看在线观看 | av免费网站在线观看 | 91福利视频一区 | 在线看黄色的网站 | 国产在线一区二区 | 在线免费看片 | 91成人在线网站 | 婷婷丁香狠狠爱 | 九九在线免费视频 | 美女视频黄是免费的 | 日韩精品一区二区在线视频 | 久久成人免费视频 | 色姑娘综合 | 日韩在线不卡av | 成人欧美一区二区三区黑人麻豆 | 亚洲精品视频在线观看免费视频 | 欧美午夜理伦三级在线观看 | 天天干,天天草 | 久久草视频| 黄色亚洲在线 | 久草在线免费资源 | 欧美日韩在线观看一区二区 | 久久久久福利视频 | 亚洲综合色婷婷 | 免费看的黄色 | 国产成人资源 | 日韩精品一区二区在线 | 日韩欧美在线影院 | 久久精品国产一区二区电影 | 超碰伊人网 | 婷婷在线资源 | 精品主播网红福利资源观看 | 中文字幕亚洲精品日韩 | 精品国产一区二区三区不卡 | 91大神一区二区三区 | 国产精品二区三区 | 成人免费xxx在线观看 | 久久精品在线视频 | 国产91精品一区二区麻豆网站 | 麻豆91精品视频 | 狠狠躁夜夜躁人人爽超碰97香蕉 | 久久夜色精品国产欧美一区麻豆 | 日本三级久久久 | 天天射,天天干 | 四虎免费在线观看 | 国产视频在线观看一区 | 九九九热精品免费视频观看网站 | 欧美色综合 | 黄免费网站 | 中文字幕一区二 | 成人av在线网 | 国产精品免费在线视频 | 99国内精品久久久久久久 | 亚洲黄色片 | 欧美性护士 | 日韩av片无码一区二区不卡电影 | av免费观看高清 | 午夜精品99久久免费 | 久久国色夜色精品国产 | 白丝av在线| 久久久久麻豆v国产 | 日本夜夜草视频网站 | 亚洲精品字幕在线观看 | 久av电影 | 中文字幕免费观看全部电影 | 亚洲国产精品999 | 成人h动漫在线看 | 中文字幕免费高清在线 | 国产黄色视 | 婷婷五月色综合 | 成人四虎 | 国产超碰在线观看 | 在线精品国产 | 99精品在线免费视频 | 精品欧美在线视频 | 日日操天天操夜夜操 | 国产免费又爽又刺激在线观看 | 免费观看十分钟 | 国产在线播放观看 | 人人干人人做 | 久久久久99999 | 久久国产精品99久久人人澡 | 日韩www在线 | 911在线| 国产精品原创视频 | 中文字幕av专区 | 久久99九九99精品 | 91麻豆精品国产自产 | 成人a大片 | 欧美狠狠操 | 97精产国品一二三产区在线 | 狠狠干综合 | 天天操夜夜干 | 久久伊99综合婷婷久久伊 | 色播五月激情五月 | 国产精品一区久久久久 | 中文字幕免费播放 | 国产色综合天天综合网 | 欧美精品久久久久久久免费 | 97av在线视频免费播放 | 久久久免费精品国产一区二区 | 日韩特黄一级欧美毛片特黄 | 国产精品18久久久 | 欧美黑人性猛交 | 国产91九色蝌蚪 | 草免费视频 | 日韩午夜视频在线观看 | 婷婷资源站 | www.亚洲精品视频 | 精品999在线 | 在线观看不卡视频 | 久久精品香蕉视频 | 久久午夜影院 | 欧美日韩精品在线播放 | 成人在线免费视频 | 国产三级视频在线 | 一区二区三区四区精品视频 | 国产一区在线免费观看视频 | 国产精品黄色在线观看 | 一区中文字幕在线观看 | 国产精品免费视频一区二区 | bbbb操bbbb | 久久99热精品这里久久精品 | 亚洲精品福利在线观看 | 日韩一区二区三区免费视频 | 国产成人一级 | 91麻豆精品一区二区三区 | 玖玖国产精品视频 | 在线视频欧美日韩 | 国产在线视频一区二区三区 | 久久er99热精品一区二区 | 国产97色在线 | 久久国产亚洲精品 | 国产精品久久久久久久久免费看 | 久久精品国产亚洲aⅴ | 国产精品久久久久久久午夜片 | 激情av五月婷婷 | 中文字幕 第二区 | www.夜夜爱| 激情深爱五月 | www99精品| 99精品在这里 | 黄色特级毛片 | 亚洲精品美女 | 亚洲国产精品视频在线观看 | 亚洲精选久久 | 久久综合中文字幕 | 美女网站视频免费黄 | 亚洲一区二区三区精品在线观看 | 国内三级在线观看 | 精品国偷自产国产一区 | 正在播放国产一区 | 狠狠色丁婷婷日日 | 性色va| 国产精品成人久久久久久久 | av电影一区 | 操操色| 亚洲人成人天堂h久久 | 欧美精品一二 | 国产尤物一区二区三区 | 久久成人免费 | 欧美成年网站 | 国产日韩一区在线 | 国产精彩视频一区二区 | 久久狠狠亚洲综合 | 69av久久| 免费看污污视频的网站 | 99久久精品国产一区二区成人 | 500部大龄熟乱视频 欧美日本三级 | 国产精品va| 国产色道 | 在线观看理论 | 国产高清不卡在线 | 韩日精品在线观看 | 欧美日本高清视频 | 中文字幕丝袜 | 婷婷六月综合亚洲 | 天天操天天拍 | 欧美激情xxxx | 探花视频在线版播放免费观看 | 二区视频在线 | 久久久久久久久久网 | 国产在线91精品 | av丝袜天堂| 一区国产精品 | 亚洲影院一区 | 欧美小视频在线观看 | 亚洲亚洲精品在线观看 | 精品国产a | 国产美女精彩久久 | 韩国av不卡 | 91精品国产自产老师啪 | 国产激情小视频在线观看 | 亚洲视屏 | 亚洲mv大片欧洲mv大片免费 | 99re视频在线观看 | 美女av电影 | 欧美国产日韩久久 | 久久九九精品 | 国产精品乱码久久久久久1区2区 | www.久久色| 国产精品久久久久久一区二区三区 | 免费视频一二三区 | 黄色国产高清 | 91国内产香蕉 | 精品国产不卡 | 国产尤物一区二区三区 | 国产免费专区 | 在线观看免费91 | 日黄网站 | 综合天天色 | 日韩精品视频免费专区在线播放 | 精品久久久久久久久久久久久久久久久久 | 久久九九视频 | 视频三区在线 | 天天撸夜夜操 | 国产亚洲人成网站在线观看 | 久久人人爽人人爽人人片av免费 | 久久久久久久久久久久久久免费看 | www五月天婷婷 | 色av资源网 | 干干日日 | 久草视频在线资源 | 亚洲视频在线视频 | 国产999精品久久久久久绿帽 | 天海冀一区二区三区 | 99在线精品视频 | 91干干干| 奇米影视在线99精品 | 99久久久成人国产精品 | 福利区在线观看 | 日日操天天射 | 亚洲最新av在线网址 | 操天天操 | 中文字幕在线播放第一页 | 国产精品国产三级国产aⅴ9色 | 成人资源在线 | 国产精品女同一区二区三区久久夜 | 成人app在线免费观看 | 又爽又黄在线观看 | 韩日精品视频 | 亚洲午夜久久久久久久久久久 | 91亚洲永久精品 | 激情伊人五月天久久综合 | 天天夜操 | 亚洲一级电影 | 免费黄色av | 最近2019好看的中文字幕免费 | 久久免费观看视频 | 中文字幕日本电影 | 色播激情五月 | 国产丝袜美腿在线 | 日韩欧美视频在线免费观看 | 亚洲精品在线一区二区 | 久久草在线视频国产 | 国产欧美最新羞羞视频在线观看 | 狠狠色丁香久久综合网 | 99av国产精品欲麻豆 | 国色天香在线观看 | 伊人手机在线 | av三级av | 久久精品网站视频 | 天天天干天天天操 | 亚洲专区欧美专区 | 天天综合久久综合 | 999ZYZ玖玖资源站永久 | www.亚洲精品 | 色片网站在线观看 | 91丨九色丨蝌蚪丨老版 | 国产在线传媒 | 米奇四色影视 | 久久视频网 | 天天舔天天射天天操 | 男女免费视频观看 | 91天天视频 | 91网在线 | 国产成人一区二区三区影院在线 | 天天操天天综合网 | 国产亚洲午夜高清国产拍精品 | 香蕉在线观看视频 | 成人av资源站 | 九九久久国产 | 亚洲高清在线视频 | 毛片美女网站 | 四虎影视成人精品国库在线观看 | 成人免费视频播放 | 91热视频在线观看 | 三级黄免费看 | 国产成人精品一区二区在线观看 | 亚洲第一区在线观看 | 免费观看福利视频 | 韩国一区二区在线观看 | 亚洲丝袜一区二区 | 日韩激情在线 | 精品视频在线观看 | 在线精品视频免费播放 | 丁香视频全集免费观看 | 国模一二三区 | 久久久久久久精 | 午夜电影一区 | 亚洲电影自拍 | 免费观看丰满少妇做爰 | 在线观看日韩av | 精品视频在线免费 | 日韩区欠美精品av视频 | 中文字幕在线看视频国产 | 久久免费国产精品 | 81国产精品久久久久久久久久 | 天天操人人要 | 国产999精品久久久久久绿帽 | 国产黄色资源 | 激情综合啪啪 | 国产精品欧美久久久久三级 | 黄色在线看网站 | 国产视频欧美视频 | 人人插人人玩 | 精品久久久久久一区二区里番 | 久久久久久久久久久久久9999 | 美女黄濒 | 狠狠成人 | 国产精品久久久久久久久久直播 | 久草网首页 | 最近乱久中文字幕 | 91色九色| 久草精品网 | 国产 中文 日韩 欧美 | 国产精品久久视频 | 国产一区二区三区高清播放 | 久久久久视 | www黄色com| 成人久久 | www.夜夜| 片网站 | 狠狠色丁香婷婷综合橹88 | 99热精品久久| 日日日操操 | 亚洲一区二区高潮无套美女 | 精品国产一区二区三区不卡 | 狠狠色狠狠色综合日日小说 | 96精品在线| 97人人澡人人爽人人模亚洲 | 婷婷av网 | 精品在线你懂的 | av播放在线 | 色婷婷激婷婷情综天天 | 欧美一二三视频 | 香蕉视频一级 | 欧美精品黑人性xxxx | 久久免费视频网 | 狠狠色丁香婷婷综合最新地址 | 在线黄色av电影 | 国产福利网站 | 亚洲视频 中文字幕 | 超碰最新网址 | 九九免费在线视频 | 丁香免费视频 | 操处女逼| 91黄色成人 | 色婷婷综合视频在线观看 | 亚洲精品成人 | 国产成人精品一区二区三区网站观看 | 国产精品99久久久 | 中文字幕 婷婷 | 九色免费视频 | www..com黄色片 | 欧美日韩国产在线观看 | 怡红院成人在线 | 欧美污在线观看 | 久久精品电影 | 免费视频国产 | 毛片在线播放网址 | 国产一二区视频 | 久久精品久久99精品久久 | 一区二区三区高清 | 日韩精品免费在线播放 | 日本三级人妇 | 一区二区三区在线观看免费 | 成人h动漫在线看 | 毛片视频电影 | 91人网站 | www视频免费在线观看 | 97人人澡人人添人人爽超碰 | 久久久福利 | 黄色成人小视频 |