日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

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

javascript

Spring第一天

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

前置知識

? ? 1.三層架構及其MVC的關系

三層架構是一個分層式的軟件體系架構設計,是一個概念。分為表現層UI,業務邏輯層BLL,數據訪問層DAL。三層架構的重點是實現“高內聚,低耦合”,即解耦。

MVC的作用是實現三層架構中的UI層,例如:

M層(model)是應用程序的主體部分,提供數據和數據之間的關系(類與類之間)、轉化等等。

V層(view)是應用程序中用戶界面相關部分,具體實現數據的展示和輸入功能。例如 JSP HTML

C層(controller)是根據用戶的輸入,控制用戶界面的數據顯示和更新model對象狀態。起到控制整個業務流程、實現mv兩層之間協同作戰的目的。Servlet? service(JAVA WEB)

MVC是一種設計模式,目的是讓HTML代碼和業務邏輯代碼分開,讓代碼看起來更加清晰,便于開發。

小項目經常會將三層架構和MVC模式混為一談,認為M對應數據訪問層DAL(Dao和實體類),V對應表現層UI,C對應業務邏輯層BLL。這是因為在很多時候一些小項目分層架構不明細、缺少對應的概念分包所導致的。

  • 高內聚、低耦合
  • 這個概念是軟件工程中的一個概念,是判斷設計好壞的標準。簡而言之,就是看類的內聚性是否高,耦合度是否低

    高內聚:一個軟件模塊必須由關聯性很強的代碼組成,也就是一個模塊只做一件事。

    低耦合:不同的模塊之間互相關聯的程度是否足夠低,面向對象變成面向接口編程(實例,改造dao并采取面向接口編程)。

    ? ? 設計模式之工廠模式(簡單工廠、抽象工廠、單例)

    (單例)

    1.?單例類只能有一個實例

    2.?單例類必須創建自己唯一的實例。

    3.?單例類必須為其他對象提供這一實例。

    那么如何實現滿足上述條件的單例類呢?答案是:

    1.?私有構造方法。

    2.?內部創建靜態對象。

    3.?提供靜態方法返回該靜態對象。

    懶漢模式/餓漢模式

    //餓漢式 class T{private T(){}private static T t = new T();public static T a(){return t;} } //懶漢式 class T1{private T1(){}private static T1 t1;public static T1 a(){if(t1==null){t1 = new T1();}return t1; }

      Spring初體驗之IOC

    ?

  • spring是什么,它的優點是什么
  • ? ? ? ? ?a)? ?一個輕量級的企業開發軟件,時至今日已經在很多企業被應用。

    ? ? ? ? ?b)? ?非侵入式框架,優點在于松耦合、可配置、易測試。

    ? ? ? ? ?2.String體系架構

    ? ? ? ??

    ? ? ? ? ?

    3.Spring主要模塊

    a)?????? Spring核心模塊(Spring Core):Spring的核心容器模塊,它提供IOC的支持。該模塊中包含BeanFactory,它采用工廠模式來實現IOC,負責對bean的生命周期的管理。

    b)?????? Application Context(上下文模塊):該模塊擴展了BeanFactory的功能,例如提供了i18n,系統生命周期以及驗證的支持

    c)??????? Spring的AOP模塊:該模塊為應用系統的AOP開發提供了支持。

    d)?????? JDBC和DAO模塊:提供了JDBC封裝的模板代碼,使得使用JDBC開發更加簡潔。

    e)?????? ORM映射模塊:該模塊提供了對許多流行的ORM框架的支持,其中包括Hibernate,JDO和iBATIS SQL的支持

    f)???????? Spring Web模塊:該模塊中Spring提供了對其它的WEB框架的支持,包知Struts,JSF,WEBWORK等

    g)?????? Spring MVC框架:Spring提供的用于開發WEB應用的MVC框架

    ?4.Spring核心應用之IOC:

    a)?????? IOC(控制反轉):程序中各個組件之間的關系,不由程序代碼直接操控,而由容器控制??刂茩嘤蓱么a中轉到了外部容器,即所謂的反轉。

    b)?????? DI(依賴注入):各個組件之間的依賴關系不是在程序中寫死,而是寫在外部的配置文件中,然后運行時通過容器動態注入。

    5。SringIOC開發:

    a)?????? 導入jar包:

    <dependency>
    ??? <groupId>junit</groupId>
    ??? <artifactId>junit</artifactId>
    ??? <scope>test</scope>
    ??? <version>4.10</version>
    </dependency>
    <dependency>
    ??? <groupId>org.springframework</groupId>
    ??? <artifactId>spring-context</artifactId>
    ??? <version>4.3.0.RELEASE</version>
    </dependency>
    <dependency>
    ??? <groupId>org.aspectj</groupId>
    ??? <artifactId>aspectjweaver</artifactId>
    ??? <version>1.8.9</version>
    </dependency>
    <dependency>
    ??? <groupId>cglib</groupId>
    ??? <artifactId>cglib</artifactId>
    ??? <version>3.2.4</version>
    </dependency>

    ?

    b)?????? 聲明一個bean

    c)??????? 創建配置文件,并從配置文件中配置對象

    d)?????? 創建測試類,通過XmlBeanFactory初始化bean工廠,通過bean工廠從xml中讀取對象。

    6.異同:

    a)?????? BeanFactory和ApplicationContext:ApplicationCotext是spring更加高級的IOC容器除BeanFactory的功能外,還有如下特性:

    提供文本信息解析工具,包括對國際化支持。

    提供載入文件資源的通用方法,如圖片。

    可以向注冊為監聽器的bean發送事件。

    BeanFactory延遲加載所有bean,直到getBean()方法被調用。ApplicationCotext會在啟動后預載入所有單例bean

    b)?????? Id和name:使用基本一致,name允許有一些特殊字符

    c)??????? 通過property初始化對象屬性和constructor-arg初始化對象屬性

    d)?????? Bean和Property:

    7.集合裝配:如果對應bean的屬性是一個集合則需要使用集合裝配,Spring支持多種集合裝配類型:

    a)?????? <list>對應類型為java.util.List、java.util.Vector 、java.util.Collection 、數組的屬性

    b)?????? <set>對應類型為java.util.Set的屬性

    c)??????? <map>對應類型為java.util.Map的屬性

    d)?????? <props>對應類型為java.util.Properties的屬性

  • 集合裝配示例:
  • a)?????? List裝配:

    <property name=“list">

    <list>

    <value>a</value>

    <value>b</value>

    </list>

    </property>

    b)?????? Set裝配:

    <property name=“set">

    <set>

    <value>a</value>

    <value>b</value>

    </set>

    </property>

    c)??????? Map裝配:

    <property name=“map">

    <map>

    <entry key="1" value=“a"></entry>

    <entry key="2" value=“b"></entry>

    </map>

    </property>

    ?

    8.自動裝配:為了方便配置,spring提供了自動裝配,有四種類型,分別如下:

    a)?????? byName:尋找和屬性名相同的bean,若找不到,則裝不上。

    b)?????? byType:尋找和屬性類型相同的bean,若找不到,則裝不上,找到多個,拋異常。

    c)??????? constructor:查找和bean的構造參數一致的一個或多個bean,若找不到或找到多個拋則異常。按照參數的類型裝配,與(2)相似.

    d)?????? autodetect:首先嘗試用(3)來裝配,然后使用(2)方式。不確定性的處理與(3)和(2)一致。

    注意:使用最多的是通過byName進行諸如

  • Bean的作用域:通過scope標簽指定,有如下常見作用域
  • a)?????? singleton 單實例,即在整個應用程序中有一個Bean的實例。

    b)?????? prototype原型,每次請求獲取bean時,容器都會構建新的bean實例。

    以下幾個為Spring2.0新加的作用域:

    c)??????? session對應web應用時, 對應Web應用的每個會話會建立一個bean的實例。

    d)?????? request對應web應用時,對應Web的每個請求會建立一個bean實例。

  • Bean的延遲加載:通過lazy-init 屬性確定是否延遲初始化,默認為false
  • Annotation注解模式實現注入:
  • a)?????? 修改spring_ico.xml,寫入<context:component-scan base-package="需要掃描的包名"/>。

    b)?????? 將需要受Spring管理的組件加入@Component[(“cpmponentName”)]

    c)??????? 如果某些組件需要被注入其他組件的話,需要在set方法加入: @Resource[(name=“cpmponentName”)]

    9.Annotation的優缺點:

    a)?????? 優點:靈活、簡單、開發效率高

    b)?????? 缺點:如果沒有源碼,就無法運用annotation,只能使用xml

    ?

    ?

    ?

    ? ? ?

    轉載于:https://www.cnblogs.com/silentwlan/p/10433241.html

    總結

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

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