1. 程式人生 > >Java開發學習心得(一):SSM環境搭建

Java開發學習心得(一):SSM環境搭建

Java開發學習心得(一):SSM環境搭建

有一點.NET的開發基礎,在學校學過基礎語法,對JAVA有點興趣,就簡單學習了一下,記錄一下從哪些方面入手的,暫時不打算深入到原理方面,先簡單搭下環境看看,所以有些地方可能講得不慎準確。

1 SSM框架

從網上的討論來看,SSM框架似乎正在慢慢被Spring Cloud的取代。

1.1 Spring Framework

Spring是一個開源的Java/Java EE全功能棧(full-stack)的應用程式框架,以Apache License 2.0開源許可協議的形式釋出,也有.NET平臺上的移植版本。該框架基於 Expert One-on-One Java EE Design and Development(ISBN 0-7645-4385-7)一書中的程式碼,最初由Rod Johnson和Juergen Hoeller等開發。

Spring Framework提供了一個簡易的開發方式,這種開發方式,將避免那些可能致使底層程式碼變得繁雜混亂的大量的屬性檔案和幫助類。 簡單來說,Spring是一個輕量級的 控制反轉(IoC)面向切面(AOP) 的容器框架。
如果學習JAVA Spring,這兩個東西應該是繞不開的,但是暫時理解不深刻,後面準備深入到程式碼實現層面,與.NET進行一些比較。

控制反轉 IoC(Inversion of Control)

在IoC出現以前,元件之間的協調關係是由程式內部程式碼來控制的,或者說,以前我們使用New關鍵字來實現兩組間之間的依賴關係的。
這種方式就造成了元件之間的互相耦合。IoC(控制反轉)就是來解決這個問題的,它將實現元件間的關係從程式內部提到外部容器來管理。
也就是說,由容器在執行期將元件間的某種依賴關係動態的注入元件中。

依賴注入(Dependency Injection):這就是DI,字面上理解,依賴注入就是將服務注入到使用它的地方。物件只提供普通的方法讓容器去決定依賴關係,容器全權負責元件的裝配,它會把符合依賴關係的物件通過屬性(JavaBean中的setter)或者是構造子傳遞給需要的物件。

相對於IoC而言,依賴注入(DI)更加準確地描述了IoC的設計理念。所謂依賴注入,即元件之間的依賴關係由容器在應用系統執行期來決定,也就是由容器動態地將某種依賴關係的目標物件例項注入到應用系統中的各個關聯的元件之中。

Spring核心思想,IoC與DI詳解

面向切面程式設計 AOP(aspect-oriented programming)

POP面向過程程式設計

OOP面向物件的程式設計

微服務

關於 Spring AOP (AspectJ) 你該知曉的一切

1.2 Spring MVC

Spring MVC屬於SpringFrameWork的後續產品,已經融合在Spring Web Flow裡面。Spring MVC 分離了控制器、模型物件、分派器以及處理程式物件的角色,這種分離讓它們更容易進行定製。

1.2.1 spring boot

Spring Boot就是Spring,它做了那些沒有它你也會去做的Spring Bean配置。它使用“習慣優於配置”(專案中存在大量的配置,此外還內建了一個習慣性的配置,讓你無需手動進行配置)的理念讓你的專案快速執行起來。使用Spring Boot很容易建立一個獨立執行(執行jar,內嵌Servlet容器)、準生產級別的基於Spring框架的專案,使用Spring Boot你可以不用或者只需要很少的Spring配置。

正常的Spring MVC構建需要
  • 一個專案結構,其中有一個包含必要依賴的Maven或者Gradle構建檔案,最起碼要有Spring MVC和Servlet API這些依賴。
  • 一個web.xml檔案(或者一個WebApplicationInitializer實現),其中聲明瞭Spring的DispatcherServlet。
  • 一個啟動了Spring MVC的Spring配置
  • 一控制器類,以“hello World”相應HTTP請求。
  • 一個用於部署應用程式的Web應用伺服器,比如Tomcat。
