中文字幕av专区_日韩电影在线播放_精品国产精品久久一区免费式_av在线免费观看网站

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

Spring及相關框架知識小匯

發布時間:2020-07-01 02:58:40 來源:網絡 閱讀:799 作者:yinshuai875160 欄目:數據庫


  一 Spring相關知識介紹

   簡單點說,Spring是一個分層的JavaSE/EE 一站式輕量級的開源框架。Spring致力于提供一種方法來管理你的業務對象。Spring致力于J2EE應用的各層解決方案,而不是僅僅專注于某一層的方案,可以說Spring是企業應用的一站式選擇,貫穿于表現層,業務層和持久層。然而,spring并不想取代它們,而是與它們無縫整合。

控制反轉——Spring通過一種稱作控制反轉(IoC)的技術促進了低耦合。當應用了IoC,一個對象依賴的其它對象會通過被動的方式傳遞進來,而不是這個對象自己創建或者查找依賴對象。你可以認為IoC與JNDI相反——不是對象從容器中查找依賴,而是容器在對象初始化時不等對象請求就主動將依賴傳遞給它。

面向切面——Spring提供了面向切面編程的豐富支持,允許通過分離應用的業務邏輯與系統級服務(例如審計(auditing)和事務transaction)管理)進行內聚性的開發。應用對象只實現它們應該做的——完成業務邏輯——僅此而已。它們并不負責(甚至是意識)其它的系統級關注點,例如日志或事務支持。

容器——Spring包含并管理應用對象的配置和生命周期,在這個意義上它是一種容器,你可以配置你的每個bean如何被創建——基于一個可配置原型(prototype),你的bean可以創建一個單獨的實例或者每次需要時都生成一個新的實例——以及它們是如何相互關聯的。

框架——Spring可以將簡單的組件配置、組合成為復雜的應用。在Spring中,應用對象被聲明式地組合,典型地是在一個XML文件里。Spring也提供了很多基礎功能(事務管理、持久化框架集成等等),將應用邏輯的開發留給了你。

MVC—Spring的作用是整合,但不僅僅限于整合,Spring 框架可以被看做是一個企業解決方案級別的框架。客戶端發送請求,服務器控制器(由DispatcherServlet實現的)完成請求的轉發,控制器調用一個用于映射的類HandlerMapping,該類用于將請求映射到對應的處理器來處理請求。HandlerMapping將請求映射到對應的處理器Controller(相當于Action)在Spring 當中如果寫一些處理器組件,一般實現Controller 接口,在Controller 中就可以調用一些Service 或DAO 來進行數據操作, ModelAndView 用于存放從DAO 中取出的數據,還可以存放響應視圖的一些數據。 如果想將處理結果返回給用戶,那么在Spring框架中還提供一個視圖組件ViewResolver,該組件根據Controller返回的標示,找到對應的視圖,將響應response 返回給用戶。

 

視圖是一個接口,負責顯示模型;控制器表示邏輯代碼,是Controller的實現。

 

IOC和AOP

控制反轉模式(也稱作依賴性注入)的基本概念是:不創建對象,但是描述創建它們的方式。在代碼中不直接與對象和服務連接,但在配置文件中描述哪一個組件需要哪一項服務。容器 (在Spring 框架中是 IOC 容器) 負責將這些聯系在一起。在典型的 IOC 場景中,容器創建了所有對象,并設置必要的屬性將它們連接在一起,決定什么時間調用方法。下表列出了 IOC 的一個實現模式。

 

Spring的基本框架:

Spring 框架是一個分層架構,由 7 個定義良好的模塊組成。Spring模塊構建在核心容器之上,核心容器定義了創建、配置和管理 bean 的方式。組成Spring框架的每個模塊(或組件)都可以單獨存在,或者與其他一個或多個模塊聯合實現。每個模塊的功能如下:

1、核心容器:核心容器提供 Spring 框架的基本功能(SpringCore)。核心容器的主要組件是 BeanFactory,它是工廠模式的實現。BeanFactory 使用控制反轉(IOC) 模式將應用程序的配置和依賴性規范與實際的應用程序代碼分開。

2、Spring 上下文:Spring 上下文是一個配置文件,向 Spring框架提供上下文信息。Spring 上下文包括企業服務,例如JNDI、EJB、電子郵件、國際化、校驗和調度功能。

3、Spring AOP:通過配置管理特性,Spring AOP 模塊直接將面向切面的編程功能集成到了 Spring 框架中。所以,可以很容易地使 Spring 框架管理的任何對象支持AOP。Spring AOP 模塊為基于 Spring 的應用程序中的對象提供了事務管理服務。通過使用 Spring AOP,不用依賴 EJB 組件,就可以將聲明性事務管理集成到應用程序中。

4、Spring DAO:JDBCDAO抽象層提供了有意義的異常層次結構,可用該結構來管理異常處理和不同數據庫供應商拋出的錯誤消息。異常層次結構簡化了錯誤處理,并且極大地降低了需要編寫的異常代碼數量(例如打開和關閉連接)。Spring DAO 的面向 JDBC 的異常遵從通用的 DAO 異常層次結構。

