最美情侣中文字幕电影,在线麻豆精品传媒,在线网站高清黄,久久黄色视频

歡迎光臨散文網(wǎng) 會(huì)員登陸 & 注冊

Spring Boot 教程:服務(wù)組件

2020-09-04 19:16 作者:信碼由韁  | 我要投稿

【注】本文譯自: https://www.tutorialspoint.com/spring_boot/spring_boot_service_components.htm

? ? 服務(wù)組件是包含?@Service 注解的類文件。這些類文件可用在與?@RestController 類文件所不同的層來編寫業(yè)務(wù)邏輯。創(chuàng)建服務(wù)組件類文件如下所示:

public?interface?ProductService?{

}

? ? 以?@Service 注解實(shí)現(xiàn)接口的類如下所示:

@Service

public?class?ProductServiceImpl?implements?ProductService?{

}

? ? 回顧以前的教程中,我們使用產(chǎn)品服務(wù) API(s) 來存儲(chǔ)、獲取、更新和刪除產(chǎn)品。我們在 @RestController 類文件自身中編寫業(yè)務(wù)邏輯。現(xiàn)在我們要把業(yè)務(wù)邏輯代碼從控制器移到服務(wù)組件。

? ? 你可以創(chuàng)建一個(gè)接口,包含增加、編輯、獲取和刪除方法,示例代碼如下:

package?com.tutorialspoint.demo.service;

import?java.util.Collection;

import?com.tutorialspoint.demo.model.Product;

public?interface?ProductService?{

???public?abstract?void?createProduct(Product?product);

???public?abstract?void?updateProduct(String?id,?Product?product);

???public?abstract?void?deleteProduct(String?id);

???public?abstract?Collection<Product>?getProducts();

}

? ? 以下代碼將讓你創(chuàng)建一個(gè)以 @Service 注解來實(shí)現(xiàn)?ProductService 接口的類,用以編寫存儲(chǔ)、獲取、刪除和更新產(chǎn)品。

package?com.tutorialspoint.demo.service;

import?java.util.Collection;

import?java.util.HashMap;

import?java.util.Map;

import?org.springframework.stereotype.Service;

import?com.tutorialspoint.demo.model.Product;

@Service

public?class?ProductServiceImpl?implements?ProductService?{

???private?static?Map<String,?Product>?productRepo?=?new?HashMap<>();

???static?{

??????Product?honey?=?new?Product();

??????honey.setId("1");

??????honey.setName("Honey");

??????productRepo.put(honey.getId(),?honey);

??????Product?almond?=?new?Product();

??????almond.setId("2");

??????almond.setName("Almond");

??????productRepo.put(almond.getId(),?almond);

???}

???@Override

???public?void?createProduct(Product?product)?{

??????productRepo.put(product.getId(),?product);

???}

???@Override

???public?void?updateProduct(String?id,?Product?product)?{

??????productRepo.remove(id);

??????product.setId(id);

??????productRepo.put(id,?product);

???}

???@Override

???public?void?deleteProduct(String?id)?{

??????productRepo.remove(id);

???}

???@Override

???public?Collection<Product>?getProducts()?{

??????return?productRepo.values();

???}

}

? ? 以里的代碼展示了?Rest Controller 類文件,我們用 @Autowired 來自動(dòng)注入 ProductService 接口并調(diào)用其方法。

package?com.tutorialspoint.demo.controller;

import?org.springframework.beans.factory.annotation.Autowired;

import?org.springframework.http.HttpStatus;

import?org.springframework.http.ResponseEntity;

import?org.springframework.web.bind.annotation.PathVariable;

import?org.springframework.web.bind.annotation.RequestBody;

import?org.springframework.web.bind.annotation.RequestMapping;

import?org.springframework.web.bind.annotation.RequestMethod;

import?org.springframework.web.bind.annotation.RestController;

import?com.tutorialspoint.demo.model.Product;

import?com.tutorialspoint.demo.service.ProductService;

@RestController

public?class?ProductServiceController?{

???@Autowired

???ProductService?productService;

???@RequestMapping(value?=?"/products")

???public?ResponseEntity<Object>?getProduct()?{

??????return?new?ResponseEntity<>(productService.getProducts(),?HttpStatus.OK);

???}

???@RequestMapping(value?=?"/products/{id}",?method?=?RequestMethod.PUT)

???public?ResponseEntity<Object>?

??????updateProduct(@PathVariable("id")?String?id,?@RequestBody?Product?product)?{

??????

??????productService.updateProduct(id,?product);

??????return?new?ResponseEntity<>("Product?is?updated?successsfully",?HttpStatus.OK);

???}

???@RequestMapping(value?=?"/products/{id}",?method?=?RequestMethod.DELETE)

???public?ResponseEntity<Object>?delete(@PathVariable("id")?String?id)?{

??????productService.deleteProduct(id);

??????return?new?ResponseEntity<>("Product?is?deleted?successsfully",?HttpStatus.OK);

???}

???@RequestMapping(value?=?"/products",?method?=?RequestMethod.POST)

???public?ResponseEntity<Object>?createProduct(@RequestBody?Product?product)?{

??????productService.createProduct(product);

??????return?new?ResponseEntity<>("Product?is?created?successfully",?HttpStatus.CREATED);

???}

}

