javascript
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
?
? ? ? ? ?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> |
?
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進行諸如
a)?????? singleton 單實例,即在整個應用程序中有一個Bean的實例。
b)?????? prototype原型,每次請求獲取bean時,容器都會構建新的bean實例。
以下幾個為Spring2.0新加的作用域:
c)??????? session對應web應用時, 對應Web應用的每個會話會建立一個bean的實例。
d)?????? request對應web應用時,對應Web的每個請求會建立一個bean實例。
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
總結
- 上一篇: C语言中二维数组名与数组地址、首行地址、
- 下一篇: Spring----JmsTemplat