5、Spring ORM:Spring 框架插入了若干個ORM框架,從而提供了 ORM 的對象關系工具,其中包括JDOHibernateiBatisSQLMap。所有這些都遵從 Spring 的通用事務和 DAO 異常層次結構。

6、Spring Web 模塊:Web 上下文模塊建立在應用程序上下文模塊之上,為基于 Web 的應用程序提供了上下文。所以,Spring框架支持與 Jakarta Struts 的集成。Web 模塊還簡化了處理多部分請求以及將請求參數綁定到域對象的工作。

7、Spring MVC 框架:MVC框架是一個全功能的構建 Web應用程序的 MVC 實現。通過策略接口,MVC框架變成為高度可配置的,MVC 容納了大量視圖技術,其中包括 JSP、VelocityTiles、iText 和 POI。模型由javabean構成,存放于Map;視圖是一個接口,負責顯示模型;控制器表示邏輯代碼,是Controller的實現。


DI的注解形式:

    注解的作用和特性:

1、  起到了一個解釋說明的作用

2、  注解是不能單獨存在的

3、  注解應該標在:類,方法,屬性,參數等

4、  應該有一個類:該類起的作用是解釋說明

 

1.1  利用注解的步驟

public class Person {

    @Resource

    private Student student;

    public void say(){

        this.student.student();

    }

}

 

注意:@Resource注解

 

在spring的配置文件中

要導入命名

xmlns:context=http://www.springframework.org/schema/context

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

           http://www.springframework.org/schema/context/spring-context-3.0.xsd

啟動注解解析器

<context:annotation-config></context:annotation-config>

1.2  原理

1、  當啟動spring容器的時候,容器實例化了person和student

2、  當spring容器解析到

<context:annotation-config></context:annotation-config>的時候,spring容器會對spring容器范圍的bean進行掃描,檢查哪些bean的哪些屬性

上有@Resource注解

3、  檢查到了該注解的時候,檢查@Resource注解的name屬性的值是否為””

如果是空

     拿注解所在的屬性的名稱和spring配置文件中的bean中的id的值做匹配

     如果匹配成功,則賦值

     如果匹配不成功,則按照類型進行匹配

     如果類型也不匹配,肯定報錯

如果不為空

     會提取到name屬性的值,根據這個值,和spring容器中的id做匹配

     如果匹配不成功,則報錯

 

 2.     類掃描機制

2.1.  步驟

1、   在spring配置文件中

    <context:component-scanbase-package="cn.tedu.big1603.spring.scan.annotation">          </context:component-scan>

    2、   在相應的類中

       @Component

    publicclass Person {}

    ==

    <beanid=”person” class=”…Person”

     

    @Component("p")

    publicclass Person {}

        ==

        <bean id=”p”class=”…Person”>

 

2.2.  原理

1、   當spring容器啟動的時候,會解析到<context:component-scanbase-package="cn.tedu.big1603.spring.scan.annotation"></context:component-scan>

2、   會去base-package指定的包及子包中查找,查看哪個類上面加有@Compontent注解

3、   會檢查該注解的value屬性是否為””

如果為“”

    會創建一個bean對象,bean對象的id的值就是類名的組成,組成規則

        為首字母小寫,其他不變

如果不為“”

    Value屬性的值就是id的值

4、   上述步驟完事以后,在spring容器中有對象了。

5、   掃描所有的在spring容器中的bean,進行@Resouce注入的業務邏輯

2.3.  總結

     總共掃描了二次,第一次是把類放入到spring容器中,第二次是給屬性注入值,所以配置文件的內容越少,效率越低,但是這個效率低對于web程序來說是可以忽略的。

2.4.  三種典型化注解

    @Repository

    @service

    @controller

    的作用和@Compontent的作用一樣

 

AOP相關知識介紹:

 

在軟件業,AOP為Aspect Oriented Programming的縮寫,意為:面向切面編程,通過預編譯方式和運行期動態代理實現程序功能的統一維護的一種技術。AOP是OOP的延續,是軟件開發中的一個熱點,也是Spring框架中的一個重要內容,是函數式編程的一種衍生范型。

可以通過預編譯方式和運行期動態代理實現在不修改源代碼的情況下給程序動態地統一添加功能的一種技術。利用AOP可以對業務邏輯的各個部分進行隔離,從而使得業務邏輯各部分之間的耦合度降低,提高程序的可重用性,同時提高了開發的效率。

 

在Spring中提供了面向切面編程的豐富支持,允許通過分離應用的業務邏輯與系統級服務(例如審計(auditing)和事務(transaction)管理)進行內聚性的開發。應用對象只實現它們應該做的——完成業務邏輯——僅此而已。它們并不負責(甚至是意識)其它的系統級關注點,例如日志或事務支持。

 

  AOP,我們可以定義交叉的關系,并將這些關系應用于跨模塊的、彼此不同的對象模型。


