Spring Boot - Komponen Servis
Komponen Layanan adalah file kelas yang berisi penjelasan @Service. File kelas ini digunakan untuk menulis logika bisnis di lapisan yang berbeda, dipisahkan dari file kelas @RestController. Logika untuk membuat file kelas komponen layanan ditampilkan di sini -
public interface ProductService {
}
Kelas yang mengimplementasikan Antarmuka dengan anotasi @Service adalah seperti yang ditunjukkan -
@Service
public class ProductServiceImpl implements ProductService {
}
Perhatikan bahwa dalam tutorial ini, kami menggunakan Product Service API(s)untuk menyimpan, mengambil, memperbarui dan menghapus produk. Kami menulis logika bisnis di file kelas @RestController itu sendiri. Sekarang, kita akan memindahkan kode logika bisnis dari pengontrol ke komponen layanan.
Anda dapat membuat Antarmuka yang berisi metode tambah, edit, dapatkan, dan hapus menggunakan kode seperti yang ditunjukkan di bawah ini -
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();
}
Kode berikut akan memungkinkan Anda membuat kelas yang mengimplementasikan antarmuka ProductService dengan anotasi @Service dan menulis logika bisnis untuk menyimpan, mengambil, menghapus, dan memperbarui produk.
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();
}
}
Kode di sini menunjukkan file kelas Rest Controller, di sini kami @Autowired antarmuka ProductService dan memanggil metode.
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);
}
}
Kode untuk kelas POJO - Product.java ditampilkan di sini -
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;
}
}
Aplikasi Spring Boot utama diberikan di bawah ini -
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);
}
}
Kode untuk Maven build - pom.xml ditunjukkan di bawah ini -
<?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>
Kode untuk Gradle Build - build.gradle ditunjukkan di bawah ini -
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')
}
Anda dapat membuat file JAR yang dapat dieksekusi, dan menjalankan aplikasi Spring Boot dengan menggunakan perintah Maven atau Gradle yang diberikan di bawah ini -
Untuk Maven, gunakan perintah seperti yang ditunjukkan di bawah ini -
mvn clean install
Setelah “BUILD SUCCESS”, Anda dapat menemukan file JAR di bawah direktori target.
Untuk Gradle, Anda dapat menggunakan perintah seperti yang ditunjukkan di bawah ini -
gradle clean build
Setelah "BUILD SUCCESSFUL", Anda dapat menemukan file JAR di bawah direktori build / libs.
Jalankan file JAR dengan menggunakan perintah yang diberikan di bawah ini -
java –jar <JARFILE>
Sekarang, aplikasi telah dimulai pada port Tomcat 8080 seperti yang ditunjukkan pada gambar di bawah ini -
Sekarang tekan URL di bawah ini dalam aplikasi POSTMAN dan Anda dapat melihat hasilnya seperti yang ditunjukkan di bawah ini -
URL GET API adalah - http://localhost:8080/products
URL API POS adalah - http://localhost:8080/products
URL PUT API adalah - http://localhost:8080/products/3
DELETE API URL adalah - http://localhost:8080/products/3