004-詮釋 Java 工程師【二】
三、框架篇
框架基礎
反射:反射是Java開發的一類動態相關機制。因為本身Java語言並不是一款動態語言,如果我們想要得到程序動態的效果,因此便引入了反射機制這一概念。
怎麽表達反射?
能用反射做什麽?
PS:某面試題:Java中創建實例化對象有哪些方式?
①最常見的創建對象方法,使用new語句創建一個對象。
②通過工廠方法返回對象,例:String s =String.valueOf()。(工廠方法涉及到框架)
③動用反射機制創建實例化對象,Class類的三種方法或者通過類類型的newInstance()實例方法。
④調用對象的clone()方法。(俗稱克隆方法)
⑤通過I/O留的反序列化手段,調用ObjectInputStream對象的readObject()方法。
註解:日常開發中,註解的使用簡化了不少代碼,同時也減少了程序員的日常工作量。
Java註解可以細分為JDK註解和第三方註解。其具體使用方法,可以點開鏈接看哦。
ORM
認識Hibernate和Mybatis之前,必然要先了解一下什麽是ORM?
ORM是三個單詞的縮寫:Object/Relationship Mapping。翻譯過來就是“對象/關系映射”。
為什麽要有ORM?
在用面向對象思想編寫應用程序的時候,最終都是把對象的信息保存在關系型數據庫中,這樣我們就需要編寫很多與底層數據庫相關的SQL語句。顯然這樣是很不便捷的,ORM框架技術就可以解決這些繁瑣的問題。
ORM存在的意義?
徹底拋棄書寫SQL語句的思想,完全使用面向對象的思想開發。
為什麽要拋棄程序中書寫SQL語句的思想?
①不同的數據庫使用的SQL語法不同,例:同樣一段SQL腳本,能在T-SQL中運行,但不一定能保證可以在PL-SQL中運行。
②同樣的功能在不同的數據庫有不同的實現方式,例:分頁SQL。
③程序過分依賴SQL,對程序的移植、擴展和維護帶來很大的麻煩。
Spring框架
Spring是一個輕量級的控制反轉(IOC)和面向切面(AOP)的容器框架和開源框架。
Spring框架的好處:
①從大小和開銷兩個方面而言Spring都是輕量級的。
②通過控制反轉的技術達到松耦合的目的。
③提供了面向切面編程的豐富支持,允許通過分離應用的業務邏輯和系統級服務進行內聚性的開發。
④包含並管理應用對象的配置和生命周期,從這個意義上講它是一種容器。
⑤將簡單的組件配置、組合成為復雜的應用,從這個意義上講它是一種框架。
什麽是Spring的IOC?
思路:
①當業務的對象進入了Spring的容器。
(Your Business Objects)→(The Spring Container)
②然後通過配置的原數據來生產出符合系統需要的對象。
(Configuration Metadata)→(The Spring Container)→(Fully Configured system)
③當要使用這些對象的時候去Spring容器裏面直接拿出來用就可以了。
什麽是Spring的AOP?
AOP:通過預編譯方式和運行期動態代理實現程序功能的統一維護的一種技術。
主要功能有:日誌記錄、性能統計、安全控制、事務處理、異常處理等。
註:
預編譯方式:AspectJ。
動態代理方式:JDK動態代理和CGLib動態代理。(也就是SpringAOP和JbossAOP)
Spring的AOP用途:
①提供了聲明式的的企業服務,特別是EJB的替代服務的聲明。
②允許用戶定義自己的方法,以完成OOP和AOP的互補使用。
Spring的事務管理
Spring的事務管理高層抽象主要包括3個接口:
TransactionDefinition定義事務傳播行為(7種):
Spring MVC框架
Spring MVC是一種前端控制器的實現形式,它的基本概念分為靜態概念 和 動態概念。
靜態概念:如圖下示。DispatcherServlet就是Spring MVC的前端控制器。
思路:
①當瀏覽器端用戶的請求通過DispatcherServlet進行了分發,到達Cotroller層。
②到達Cotroller層之後,便生產出我們所需要的業務數據Model。
③然後Model層再通過DispatcherServlet進行傳遞給我們的View層。
④最後完成了最終的頁面呈現。
總結:MVC將業務邏輯和頁面實現了分離,其核心就是通過DispatcherServlet實現的。
動態概念:如圖下示。
思路:
①當瀏覽器的請求Request到達DispatcherServlet。(因為DispatcherServlet也是一個Servlet,所有的Request能夠被它攔截到)
②然後DispatcherServlet會搜索尋找到一個Mapping,也就是HandlerMaping,並將其功能代理給了HandlerMaping。
③然後HandlerMaping根據本身的配置,找到需要用到的Controller和HandlerInterceptor。
④然後把Controller和HandlerInterceptor制成一個可執行的鏈條,也就是Handler/HandlerAdapter的適配器。
⑤Handler/HandlerAdapter的適配器將信息返回給了DispatcherServlet,DispatcherServlet便開始調用這個一般化的處理器Handler/HandlerAdapter。
⑥Controller的目的就是生成ModelAndView模型,並且返還給DispatcherServlet。
⑦DispatcherServlet是不會管理視圖顯示的,所以它就調用ViewResolver視圖解析器並通過該方法返回到View對象。(ViewResolver的作用是告訴DispatcherServlet哪個視圖是用來解析當前這種場景的)
⑧然後ModelAndView將模型數據傳遞到View,完成了頁面呈現。
Spring MVC攔截器工作流程:
Mybatis框架
Mybatis和Hibernate一樣,是一款開源的ORM框架的技術。
Mybatis的機制原理:
①Mybatis支持普通的SQL查詢、存儲過程和高級映射的持久層框架。
②Mybatis將大量的SQL語句從程序裏面剖離出來,配置在配置文件中,實現SQL的靈活配置。
OGNL表達式:
Mybatis框架和Hibernate框架比較:
①“全自動化”的Hibernate對數據庫結構提供了完整的封裝和全套映射機制。
②“半自動化”的Mybatis提供的ORM機制,對業務邏輯實現人員而言,面對的是純粹的Java對象。
③Hibernate會自動生成SQL語句,而MyBatis不會在運行期間自動生成SQL語句執行。
四、工具篇
JUnit單元測試
JUnit是一套基於測試驅動開發的測試框架。
註:
JUnit4不需要繼承junit.framework.TestCase類。
JUnit3中所有的方法都必須使用@Test註解,並且需要在方法名前加test作為前綴,需要繼承junit.framework.TestCase類。
版本管理工具SVN
SVN是一個開放源代碼的版本控制系統。
舉個例子:
①個人的代碼→口袋裏的錢
②版本控制工具中的代碼→卡裏的錢
③版本控制工具中的客戶端→卡
④版本控制工具中的服務端→刷卡機
註:在實際版本管理當中,你所寫的代碼,需要提交給服務端,然後別人要修改你的代碼,就會從服務端更新當前目錄下的代碼,再進行修改和提交。所以,“卡裏的錢”可以理解為團隊公有的代碼體系。
項目管理工具maven
maven是基於項目對象模型(POM),可以通過一小段描述信息來管理項目的構建、報告和文檔的軟件項目管理工具。
註:
maven也是一套強大的自動化的管理工具,覆蓋了編譯、測試、運行、清理、打包和部署,整個項目構建的周期。
它還提供了一個倉庫的概念,統一的幫助開發人員管理項目所依賴的第三方的架包,最大可能的避免環境配置不同所產生的問題(在你的電腦上能運行,在我的電腦上就不能運行)。
004-詮釋 Java 工程師【二】