動態代理:所謂Dynamic Proxy是這樣一種class:它是在運行時生成的class,在生成它時你必須提供一組interface給它,然后該class就宣稱它實現了這些 interface。你當然可以把該class的實例當作這些interface中的任何一個來用。當然啦,這個Dynamic Proxy其實就是一個Proxy,它不會替你作實質性的工作,在生成它的實例時你必須提供一個handler,由它接管實際的工作。

注意事項:目標對象和代理對象實現了同一個接口.


動態代理模式實現該邏輯的缺點:

        在方法判斷的時候,如果是生產環境,如果方法特別多,這里的判斷就相當多

        在該類中只處理了事務,如果有權限、日志等內容怎么辦呢?

總結

    動態代理實現該邏輯也不是最好的選擇

 

二 MyBatis框架知識:


     MyBatis是支持普通 SQL查詢,存儲過程和高級映射的優秀持久層框架。MyBatis 消除了幾乎所有的JDBC代碼和參數的手工設置以及結果集的檢索。MyBatis 使用簡單的 XML或注解用于配置和原始映射,將接口和 Java 的POJOs(Plain Old Java Objects,普通的 Java對象)映射成數據庫中的記錄。

 

每個MyBatis應用程序主要都是使用SqlSessionFactoryc創建實例的,一個SqlSessionFactory實例可以通過SqlSessionFactoryBuilder獲得。SqlSessionFactoryBuilder可以從一個xml配置文件或者一個預定義的配置類的實例獲得。

用xml文件構建SqlSessionFactory實例是非常簡單的事情。推薦在這個配置中使用類路徑資源(Classpathresource),但你可以使用任何Reader實例,包括用文件路徑或file://開頭的url創建的實例。MyBatis有一個實用類----Resources,它有很多方法,可以方便地從類路徑及其它位置加載資源。

功能架構講解:

我們把Mybatis的功能架構分為三層:

(1)API接口層:提供給外部使用的接口API,開發人員通過這些本地API來操縱數據庫。接口層一接收到調用請求就會調用數據處理層來完成具體的數據處理。

(2)數據處理層:負責具體的SQL查找、SQL解析、SQL執行和執行結果映射處理等。它主要的目的是根據調用的請求完成一次數據庫操作。

(3)基礎支撐層:負責最基礎的功能支撐,包括連接管理、事務管理、配置加載和緩存處理,這些都是共用的東西,將他們抽取出來作為最基礎的組件。為上層的數據處理層提供最基礎的支撐。

 

MyBatis框架架構講解:

(1)加載配置:配置來源于兩個地方,一處是配置文件,一處是Java代碼的注解,將SQL的配置信息加載成為一個個MappedStatement對象(包括了傳入參數映射配置、執行的SQL語句、結果映射配置),存儲在內存中。

(2)SQL解析:當API接口層接收到調用請求時,會接收到傳入SQL的ID和傳入對象(可以是Map、JavaBean或者基本數據類型),Mybatis會根據SQL的ID找到對應的MappedStatement,然后根據傳入參數對象對MappedStatement進行解析,解析后可以得到最終要執行的SQL語句和參數。


(3)SQL執行:將最終得到的SQL和參數拿到數據庫進行執行,得到操作數據庫的結果。

(4)結果映射:將操作數據庫的結果按照映射的配置進行轉換,可以轉換成HashMap、JavaBean或者基本數據類型,并將最終結果返回。


MyBatis 最強大的特性之一就是它的動態語句功能。如果您以前有使用JDBC或者類似框架的經歷,您就會明白把SQL語句條件連接在一起是多么的痛苦,要確保不能忘記空格或者不要在columns列后面省略一個逗號等。動態語句能夠完全解決掉這些痛苦。
  盡管與動態SQL一起工作不是在開一個party,但是MyBatis確實能通過在任何映射SQL語句中使用強大的動態SQL來改進這些狀況。動態SQL元素對于任何使用過JSTL或者類似于XML之類的文本處理器的人來說,都是非常熟悉的。在上一版本中,需要了解和學習非常多的元素,但在MyBatis 3 中有了許多的改進,現在只剩下差不多二分之一的元素。MyBatis使用了基于強大的OGNL表達式來消除了大部分元素。


向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

黄陵县| 法库县| 灵山县| 宁夏| 万山特区| 高邮市| 葫芦岛市| 龙泉市| 祁门县| 宁海县| 出国| 泾阳县| 南丰县| 西昌市| 锡林郭勒盟| 那坡县| 冀州市| 永定县| 绵竹市| 察雅县| 怀仁县| 大石桥市| 枣阳市| 德保县| 息烽县| 象州县| 聊城市| 亳州市| 包头市| 留坝县| 洪江市| 穆棱市| 宜宾市| 凤台县| 彭阳县| 建瓯市| 维西| 平邑县| 兴文县| 油尖旺区| 天峨县|