Spring学习(一)初识Spring
本文借鑒:Spring學習(特此感謝!)
一、簡介
什么是Spring
定義:Spring 是一個輕量級的 DI / IoC 和 AOP 容器的開源框架,目的為了簡化java開發。
DI:注入
IOC:控制反轉
AOP:面向切面編程
原理:利用了java的反射機制
常用術語
框架
定義:項目的整體架構模型,可以協助我們更快更方便地進行開發。
非侵入式設計
定義:從框架的角度看即無需繼承框架提供的任何類,當更換框架時,大部分的功能代碼無需改變。
輕量級和重量級
輕量級:非入侵性的、所依賴的東西非常少、資源占用非常少、部署簡單等等特點。
重量級:與輕量級相反,一般遷移、更換起來會比較麻煩。
JavaBean
定義:一種java類,一個可重復使用的軟件組件,通過封裝屬性和方法成為具有某種功能或者處理某個業務的對象,簡稱bean。 類中定義了具體的屬性,并通過get、set方法暴露出去給其他類調用。(可以簡單理解為數據傳輸模型的載體)
POJO
定義:簡單的Java對象,具有getter/setter方法,常見的VO(value -object)和DTO(Data Transform Object)就是一種POJO,不允許有業務方法,也不能攜帶有connection之類的方法。(即不包含業務邏輯或持久邏輯等。)
特點:
這個類必須有一個公共的缺省構造函數。
這個類的屬性使用getter和setter來訪問,其他方法遵從標準命名規范。
這個類應是可序列化的。?
容器
定義:從程序設計角度看就是裝對象的的對象,因為存在放入、拿出等操作,所以容器還要管理對象的生命周期。
Spring優勢
低侵入 / 低耦合?(降低組件之間的耦合度,實現軟件各層之間的解耦)
聲明式事務管理(基于切面和慣例)
方便集成其他框架(如MyBatis、Hibernate)
降低 Java 開發難度
Spring 框架中包括了 J2EE 三層的每一層的解決方案(一站式)
Spring的功能
①?Spring 能幫我們根據配置文件創建及組裝對象之間的依賴關系。
②?Spring 面向切面編程能幫助我們無耦合的實現日志記錄,性能統計,安全控制。
③?Spring 能非常簡單的幫我們管理數據庫事務。
④?Spring 還提供了與第三方數據訪問框架(如Hibernate、JPA)無縫集成,而且自己也提供了一套JDBC訪問模板來方便數據庫訪問。
⑤?Spring 還提供與第三方Web(如Struts1/2、JSF)框架無縫集成,而且自己也提供了一套Spring MVC框架,來方便web層搭建。
⑥?Spring 能方便的與Java EE(如Java Mail、任務調度)整合,與更多技術整合(比如緩存框架)。
Spring框架
?
Data Access/Integration層包含有JDBC、ORM、OXM、JMS和Transaction模塊。
Web層包含了Web、Web-Servlet、WebSocket、Web-Porlet模塊。
AOP模塊提供了一個符合AOP聯盟標準的面向切面編程的實現。
Core Container(核心容器):包含有Beans、Core、Context和SpEL模塊。
Test模塊支持使用JUnit和TestNG對Spring組件進行測試。
Spring容器中Bean的生命周期
簡單文字歸納一下:
1-2??創建實例
現在假設spring就是個容器,而配置文件中配置的bean屬性才是我們真正需要的東西。創建實例就是說,我把配置文件中的bean信息取出來化作一個真正的bean并放到容器中。
3-4??注入依賴關系
第3步是創建實例之后對實例作了一些處理,第4步是把xml中配置的bean屬性值賦予給容器中的實例化之后的bean。
5??bean初始化之前的處理
應用開發者需要把容器中實例化的bean拿出來用,這個拿出來的過程就是初始化,第五步就是在初始化之前,對已經實例化的bean再作一定的處理。
6-7??初始化
如果bean實現了InitializingBean,那么將調用InitializingBean的afterPropertiesSet()方法做一些初始化處理。如果沒有實現InitializingBean,而是在配置文件中定義了init-method屬性值,那么系統會找到init-method對應的方法并執行之,程序猿哥哥一般在這個方法里寫一些初始化操作;
8??bean初始化之后的處理
初始化之后在這個方法中再對bean進行修飾裝點。
9-10??交給應用開發人員處理
如果在<bean>中指定Bean的作用范圍是scopt="prototype",那么系統將bean返回給調用者,spring就不管了(如果兩個實例調用的話,每一次調用都要重新初始化,一個實例的修改不會影響另一個實例的值。如果指定Bean的作用范圍是scope="singleton",則把bean放到緩沖池中,并將bean的引用返回給調用者。這個時候,如果兩個實例調用的話,因為它們用的是同一個引用,任何一方的修改都會影響到另一方。)
11??bean用完之后
對于scope="singleton"的bean,使用完之后spring容器會做一些處理,比如編寫釋放資源、記錄日志等操作。
12??銷毀
調用配置文件中的銷毀方法銷毀實例。??
轉載于:https://www.cnblogs.com/riches/p/11488548.html
總結
以上是生活随笔為你收集整理的Spring学习(一)初识Spring的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 搜索引擎学习(七)解析查询
- 下一篇: Spring学习(二)Spring Io