1. 程式人生 > >搭建eclipse+tomcat+maven+shiro+springmvc+jpa專案(一):技術選型及架構文件

搭建eclipse+tomcat+maven+shiro+springmvc+jpa專案(一):技術選型及架構文件

一、Java語言

Java是一門面向物件程式語言,不僅吸收了C++語言的各種優點,還摒棄了C++裡難以理解的多繼承、指標等概念,因此Java語言具有功能強大和簡單易用兩個特徵。Java語言作為靜態面向物件程式語言的代表,極好地實現了面向物件理論,允許程式設計師以優雅的思維方式進行復雜的程式設計。

1  TIOBE程式語言排行榜

從圖1中我們可以看出,Java一直穩居第一,它具有簡單性、面向物件、分散式、健壯性、安全性、平臺獨立與可移植性、多執行緒、動態性等特點。Java可以編寫桌面應用程式Web應用程式分散式系統嵌入式系統應用程式等。在全球雲端計算和移動網際網路的產業環境下,

Java具備了顯著優勢和廣闊前景。因此,本系統我們使用Java語言來開發。

  • Mysql資料庫

MySQL是一個關係型資料庫管理系統由瑞典MySQL AB 公司開發,目前 Oracle 旗下產品。MySQL 是最流行的關係型資料庫管理系統之一,在 WEB 應用方面,MySQL是最好的 RDBMS (Relational Database Management System,關係資料庫管理系統) 應用軟體。MySQL是一種關係資料庫管理系統,關係資料庫將資料儲存在不同的表中,而不是將所有資料放在一個大倉庫內,這樣就增加了速度並提高了靈活性。

2 DB-Engines資料庫排行榜

從圖2可以看出,MySQL是最流行的資料庫管理系統之一。MySQL所使用的 SQL 語言是用於訪問資料庫的最常用標準化語言。MySQL 軟體採用了雙授權政策,分為社群版和商業版,由於其體積小、速度快、總體擁有成本低,尤其是開放原始碼這一特點,一般中小型網站的開發都選擇 MySQL 作為網站資料庫。本專案屬於小型網站,因此使用MySQL進行資料庫開發。

  • 技術架構
  1. 專案構建工具:Maven
    1. Maven的優點

Maven是跨平臺的專案管理工具主要服務於基於Java平臺的專案構建,依賴管理和專案資訊管理

Maven中使用約定,約定java原始碼程式碼必須放在哪個目錄下,編譯好的java程式碼又必須放到哪個目錄下,這些目錄都有明確的約定。Maven的每一個動作都擁有一個生命週期,例如執行 mvn install 就可以自動執行編譯,測試,打包等構建過程只需要定義一個pom.xml,然後把原始碼放到預設的目錄,Maven幫我們處理其他事情使用Maven可以進行專案高度自動化構建,依賴管理(這是使用Maven最大的好處),倉庫管理。使用Maven能很好地幫我們管理專案,解決依賴衝突。

    1. Maven工程的目錄約定

3 Maven專案結構

  1. 程式碼管理工具:SVN

SVN是一個自由/開源的版本控制系統,一組檔案存放在中心版本庫,記錄每一次檔案和目錄的修改,Subversion允許把資料恢復到早期版本,或是檢查資料修改的歷史,Subversion可以通過網路訪問它的版本庫,從而使使用者在不同的電腦上進行操作。程式設計師在編寫程式的過程中,每個程式設計師都會生成很多不同的版本,這就需要程式設計師有效的管理程式碼,在需要的時候可以迅速,準確取出相應的版本

圖4 SVN

  1. 應用伺服器: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結構圖

  1. 開發工具:Eclipse

Eclipse 是一個開放原始碼的、基於Java的可擴充套件開發平臺。它是Java整合開發工具。它可以極大地提升我們的開發效率。可以自動編譯,檢查錯誤。在公司中,很多Java工程師都將Eclise作為首選開發工具 ,因為它是免費開源的,儘管eclipse有些功能沒有,但是你可以下載一些外掛讓其支援,這足以說明它的擴充套件性是相當的強!

圖6  Eclipse

  1. 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也提供,全方位的解決使用者的需求。

  1. 許可權管理:Shiro

shiro是apache提供的強大而靈活的開源安全框架,它主要用來處理身份認證,授權,企業會話管理和加密。可以使用多資料來源如同時使用oracle、mysql。單點登入(sso)支援remember me服務與spring security區別,個人覺得二者的主要區別是:

1、shiro靈活性強,易學易擴充套件。同時,不僅可以在web中使用,可以工作在任務環境內中。

2、acegi靈活性較差,比較難懂,同時與spring整合性好。

如果對許可權要求比較高的專案,使用shiro,主要原因是可以很容易按業務需求進行擴充套件。

  1. 專案部署

使用maven install命令生成war包,拷貝到tomcat的webapps目錄下,啟動tomcat伺服器。