777精品出轨人妻国产,熟女av人妻一区二区三四区,国产精品无码中文在线av,美脚パンスト女教师在线观看

2022就業季|Spring認證教你,如何使用 Spring 構建 REST 服務

原創 收藏 評論
舉報 2022-07-28

REST 已迅速成為在 Web 上構建 Web 服務的事實標準,因為它們易于構建且易于使用。

關于 REST 如何適應微服務世界還有一個更大的討論,但是——對于本教程——讓我們看看構建 RESTful 服務。

為什么是 REST?REST 包含 Web 的規則,包括其架構、優勢和其他一切。這并不奇怪,因為它的作者 Roy Fielding 參與了十幾個管理網絡運行方式的規范。

有什么好處?Web 及其核心協議 HTTP 提供了一系列功能:

合適的行動 ( GET, POST, PUT, DELETE, ...)

緩存

重定向和轉發

安全性(加密和身份驗證)

這些都是構建彈性服務的關鍵因素。但這還不是全部。網絡是由許多微小的規范構成的,因此它能夠輕松發展,而不會陷入“標準戰爭”的泥潭。

開發人員能夠利用 3rd 方工具包來實現這些不同的規范,并立即讓客戶端和服務器技術觸手可及。

通過在 HTTP 之上構建,REST API 提供了構建方法:

向后兼容的 API

可演進的 API

可擴展的服務

安全的服務

一系列無狀態服務到有狀態服務

重要的是要意識到,無論多么普遍,REST本身并不是一種標準,而是一種方法、一種風格、一組對您的架構的約束,可以幫助您構建 Web 規模的系統。在本教程中,我們將使用 Spring 產品組合來構建 RESTful 服務,同時利用 REST 的無堆棧特性。

入門

在完成本教程時,我們將使用Spring Boot。轉到Spring Initializr并將以下依賴項添加到項目中:

網絡

JPA

H2

將名稱更改為“工資單”,然后選擇“生成項目”。A.zip會下載。解壓它。在里面你會發現一個簡單的、基于 Maven 的項目,包括一個pom.xml構建文件(注意:你可以使用 Gradle。本教程中的示例將基于 Maven。)

Spring Boot 可以與任何 IDE 一起使用。您可以使用 Eclipse、IntelliJ IDEA、Netbeans 等。Spring Tool Suite是一個開源的、基于 Eclipse 的 IDE 發行版,它提供了 Eclipse 的 Java EE 發行版的超集。它包括使使用 Spring 應用程序更加容易的功能。這絕不是必需的。但是,如果您想要為您的擊鍵帶來額外的魅力,請考慮一下。

到目前為止的故事……

讓我們從我們能構建的最簡單的東西開始。事實上,為了盡可能簡單,我們甚至可以省略 REST 的概念。(稍后,我們將添加 REST 以了解差異。)

大圖:我們將創建一個簡單的工資單服務來管理公司的員工。我們將員工對象存儲在(H2 內存中)數據庫中,并訪問它們(通過稱為JPA的東西)。然后我們將使用允許通過 Internet 訪問的東西(稱為 Spring MVC層)包裝它。

以下代碼在我們的系統中定義了一個 Employee。

nonrest/src/main/java/payroll/Employee.java

package payroll;

import java.util.Objects;

import javax.persistence.Entity;

import javax.persistence.GeneratedValue;

import javax.persistence.Id;

@Entity

class Employee {

private @Id @GeneratedValue Long id;

private String name;

private String role;

Employee() {}

Employee(String name, String role) {

this.name = name;

this.role = role;

}

public Long getId() {

return this.id;

}

public String getName() {

return this.name;

}

public String getRole() {

return this.role;

}

public void setId(Long id) {

this.id = id;

}

public void setName(String name) {

this.name = name;

}

public void setRole(String role) {

this.role = role;

}

@Override

public boolean equals(Object o) {

if (this == o)

return true;

if (!(o instanceof Employee))

return false;

Employee employee = (Employee) o;

return Objects.equals(this.id, employee.id) && Objects.equals(this.name, employee.name)

&& Objects.equals(this.role, employee.role);

}

@Override

public int hashCode() {

return Objects.hash(this.id, this.name, this.role);

}

@Override

public String toString() {

return "Employee{" + "id=" + this.id + ", name='" + this.name + '\'' + ", role='" + this.role + '\'' + '}';

}

}

盡管很小,但這個 Java 類包含很多:

@Entity是一個 JPA 注釋,用于使該對象準備好存儲在基于 JPA 的數據存儲中。

id, name, 和role是我們的 Employee域對象的屬性。id用更多的 JPA 注釋標記以指示它是主鍵并由 JPA 提供程序自動填充。

當我們需要創建一個新實例但還沒有 id 時,會創建一個自定義構造函數。

有了這個域對象定義,我們現在可以轉向Spring Data JPA來處理繁瑣的數據庫交互。

Spring Data JPA 存儲庫是與支持針對后端數據存儲創建、讀取、更新和刪除記錄的方法的接口。在適當的情況下,一些存儲庫還支持數據分頁和排序。Spring Data 根據接口中方法命名中的約定來綜合實現。