? ??POJO class – Product.java 代碼在此:

package?com.tutorialspoint.demo.model;


public?class?Product?{

???private?String?id;

???private?String?name;

???public?String?getId()?{

??????return?id;

???}

???public?void?setId(String?id)?{

??????this.id?=?id;

???}

???public?String?getName()?{

??????return?name;

???}

???public?void?setName(String?name)?{

??????this.name?=?name;

???}

}

? ?主?Spring Boot 應(yīng)用如下:

package?com.tutorialspoint.demo;

import?org.springframework.boot.SpringApplication;

import?org.springframework.boot.autoconfigure.SpringBootApplication;

@SpringBootApplication

public?class?DemoApplication?{

???public?static?void?main(String[]?args)?{

??????SpringApplication.run(DemoApplication.class,?args);

???}

}

? ??Maven build – pom.xml 代碼如下所示:

<?xml?version?=?"1.0"?encoding?=?"UTF-8"?>

<project?xmlns?=?"http://maven.apache.org/POM/4.0.0"?

???xmlns:xsi?=?"http://www.w3.org/2001/XMLSchema-instance"

???xsi:schemaLocation?=?"http://maven.apache.org/POM/4.0.0?

???http://maven.apache.org/xsd/maven-4.0.0.xsd">

???

???<modelVersion>4.0.0</modelVersion>

???<groupId>com.tutorialspoint</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>1.5.8.RELEASE</version>

??????<relativePath/>?

???</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>

???<dependencies>

??????<dependency>

?????????<groupId>org.springframework.boot</groupId>

?????????<artifactId>spring-boot-starter-web</artifactId>

??????</dependency>

??????<dependency>

?????????<groupId>org.springframework.boot</groupId>

?????????<artifactId>spring-boot-starter-test</artifactId>

?????????<scope>test</scope>

??????</dependency>

???</dependencies>

???<build>

??????<plugins>

?????????<plugin>

????????????<groupId>org.springframework.boot</groupId>

????????????<artifactId>spring-boot-maven-plugin</artifactId>

?????????</plugin>

??????</plugins>

???</build>

</project>

? ??Gradle Build – build.gradle 代碼如下:

buildscript?{

???ext?{

??????springBootVersion?=?'1.5.8.RELEASE'

???}

???repositories?{

??????mavenCentral()

???}

???dependencies?{

??????classpath("org.springframework.boot:spring-boot-gradle-plugin:${springBootVersion}")

???}

}

apply?plugin:?'java'

apply?plugin:?'eclipse'

apply?plugin:?'org.springframework.boot'

group?=?'com.tutorialspoint'

version?=?'0.0.1-SNAPSHOT'

sourceCompatibility?=?1.8

repositories?{

???mavenCentral()

}

dependencies?{

???compile('org.springframework.boot:spring-boot-starter-web')

???testCompile('org.springframework.boot:spring-boot-starter-test')

}

? ?現(xiàn)在你可以使用 Maven 或 Gradle 命令創(chuàng)建可執(zhí)行?executable JAR 文件并運(yùn)行 Spring Boot 應(yīng)用了:

? ?Maven 命令如下:

mvn clean install

? ?在 “BUILD SUCCESS” 之后,你可以在 target 目錄下找到 JAR 文件。

? ?Gradle 可以使用以下命令:

gradle clean build

? ?在 “BUILD SUCCESSFUL” 之后,你可以在?build/libs 目錄下找到?JAR 文件。

? ?現(xiàn)在,使用以下命令運(yùn)行 JAR 文件:

java –jar <JARFILE>

? ?應(yīng)用將在?Tomcat 8080 端口啟動(dòng),如下圖所示:

? ?現(xiàn)在在 POSTMAN 應(yīng)用中輸入以下 URL,可以看到下圖所示的輸出:

? ??GET API URL 為:?http://localhost:8080/products

? ??POST API URL 為:?http://localhost:8080/products

? ??PUT API URL 為:?http://localhost:8080/products/3

? ??DELETE API URL 為:?http://localhost:8080/products/3


Spring Boot 教程:服務(wù)組件的評論 (共 條)

分享到微博請遵守國家法律
广河县| 建德市| 安图县| 沧源| 垣曲县| 巢湖市| 沈阳市| 剑河县| 达日县| 游戏| 双峰县| 汝南县| 仪征市| 和龙市| 蕉岭县| 枣强县| 肥乡县| 邮箱| 绥棱县| 南部县| 迁西县| 斗六市| 黔西| 渝北区| 淮滨县| 乐亭县| 鞍山市| 手游| 伊川县| 团风县| 灵璧县| 常山县| 日照市| 乡宁县| 中方县| 拉萨市| 龙川县| 伊金霍洛旗| 晋州市| 临湘市| 甘谷县|