Spring Boot - Servicekomponenten

Servicekomponenten sind die Klassendateien, die die @ Service-Annotation enthalten. Diese Klassendateien werden verwendet, um Geschäftslogik in einer anderen Schicht zu schreiben, die von der @ RestController-Klassendatei getrennt ist. Die Logik zum Erstellen einer Servicekomponenten-Klassendatei wird hier gezeigt -

public interface ProductService {
}

Die Klasse, die die Schnittstelle mit @ Service-Annotation implementiert, ist wie folgt:

@Service
public class ProductServiceImpl implements ProductService {
}

Beachten Sie, dass wir in diesem Tutorial verwenden Product Service API(s)zum Speichern, Abrufen, Aktualisieren und Löschen der Produkte. Wir haben die Geschäftslogik in die @ RestController-Klassendatei selbst geschrieben. Jetzt verschieben wir den Geschäftslogikcode vom Controller zur Servicekomponente.

Mit dem folgenden Code können Sie eine Schnittstelle erstellen, die Methoden zum Hinzufügen, Bearbeiten, Abrufen und Löschen enthält.

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();
}

Mit dem folgenden Code können Sie eine Klasse erstellen, die die ProductService-Schnittstelle mit @ Service-Annotation implementiert, und die Geschäftslogik schreiben, um das Produkt zu speichern, abzurufen, zu löschen und zu aktualisieren.

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();
   }
}

Der Code hier zeigt die Rest Controller-Klassendatei, hier haben wir die ProductService-Schnittstelle @Autowired und die Methoden aufgerufen.

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);
   }
}

Der Code für die POJO-Klasse - Product.java wird hier angezeigt -

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;
   }
}

Eine Hauptanwendung für Spring Boot finden Sie unten -

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);
   }
}

Der Code für Maven build - pom.xml wird unten angezeigt -

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

Der Code für Gradle Build - build.gradle wird unten angezeigt -

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')
}

Sie können eine ausführbare JAR-Datei erstellen und die Spring Boot-Anwendung mit den unten angegebenen Maven- oder Gradle-Befehlen ausführen.

Verwenden Sie für Maven den folgenden Befehl:

mvn clean install

Nach "BUILD SUCCESS" finden Sie die JAR-Datei im Zielverzeichnis.

Für Gradle können Sie den folgenden Befehl verwenden:

gradle clean build

Nach "BUILD SUCCESSFUL" finden Sie die JAR-Datei im Verzeichnis build / libs.

Führen Sie die JAR-Datei mit dem folgenden Befehl aus:

java –jar <JARFILE>

Jetzt wurde die Anwendung auf dem Tomcat-Port 8080 gestartet (siehe Abbildung unten).

Klicken Sie nun in der POSTMAN-Anwendung auf die folgenden URLs und Sie können die Ausgabe wie unten gezeigt sehen -

GET API URL ist - http://localhost:8080/products

POST API URL ist - http://localhost:8080/products

PUT API URL ist - http://localhost:8080/products/3

DELETE API URL ist - http://localhost:8080/products/3