除了 JPA 之外,還有多個存儲庫實現。您可以使用 Spring Data MongoDB、Spring Data GemFire、Spring Data Cassandra 等。對于本教程,我們將堅持使用 JPA。

Spring 使訪問數據變得容易。通過簡單地聲明以下EmployeeRepository接口,我們將能夠自動

創建新員工

更新現有的

刪除員工

查找員工(一個、全部或按簡單或復雜屬性搜索)

nonrest/src/main/java/payroll/EmployeeRepository.java

package payroll;

import org.springframework.data.jpa.repository.JpaRepository;

interface EmployeeRepository extends JpaRepository<Employee, Long> {

}

為了獲得所有這些免費功能,我們所要做的就是聲明一個擴展 Spring Data JPA 的接口,JpaRepository將域類型指定為Employeeid 類型Long。

Spring Data 的存儲庫解決方案可以回避數據存儲細節,而是使用特定于域的術語解決大多數問題。

信不信由你,這足以啟動應用程序!Spring Boot 應用程序至少是一個public static void main入口點和@SpringBootApplication注解。這告訴 Spring Boot 盡可能提供幫助。

nonrest/src/main/java/payroll/PayrollApplication.java

package payroll;

import org.springframework.boot.SpringApplication;

import org.springframework.boot.autoconfigure.SpringBootApplication;

@SpringBootApplication

public class PayrollApplication {

public static void main(String... args) {

SpringApplication.run(PayrollApplication.class, args);

}

}

@SpringBootApplication是一個引入組件掃描、自動配置和屬性支持的元注釋。在本教程中,我們不會深入探討 Spring Boot 的細節,但本質上,它將啟動一個 servlet 容器并提供我們的服務。

然而,沒有數據的應用程序不是很有趣,所以讓我們預加載它。Spring 將自動加載以下類:

nonrest/src/main/java/payroll/LoadDatabase.java

package payroll;

import org.slf4j.Logger;

import org.slf4j.LoggerFactory;

import org.springframework.boot.CommandLineRunner;

import org.springframework.context.annotation.Bean;

import org.springframework.context.annotation.Configuration;

@Configuration

class LoadDatabase {

private static final Logger log = LoggerFactory.getLogger(LoadDatabase.class);

@Bean

CommandLineRunner initDatabase(EmployeeRepository repository) {

return args -> {

log.info("Preloading " + repository.save(new Employee("Bilbo Baggins", "burglar")));

log.info("Preloading " + repository.save(new Employee("Frodo Baggins", "thief")));

};

}

}

加載時會發生什么?

CommandLineRunner加載應用程序上下文后,Spring Boot 將運行所有bean。

此運行程序將請求EmployeeRepository您剛剛創建的副本。

使用它,它將創建兩個實體并存儲它們。

右鍵單擊并運行 PayRollApplication,這就是你得到的:

顯示數據預加載的控制臺輸出片段

...2018-08-09 11:36:26.169 INFO 74611 --- [main] payroll.LoadDatabase:預加載員工(id=1,name=Bilbo Baggins,角色=竊賊)2018-08-09 11:36:26.174 INFO 74611 --- [main] payroll.LoadDatabase:預加載員工(id=2,name=Frodo Baggins,role=thief)...

這不是整個日志,而只是預加載數據的關鍵部分。(確實,檢查整個控制臺。這太棒了。)

.......未完待續......

#java##spring##spring認證##2022就業季#

以上就是今天關于Spring的一些討論,對你有幫助嗎?如果你有興趣深入了解,歡迎到Spring中國教育管理中心留言交流!


本文系作者授權數英發表,內容為作者獨立觀點,不代表數英立場。
轉載請在文章開頭和結尾顯眼處標注:作者、出處和鏈接。不按規范轉載侵權必究。
本文系作者授權數英發表,內容為作者獨立觀點,不代表數英立場。
未經授權嚴禁轉載,授權事宜請聯系作者本人,侵權必究。
本內容為作者獨立觀點,不代表數英立場。
本文禁止轉載,侵權必究。
本文系數英原創,未經允許不得轉載。
授權事宜請至數英微信公眾號(ID: digitaling) 后臺授權,侵權必究。

    評論

    文明發言,無意義評論將很快被刪除,異常行為可能被禁言
    DIGITALING
    登錄后參與評論

    評論

    文明發言,無意義評論將很快被刪除,異常行為可能被禁言
    800

    推薦評論

    暫無評論哦,快來評論一下吧!

    全部評論(0條)

    主站蜘蛛池模板: 金塔县| 神池县| 贵南县| 汉寿县| 哈尔滨市| 宁海县| 闵行区| 兴义市| 改则县| 海林市| 财经| 和平县| 靖西县| 乌拉特中旗| 金山区| 饶平县| 雷州市| 长治县| 山阳县| 长岭县| 永德县| 佛教| 泌阳县| 兴业县| 城步| 定西市| 新乐市| 星座| 巴青县| 瑞丽市| 泰顺县| 开封市| 扎鲁特旗| 龙山县| 女性| 苗栗县| 诸暨市| 和政县| 上栗县| 会同县| 浑源县|