spring boot 特點
  • 自動配置:針對很多Spring應用程式常見的應用功能,Spring Boot能自動提供相關配置
  • 起步依賴:告訴Spring Boot需要什麼功能,它就能引入需要的庫。
  • 命令列介面:這是Spring Boot的可選特性,藉此你只需寫程式碼就能完成完整的應用程式,無需傳統專案構建。
  • Actuator:讓你能夠深入執行中的Spring Boot應用程式,一套究竟。
使用Spring Boot的方法之一:Spring Initializr
  • 通過Web構建 http://start.spring.io/
    enter image description here

  • IDEA

  1. 目前IDEA只支援Java8的JDK

  2. Apache Maven,是一個軟體(特別是Java軟體)專案管理及自動構建工具,由Apache軟體基金會所提供。基於專案物件模型(Project Object Model,POM)概念,Maven利用一箇中央資訊片斷能管理一個專案的構建、報告和文件等步驟(生命週期)。

  3. 選擇需要的依賴

  4. pom.xml
<project>
    <modelVersion>4.0.0</modelVersion>

    <groupId>com.example</groupId>
    <artifactId>demo</artifactId>
    <version>0.0.1-SNAPSHOT</version>
    <packaging>jar</packaging>

    <name>demo</name>
    <description>Demo project for Spring Boot</description>

    <parent>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-parent</artifactId>
        <version>2.1.0.RELEASE</version>
        <relativePath/> <!-- lookup parent from repository -->
    </parent>

    <properties>
        <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
        <project.reporting.outputEncoding>UTF-8</project.reporting.outputEncoding>
        <java.version>1.8</java.version>
    </properties>
    <!-- 新增classpath依賴 -->
    <dependencies>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-web</artifactId>
        </dependency>
        <!-- 開發者工具,當classpath下有檔案更新自動觸發應用重啟 -->
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-test</artifactId>
            <scope>test</scope>
        </dependency>
    </dependencies>
    <!-- maven編譯外掛,用於建立可執行jar包 -->
    <build>
        <plugins>
            <plugin>
                <groupId>org.springframework.boot</groupId>
                <artifactId>spring-boot-maven-plugin</artifactId>
            </plugin>
        </plugins>
    </build>
</project>
構建啟動的三種方式
  1. 在IDE(或者命令列工具中的java)啟動main函式,IDE中一般都自帶Maven,能夠幫助我們下載安裝Maven依賴。
  2. 執行mvn spring-boot:run命令,但是此種方法要求你在本地環境中必須安裝Maven
    使用命令列有兩種方式,一種是直接找到Maven專案檢視中的spring boot啟動命令直接執行


另一種是直接輸入命令

  1. 使用mvn package命令進行打包,生成一個可以直接執行的 JAR 檔案,路徑是專案檔案中的target目錄,使用“java -jar”命令就可以直接執行。

不管使用哪種方法都可以啟動專案,然後訪問http://localhost:8080就可以開啟網站看到控制器裡面的內容了

應用入口
package com.example.demo;

import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;

@RestController
@SpringBootApplication
public class DemoApplication {
    @RequestMapping("/")
    public String index(){
        return "Hello Spring Boot";
    }
    public static void main(String[] args) {
        SpringApplication.run(DemoApplication.class, args);
    }
}

對main函式所在的類進行修改,時期能接收Http請求並返回內容。

  • main()方法啟動了一個HTTP伺服器程式,這個程式預設監聽8080埠,並將HTTP請求轉發給我們的應用來處理
  • @Controller標註表示Application類是一個處理HTTP請求的控制器,該類中所有被@RequestMapping標註的方法都會用來處理對應URL的請求,@ResponseBody標註告訴Spring MVC直接將字串作為Web響應(Reponse Body)返回,如果@ResponseBody標註的方法返回一個物件,則會自動將該物件轉換為JSON字串返回
  • index()方法上包含@GetMapping("/")標註,意味著在瀏覽器中訪問http://localhost:8080/(不考慮協議、host和port資訊後的路徑為"/")後瀏覽器傳送的請求會交給該方法進行處理
  • index()方法直接返回一個字串,那麼相當於直接將字串"Hello World"作為HTTP請求的響應返回給瀏覽器,於是我們在瀏覽器中可以看到相應的返回值