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

来源:https://www.cnblogs.com/LFeather/archive/2018/11/25/10018011.html
-Advertisement-
Play Games

Java開發學習心得(一):SSM環境搭建 有一點.NET的開發基礎,在學校學過基礎語法,對JAVA有點興趣,就簡單學習了一下,記錄一下從哪些方面入手的,暫時不打算深入到原理方面,先簡單搭下環境看看,所以有些地方可能講得不慎準確。 1 SSM框架 從網上的討論來看,SSM框架似乎正在慢慢被Sprin ...


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請求的響應返回給瀏覽器,於是我們在瀏覽器中可以看到相應的返回值

您的分享是我們最大的動力!

-Advertisement-
Play Games
更多相關文章
  • [TOC] 引言 剛接觸正則表達式,我也曾被它們天書似的符號組合給嚇住,但經過一段時間的深入學習,發現它並沒有想象中那麼可怕,只要多實踐,多理解,也是可以輕鬆搞定的。 而且我發現帶著問題去學習,求知欲會驅使著你往前走,不知不覺就懂了。 下麵就是我在學習中提出的幾個問題,在後面會依次進行討論。由於正則 ...
  • 前言 上篇博客的內容是守護進程,對於操作系統來說可以在後臺執行一些程式.這篇的內容是互斥鎖,在上上篇博客上說到進程記憶體空間互相隔離,所以可以通過共用文件來操作同一個文件,那麼這樣操作的話會發生什麼呢? 鎖 互斥鎖 多個進程需要共用數據時,先將其鎖定,此時資源狀態為'鎖定',其他進程不能更改;知道該進 ...
  • 最近有朋友問我這麼一個面試題目: 現在有一個非常龐大的數據,假設全是 int 類型。現在我給你一個數,你需要告訴我它是否存在其中(儘量高效)。 ...
  • 背景 有個PHPCMS的網站停了,但是網站的歷史文章又想要看看,網站停了以後,管理員發來了網站的所有數據。 分析 因為不會PHP,所有本地環境跑網站不優先考慮。 有MySQL資料庫文件,但是不熟悉MySQL資料庫,也就不下載資料庫了。 有PHPCMS導出的SQL文件,但是不是標準的SQL文件,不能用 ...
  • 本人最近在學習Redis的使用和底層原理,有一些收穫,所以希望通過寫博客的形式來記錄自己的學習過程,加深自己的理解,同時也方便以後查閱複習。目前打算先記錄一些基本的使用方法和部分底層實現,其他的如果有用到我再貼上來。文章內容是我根據自己的理解和參考網上的資料總結的,如果有錯誤的地方,就麻煩各位大佬批 ...
  • 1.while 迴圈 : 2.for 迴圈: ...
  • 前言 爬蟲要爬取的信息主要來自於網頁載入的內容,有必要瞭解一些網頁的知識。 當我們在瀏覽器網址欄輸入一個網址——URL,經過TCP/IP協議簇的處理,這個網址請求的信息就被髮送到URL對應的伺服器,接著伺服器處理這個請求,並將請求的內容返回給瀏覽器,瀏覽器便顯示或者下載URL請求相應的資源。這是前一 ...
  • bat處理文件 (一)定義 bat處理文件就是可以一次性執行多個命令的文件。 (二)編寫步驟 只需要打開一個文本文件,將所要執行的命令寫入其中,然後將文件的尾碼改為.bat即可 (三)bat處理文件的常用命令 pause 讓當前控制台停留 echo 向控制台輸出指定內容 echo off 隱藏ech ...
一周排行
    -Advertisement-
    Play Games
  • 移動開發(一):使用.NET MAUI開發第一個安卓APP 對於工作多年的C#程式員來說,近來想嘗試開發一款安卓APP,考慮了很久最終選擇使用.NET MAUI這個微軟官方的框架來嘗試體驗開發安卓APP,畢竟是使用Visual Studio開發工具,使用起來也比較的順手,結合微軟官方的教程進行了安卓 ...
  • 前言 QuestPDF 是一個開源 .NET 庫,用於生成 PDF 文檔。使用了C# Fluent API方式可簡化開發、減少錯誤並提高工作效率。利用它可以輕鬆生成 PDF 報告、發票、導出文件等。 項目介紹 QuestPDF 是一個革命性的開源 .NET 庫,它徹底改變了我們生成 PDF 文檔的方 ...
  • 項目地址 項目後端地址: https://github.com/ZyPLJ/ZYTteeHole 項目前端頁面地址: ZyPLJ/TreeHoleVue (github.com) https://github.com/ZyPLJ/TreeHoleVue 目前項目測試訪問地址: http://tree ...
  • 話不多說,直接開乾 一.下載 1.官方鏈接下載: https://www.microsoft.com/zh-cn/sql-server/sql-server-downloads 2.在下載目錄中找到下麵這個小的安裝包 SQL2022-SSEI-Dev.exe,運行開始下載SQL server; 二. ...
  • 前言 隨著物聯網(IoT)技術的迅猛發展,MQTT(消息隊列遙測傳輸)協議憑藉其輕量級和高效性,已成為眾多物聯網應用的首選通信標準。 MQTTnet 作為一個高性能的 .NET 開源庫,為 .NET 平臺上的 MQTT 客戶端與伺服器開發提供了強大的支持。 本文將全面介紹 MQTTnet 的核心功能 ...
  • Serilog支持多種接收器用於日誌存儲,增強器用於添加屬性,LogContext管理動態屬性,支持多種輸出格式包括純文本、JSON及ExpressionTemplate。還提供了自定義格式化選項,適用於不同需求。 ...
  • 目錄簡介獲取 HTML 文檔解析 HTML 文檔測試參考文章 簡介 動態內容網站使用 JavaScript 腳本動態檢索和渲染數據,爬取信息時需要模擬瀏覽器行為,否則獲取到的源碼基本是空的。 本文使用的爬取步驟如下: 使用 Selenium 獲取渲染後的 HTML 文檔 使用 HtmlAgility ...
  • 1.前言 什麼是熱更新 游戲或者軟體更新時,無需重新下載客戶端進行安裝,而是在應用程式啟動的情況下,在內部進行資源或者代碼更新 Unity目前常用熱更新解決方案 HybridCLR,Xlua,ILRuntime等 Unity目前常用資源管理解決方案 AssetBundles,Addressable, ...
  • 本文章主要是在C# ASP.NET Core Web API框架實現向手機發送驗證碼簡訊功能。這裡我選擇是一個互億無線簡訊驗證碼平臺,其實像阿裡雲,騰訊雲上面也可以。 首先我們先去 互億無線 https://www.ihuyi.com/api/sms.html 去註冊一個賬號 註冊完成賬號後,它會送 ...
  • 通過以下方式可以高效,並保證數據同步的可靠性 1.API設計 使用RESTful設計,確保API端點明確,並使用適當的HTTP方法(如POST用於創建,PUT用於更新)。 設計清晰的請求和響應模型,以確保客戶端能夠理解預期格式。 2.數據驗證 在伺服器端進行嚴格的數據驗證,確保接收到的數據符合預期格 ...