搭建eclipse+tomcat+maven+shiro+springmvc+jpa專案(一):技術選型及架構文件
一、Java語言
Java是一門面向物件程式語言,不僅吸收了C++語言的各種優點,還摒棄了C++裡難以理解的多繼承、指標等概念,因此Java語言具有功能強大和簡單易用兩個特徵。Java語言作為靜態面向物件程式語言的代表,極好地實現了面向物件理論,允許程式設計師以優雅的思維方式進行復雜的程式設計。
圖1 TIOBE程式語言排行榜
從圖1中我們可以看出,Java一直穩居第一,它具有簡單性、面向物件、分散式、健壯性、安全性、平臺獨立與可移植性、多執行緒、動態性等特點。Java可以編寫桌面應用程式、Web應用程式、分散式系統和嵌入式系統應用程式等。在全球雲端計算和移動網際網路的產業環境下,
- Mysql資料庫
MySQL是一個關係型資料庫管理系統,由瑞典MySQL AB 公司開發,目前是 Oracle 旗下產品。MySQL 是最流行的關係型資料庫管理系統之一,在 WEB 應用方面,MySQL是最好的 RDBMS (Relational Database Management System,關係資料庫管理系統) 應用軟體。MySQL是一種關係資料庫管理系統,關係資料庫將資料儲存在不同的表中,而不是將所有資料放在一個大倉庫內,這樣就增加了速度並提高了靈活性。
圖2 DB-Engines資料庫排行榜
從圖2可以看出,MySQL是最流行的資料庫管理系統之一。MySQL所使用的 SQL 語言是用於訪問資料庫的最常用標準化語言。MySQL 軟體採用了雙授權政策,分為社群版和商業版,由於其體積小、速度快、總體擁有成本低,尤其是開放原始碼這一特點,一般中小型網站的開發都選擇 MySQL 作為網站資料庫。本專案屬於小型網站,因此使用MySQL進行資料庫開發。
- 技術架構
- 專案構建工具:Maven
- Maven的優點
Maven是跨平臺的專案管理工具,主要服務於基於Java平臺的專案構建,依賴管理和專案資訊管理
-
- Maven工程的目錄約定
圖3 Maven專案結構
- 程式碼管理工具:SVN
SVN是一個自由/開源的版本控制系統,一組檔案存放在中心版本庫,記錄每一次檔案和目錄的修改,Subversion允許把資料恢復到早期版本,或是檢查資料修改的歷史,Subversion可以通過網路訪問它的版本庫,從而使使用者在不同的電腦上進行操作。程式設計師在編寫程式的過程中,每個程式設計師都會生成很多不同的版本,這就需要程式設計師有效的管理程式碼,在需要的時候可以迅速,準確取出相應的版本。
圖4 SVN
- 應用伺服器:Tomcat
Tomcat 伺服器是一個開源的輕量級Web應用伺服器,在中小型系統和併發量小的場合下被普遍使用,是開發和除錯Servlet、JSP 程式的首選。Tomcat主要元件:伺服器Server,服務Service,聯結器Connector、容器Container。聯結器Connector和容器Container是Tomcat的核心。一個Container容器和一個或多個Connector組合在一起,加上其他一些支援的元件共同組成一個Service服務,有了Service服務便可以對外提供能力了,但是Service服務的生存需要一個環境,這個環境便是Server,Server元件為Service服務的正常使用提供了生存環境,Server元件可以同時管理一個或多個Service服務。
圖5 Tomcat結構圖
- 開發工具:Eclipse
Eclipse 是一個開放原始碼的、基於Java的可擴充套件開發平臺。它是Java整合開發工具。它可以極大地提升我們的開發效率。可以自動編譯,檢查錯誤。在公司中,很多Java工程師都將Eclise作為首選開發工具 ,因為它是免費開源的,儘管eclipse有些功能沒有,但是你可以下載一些外掛讓其支援,這足以說明它的擴充套件性是相當的強!
圖6 Eclipse
- ORM框架:Spring Data JPA
5.1 基本介紹
SpringData : Spring 的一個子專案。用於簡化資料庫訪問,支援NoSQL 和 關係資料儲存。其主要目標是使資料庫的訪問變得方便快捷。SpringData 專案所支援 NoSQL 儲存:
MongoDB (文件資料庫)
Neo4j(圖形資料庫)
Redis(鍵/值儲存)
Hbase(列族資料庫)
SpringData 專案所支援的關係資料儲存技術:
- JDBC
- JPA
5.2 開發步驟
Spring Data JPA 進行持久層(即Dao)開發一般分三個步驟:
(1)宣告持久層的介面,該介面繼承 Repository(或Repository的子介面,其中定義了一些常用的增刪改查,以及分頁相關的方法)。
(2)在介面中宣告需要的業務方法。Spring Data 將根據給定的策略生成實現程式碼。
(3)在 Spring 配置檔案中增加一行宣告,讓 Spring 為宣告的介面建立代理物件。配置了 <jpa:repositories> 後,Spring 初始化容器時將會掃描 base-package 指定的包目錄及其子目錄,為繼承 Repository 或其子介面的介面建立代理物件,並將代理物件註冊為 Spring Bean,業務層便可以通過 Spring 自動封裝的特性來直接使用該物件。
5.3 優點:
我們一般按照三層結構來看的話,Service層做業務邏輯處理,Dao層和資料庫打交道。那麼ORM框架本身提供的功能有什麼呢?答案是基本的CRUD,所有的基礎CRUD都提供,我們使用起來感覺很方便,業務邏輯層面的處理ORM是沒有提供的,如果使用原生的框架,業務邏輯程式碼我們一般會自定義,會自己去寫SQL語句,然後執行。在這個時候,Spring-data-jpa的威力就體現出來了,ORM提供的能力他都提供,ORM框架沒有提供的業務邏輯功能Spring-data-jpa也提供,全方位的解決使用者的需求。
- 許可權管理:Shiro
shiro是apache提供的強大而靈活的開源安全框架,它主要用來處理身份認證,授權,企業會話管理和加密。可以使用多資料來源如同時使用oracle、mysql。單點登入(sso)支援,remember me服務,與spring security區別,個人覺得二者的主要區別是:
(1)、shiro靈活性強,易學易擴充套件。同時,不僅可以在web中使用,可以工作在任務環境內中。
(2)、acegi靈活性較差,比較難懂,同時與spring整合性好。
如果對許可權要求比較高的專案,就使用shiro,主要原因是可以很容易按業務需求進行擴充套件。
- 專案部署
使用maven install命令生成war包,拷貝到tomcat的webapps目錄下,啟動tomcat伺服器。