Spring開發手冊PDF,基于Spring Boot 的Blog開發(一)

 2023-11-23 阅读 39 评论 0

摘要:一、引言 之前寫過幾篇關于利用Spring MVC來開發的博客,從博客下面的評論以及GitHub上的Issues看還是會出現許多的問題,且大部分的問題都出在配置上。雖然說Spring MVC的配置較SSH簡化了不少,但是在使用過程中仍然會覺得配置的吃力。 為了進一步簡化配置


一、引言

之前寫過幾篇關于利用Spring MVC來開發的博客,從博客下面的評論以及GitHub上的Issues看還是會出現許多的問題,且大部分的問題都出在配置上。雖然說Spring MVC的配置較SSH簡化了不少,但是在使用過程中仍然會覺得配置的吃力。

為了進一步簡化配置,考慮使用Spring Boot將之前的項目重寫,以及對各個模塊進行重構。由于是一步步探索的過程,因而在此一步一步記錄下來,除了自我學習以外,更方便未來review文檔,同時希望能為讀者帶來一定的遍歷。

二、Spring Boot

Spring是一套非常大的框架,在這個框架下有許多的子項目,這些項目可以在?https://spring.io/projects?找到,我們需要用到的兩個主要項目就是 Spring Framework 和 Spring Data。這些子項目可以被運用到許許多多的場景,隨意組合。然而,可能是歷史原因,開發者往往會受到框架組合和配置的困擾,一個個的xml文件讓人看起來是非常頭痛的事情,而且一旦某個部分配置出錯,需要花費很長的時間來找出這個錯誤,這樣做效率是極低的。

為了極大的簡化配置,甚至達到零配置的可能,Spring團隊開發出了 Spring Boot框架,與其說它是一個框架,倒不如它是一個極大降低Spring開發難度的一個應用程序。

下面是官方的介紹:

Spring Boot makes it easy to create stand-alone, production-grade Spring based Applications that you can "just run". We take an opinionated view of the Spring platform and third-party libraries so you can get started with minimum fuss. Most Spring Boot applications need very little Spring configuration.

大致的意思:Spring Boot使我們更加容易地創建一個獨立的、生產級的,且可以直接運行的Spring應用。由于它整合了Spring platform和一些三方庫的配置,使我們可以做到真正的開箱即用。大多數的Spring Boot應用只需要非常少的Spring配置。

?那它的特征有哪些呢:

  • Create stand-alone Spring applications,創建獨立的Spring應用程序
  • Embed Tomcat, Jetty or Undertow directly (no need to deploy WAR files),內嵌Tomcat, Jetty或Undertow,不需要部署WAR包
  • Provide opinionated 'starter' POMs to simplify your Maven configuration,提供startet POMs,以簡化Maven配置
  • Automatically configure Spring whenever possible,任何時候都可以自動配置Spring
  • Provide production-ready features such as metrics, health checks and externalized configuration,提供產品級特征,例如矩陣、健康檢查以及外部化配置
  • Absolutely?no code generation?and?no requirement for XML?configuratio,絕對沒有代碼生成,以及不需要XML配置

有上面這幾條就已經足夠吸引人了。其他的不用做太多的介紹,直接從代碼來看Spring Boot的配置是多么的easy。

三、開發環境

在開發之前,首先交代一下開發環境:

IDE選用IntelliJ IDEA 2016,Spring Tool Suite也是一個好的選擇。

JDK使用JDK8。

就這些,不用Tomcat(Spring Boot內嵌),不用Maven(IDEA內嵌)。

四、開始開發Spring Boot應用

4.1 生成初始項目

創建項目的方法有兩種,一種是使用官方的SPRING INITIALIZR,另一種是利用IDEA。

4.1.1 使用Spring Initializr生成初始項目

打開?http://start.spring.io/,如下圖所示

填寫好項目名,所需依賴后(目前只使用Web和JPA,數據庫暫時使用內存數據庫H2,方便演示),點擊生成項目,會生成一個zip包,這就是你的原始項目,解壓到指定目錄,使用IDEA打開pom.xml:

IDEA會自動下載所有的依賴,這樣原始的項目就配置完成了:

4.1.2 使用IDEA生成初始項目

這個過程其實和1.1類似,相當于1.1的本地版本。

打開IDEA,新建項目,選擇Spring Initializr,點擊Next:

填寫項目名,Next:

選擇Web、JPA和H2,Next,Finish。

這樣就生成了一個和1.1一樣的項目。

4.2 開發第一個Spring Restful服務

4.2.1 任務詳情

打開?https://spring.io/guides,可以看到Spring官網提供的一些例程,一個例程大約15~30分鐘的時間:

選擇第一個例程,需要做的如下:

請求 :

http://localhost:8080/greeting

返回:

{"id":1,"content":"Hello, World!"}

請求:

http://localhost:8080/greeting?name=Gaussic

返回:

{"id":1,"content":"Hello, Gaussic!"}

我們需要做的是,發送一個請求,返回JSON格式的數據。Spring-Boot-Web整合了Spring MVC的配置,我們將利用Spring MVC來開發一個簡單的Restful服務。

4.2.2 開發

創建model

首先新建一個Greeting類,這是一個POJO,在mvc框架中稱之為model,用以保存數據:

package com.gaussic;/*** Created by gaussic on 11/4/2016.* model*/
public class Greeting {private final long id;private final String content;public Greeting(long id, String content) {this.id = id;this.content = content;}public long getId() {return id;}public String getContent() {return content;}
}

創建 controller

controller在mvc框架中是控制層,?它會解析瀏覽器的請求,并做特定地處理。由于我們需要開發一個簡單的Restful API,Spring MVC提供了簡單的?@RestController?注解,來標明某個類是一個 Restful Controller,簡化Controller的配置,如下:

package com.gaussic;import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.bind.annotation.RestController;import java.util.concurrent.atomic.AtomicLong;/*** Created by gaussic on 11/4/2016.* controller*/@RestController
public class GreetingController {private static final String template = "Hello, %s!";  // content 模板private final AtomicLong counter = new AtomicLong();  // 自動生成 id@RequestMapping("/greeting")public Greeting greeting(@RequestParam(value = "name", defaultValue = "World") String name) {return new Greeting(counter.incrementAndGet(),    // 自增String.format(template, name) // content模板);}
}

在運行之前,先解釋一下這段代碼。

首先,@RestController注解規定了GreetingController是一個Restful API的控制器,只返回API相關的數據,如果是普通的@Controller注解,如果在方法上不做特殊的配置,將默認返回一個視圖(關于視圖在后面會提及)。

其次,@RequestMapping("/greeting")是一個請求映射,當瀏覽器訪問 http://localhost:8080/greeting,是,將會轉入這個方法進行處理。

@RequestParam用于獲取該請求的參數,當瀏覽器訪問 http://localhost:8080/greeting?name=Gaussic是,將會把參數的值寫入name中,此處默認值是World,如果不設置默認值且不傳遞參數,將會報錯。

特別要注意的是,這個方法直接返回了一個Greeting對象,官方的解釋是:

As you see in steps below, Spring uses the?Jackson JSON?library to automatically marshal instances of type?Greeting?into JSON.

也就是說,Spring會使用Jackson JSON庫自動地將這個Greeting對象轉化為JSON并返回。這一點非常強大,而且在編寫API時是非常有作用的。

4.3 運行Spring Boot

現在所有的開發已經完成,在IDEA中運行Spring Boot非常簡單,點擊右上角的箭頭即可:

在瀏覽器中訪問 http://localhost:8080/greeting,返回json格式數據,刷新之后id會自增:

傳入參數name,將返回新的數據:

這樣,一個簡單的Restful Service開發完成了。

如果需要在外部運行,需要將應用打成jar包。在此可以使用IDEA內部集成的maven進行打包,

點擊右端的 Maven Projects,先選擇 clean,再選擇 package,將會在target文件夾下生成一個.jar文件。

現在,使用:

java -jar target/springblog-0.0.1-SNAPSHOT.jar

運行即可。

轉載請注明出處:Gaussic(自動問答)


版权声明:本站所有资料均为网友推荐收集整理而来,仅供学习和研究交流使用。

原文链接:https://hbdhgg.com/4/185319.html

发表评论:

本站为非赢利网站,部分文章来源或改编自互联网及其他公众平台,主要目的在于分享信息,版权归原作者所有,内容仅供读者参考,如有侵权请联系我们删除!

Copyright © 2022 匯編語言學習筆記 Inc. 保留所有权利。

底部版权信息