এই গাইডে, আমরা Spring Boot ফ্রেমওয়ার্ক ব্যবহার করে একটি Complex Application তৈরি করব যা JSON ডেটা এক্সচেঞ্জ করবে। আমাদের অ্যাপ্লিকেশনটি একটি Product Management System হবে, যেখানে আমরা Product সম্পর্কিত CRUD (Create, Read, Update, Delete) অপারেশন করতে পারব এবং JSON রেসপন্স পাব।
প্রয়োজনীয় সরঞ্জাম:
- JDK (Java Development Kit)
- Spring Boot (Spring Initializr ব্যবহার করে প্রকল্প তৈরি)
- Maven (ডিপেনডেন্সি ম্যানেজমেন্ট)
- IDE (যেমন IntelliJ IDEA, Eclipse)
- Postman বা Brave (API টেস্ট করার জন্য)
1. Spring Boot প্রজেক্ট তৈরি করা
প্রথমে, Spring Initializr ব্যবহার করে একটি Spring Boot প্রজেক্ট তৈরি করুন:
- URL: https://start.spring.io
- প্রজেক্ট টেমপ্লেট নির্বাচন করুন:
- Project: Maven Project
- Language: Java
- Spring Boot: (সবচেয়ে সাম্প্রতিক ভার্সন)
- Project Metadata:
- Group:
com.example - Artifact:
productmanagement - Name:
productmanagement - Description:
A product management system with JSON response - Package Name:
com.example.productmanagement - Packaging: Jar
- Java: 11 বা 17
- Group:
- Dependencies:
- Spring Web
- Spring Data JPA
- H2 Database (ডেমো ডাটাবেস হিসেবে)
- Lombok (কোড কমপ্যাক্ট করার জন্য)
এটি একটি ZIP ফাইল ডাউনলোড করবে। ফাইলটি আনজিপ করুন এবং আপনার পছন্দের IDE তে খুলুন।
2. Product Entity (Model Class) তৈরি করা
আমরা Product নামক একটি Entity তৈরি করব যাতে প্রতিটি প্রোডাক্টের id, name, description, এবং price থাকবে। আমরা JPA ব্যবহার করব ডেটাবেসের সাথে ইন্টারঅ্যাক্ট করতে।
Product.java ফাইল তৈরি করুন:
package com.example.productmanagement.model;
import javax.persistence.Entity;
import javax.persistence.Id;
@Entity
public class Product {
@Id
private Long id;
private String name;
private String description;
private Double price;
// Constructors
public Product(Long id, String name, String description, Double price) {
this.id = id;
this.name = name;
this.description = description;
this.price = price;
}
// Getters and Setters
public Long getId() {
return id;
}
public void setId(Long id) {
this.id = id;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public String getDescription() {
return description;
}
public void setDescription(String description) {
this.description = description;
}
public Double getPrice() {
return price;
}
public void setPrice(Double price) {
this.price = price;
}
}
এখানে:
- Product ক্লাসের মধ্যে
id,name,description, এবংpriceপ্রপার্টি রয়েছে। @Entityঅ্যানোটেশন দিয়ে এটি একটি JPA Entity হিসেবে চিহ্নিত করা হয়েছে, যা ডাটাবেস টেবিলের সাথে সম্পর্কিত হবে।
3. Product Repository তৈরি করা
Spring Data JPA ব্যবহার করে আমরা একটি Repository তৈরি করব যা ডেটাবেসে প্রোডাক্ট ডেটা CRUD অপারেশন করবে।
ProductRepository.java ফাইল তৈরি করুন:
package com.example.productmanagement.repository;
import com.example.productmanagement.model.Product;
import org.springframework.data.jpa.repository.JpaRepository;
public interface ProductRepository extends JpaRepository<Product, Long> {
}
এখানে:
ProductRepositoryএকটি JpaRepository যাProductEntity-কে পরিচালনা করবে।- এটি CRUD অপারেশনগুলো সরাসরি পাবলিকভাবে উপলব্ধ করবে, যেমন
findAll(),save(),deleteById()ইত্যাদি।
4. Product Controller তৈরি করা
এখন একটি REST Controller তৈরি করি যা HTTP রিকোয়েস্টের মাধ্যমে Product সম্পর্কিত CRUD অপারেশনগুলো পরিচালনা করবে।
ProductController.java ফাইল তৈরি করুন:
package com.example.productmanagement.controller;
import com.example.productmanagement.model.Product;
import com.example.productmanagement.repository.ProductRepository;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.*;
import java.util.List;
@RestController
@RequestMapping("/products")
public class ProductController {
@Autowired
private ProductRepository productRepository;
// Create a new product
@PostMapping
public Product createProduct(@RequestBody Product product) {
return productRepository.save(product);
}
// Get all products
@GetMapping
public List<Product> getAllProducts() {
return productRepository.findAll();
}
// Get product by ID
@GetMapping("/{id}")
public Product getProductById(@PathVariable Long id) {
return productRepository.findById(id).orElse(null);
}
// Update product by ID
@PutMapping("/{id}")
public Product updateProduct(@PathVariable Long id, @RequestBody Product product) {
if (!productRepository.existsById(id)) {
return null;
}
product.setId(id);
return productRepository.save(product);
}
// Delete product by ID
@DeleteMapping("/{id}")
public void deleteProduct(@PathVariable Long id) {
productRepository.deleteById(id);
}
}
এখানে:
- GET
/products: সমস্ত প্রোডাক্টের তালিকা ফিরিয়ে দেয়। - POST
/products: নতুন প্রোডাক্ট তৈরি করে। - GET
/products/{id}: নির্দিষ্ট একটি প্রোডাক্টের ডেটা ফিরিয়ে দেয়। - PUT
/products/{id}: একটি প্রোডাক্ট আপডেট করে। - DELETE
/products/{id}: একটি প্রোডাক্ট ডিলিট করে।
5. Spring Boot Application শুরু করা
এখন, আপনার Spring Boot অ্যাপ্লিকেশনটি চালু করতে ProductmanagementApplication.java ক্লাসে main() মেথড রান করুন।
package com.example.productmanagement;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
@SpringBootApplication
public class ProductmanagementApplication {
public static void main(String[] args) {
SpringApplication.run(ProductmanagementApplication.class, args);
}
}
এখন, অ্যাপ্লিকেশনটি localhost:8080 তে চলে আসবে।
6. JSON রেসপন্স পরীক্ষা করা
এখন Postman বা ব্রাউজার ব্যবহার করে আমাদের API পরীক্ষা করতে পারি।
1. GET রিকোয়েস্ট:
GET http://localhost:8080/products
JSON রেসপন্স:
[
{
"id": 1,
"name": "Laptop",
"description": "High performance laptop",
"price": 1000.0
},
{
"id": 2,
"name": "Smartphone",
"description": "Latest model smartphone",
"price": 500.0
}
]
2. POST রিকোয়েস্ট:
POST http://localhost:8080/products
Content-Type: application/json
{
"name": "Headphones",
"description": "Noise cancelling headphones",
"price": 150.0
}
JSON রেসপন্স:
{
"id": 3,
"name": "Headphones",
"description": "Noise cancelling headphones",
"price": 150.0
}
3. PUT রিকোয়েস্ট:
PUT http://localhost:8080/products/1
Content-Type: application/json
{
"name": "Laptop Pro",
"description": "Updated high performance laptop",
"price": 1200.0
}
JSON রেসপন্স:
{
"id": 1,
"name": "Laptop Pro",
"description": "Updated high performance laptop",
"price": 1200.0
}
4. DELETE রিকোয়েস্ট:
DELETE http://localhost:8080/products/1
সারাংশ
এই গাইডে, আমরা Spring Boot ব্যবহার করে একটি Product Management System তৈরি করেছি, যেখানে JSON ডেটা রেসপন্স প্রদান করা হয়েছে। এই অ্যাপ্লিকেশনটি:
- Product Entity তৈরি করেছে।
- CRUD অপারেশন সম্পাদন করার জন্য REST Controller তৈরি করেছে।
- Postman ব্যবহার করে API টেস্ট করা হয়েছে।
এটি একটি সাধারণ উদাহরণ, যা Spring Boot এবং JSON এর সাহায্যে একটি complex অ্যাপ্লিকেশন তৈরি করার জন্য সহায়ক হতে পারে।
Practical উদাহরণ: JSON সহ Complex Application তৈরি (Spring Boot)
এই গাইডে, আমরা Spring Boot ফ্রেমওয়ার্ক ব্যবহার করে একটি Complex Application তৈরি করব যা JSON ডেটা এক্সচেঞ্জ করবে। আমাদের অ্যাপ্লিকেশনটি একটি Product Management System হবে, যেখানে আমরা Product সম্পর্কিত CRUD (Create, Read, Update, Delete) অপারেশন করতে পারব এবং JSON রেসপন্স পাব।
প্রয়োজনীয় সরঞ্জাম:
- JDK (Java Development Kit)
- Spring Boot (Spring Initializr ব্যবহার করে প্রকল্প তৈরি)
- Maven (ডিপেনডেন্সি ম্যানেজমেন্ট)
- IDE (যেমন IntelliJ IDEA, Eclipse)
- Postman বা Brave (API টেস্ট করার জন্য)
1. Spring Boot প্রজেক্ট তৈরি করা
প্রথমে, Spring Initializr ব্যবহার করে একটি Spring Boot প্রজেক্ট তৈরি করুন:
- URL: https://start.spring.io
- প্রজেক্ট টেমপ্লেট নির্বাচন করুন:
- Project: Maven Project
- Language: Java
- Spring Boot: (সবচেয়ে সাম্প্রতিক ভার্সন)
- Project Metadata:
- Group:
com.example - Artifact:
productmanagement - Name:
productmanagement - Description:
A product management system with JSON response - Package Name:
com.example.productmanagement - Packaging: Jar
- Java: 11 বা 17
- Group:
- Dependencies:
- Spring Web
- Spring Data JPA
- H2 Database (ডেমো ডাটাবেস হিসেবে)
- Lombok (কোড কমপ্যাক্ট করার জন্য)
এটি একটি ZIP ফাইল ডাউনলোড করবে। ফাইলটি আনজিপ করুন এবং আপনার পছন্দের IDE তে খুলুন।
2. Product Entity (Model Class) তৈরি করা
আমরা Product নামক একটি Entity তৈরি করব যাতে প্রতিটি প্রোডাক্টের id, name, description, এবং price থাকবে। আমরা JPA ব্যবহার করব ডেটাবেসের সাথে ইন্টারঅ্যাক্ট করতে।
Product.java ফাইল তৈরি করুন:
package com.example.productmanagement.model;
import javax.persistence.Entity;
import javax.persistence.Id;
@Entity
public class Product {
@Id
private Long id;
private String name;
private String description;
private Double price;
// Constructors
public Product(Long id, String name, String description, Double price) {
this.id = id;
this.name = name;
this.description = description;
this.price = price;
}
// Getters and Setters
public Long getId() {
return id;
}
public void setId(Long id) {
this.id = id;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public String getDescription() {
return description;
}
public void setDescription(String description) {
this.description = description;
}
public Double getPrice() {
return price;
}
public void setPrice(Double price) {
this.price = price;
}
}
এখানে:
- Product ক্লাসের মধ্যে
id,name,description, এবংpriceপ্রপার্টি রয়েছে। @Entityঅ্যানোটেশন দিয়ে এটি একটি JPA Entity হিসেবে চিহ্নিত করা হয়েছে, যা ডাটাবেস টেবিলের সাথে সম্পর্কিত হবে।
3. Product Repository তৈরি করা
Spring Data JPA ব্যবহার করে আমরা একটি Repository তৈরি করব যা ডেটাবেসে প্রোডাক্ট ডেটা CRUD অপারেশন করবে।
ProductRepository.java ফাইল তৈরি করুন:
package com.example.productmanagement.repository;
import com.example.productmanagement.model.Product;
import org.springframework.data.jpa.repository.JpaRepository;
public interface ProductRepository extends JpaRepository<Product, Long> {
}
এখানে:
ProductRepositoryএকটি JpaRepository যাProductEntity-কে পরিচালনা করবে।- এটি CRUD অপারেশনগুলো সরাসরি পাবলিকভাবে উপলব্ধ করবে, যেমন
findAll(),save(),deleteById()ইত্যাদি।
4. Product Controller তৈরি করা
এখন একটি REST Controller তৈরি করি যা HTTP রিকোয়েস্টের মাধ্যমে Product সম্পর্কিত CRUD অপারেশনগুলো পরিচালনা করবে।
ProductController.java ফাইল তৈরি করুন:
package com.example.productmanagement.controller;
import com.example.productmanagement.model.Product;
import com.example.productmanagement.repository.ProductRepository;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.*;
import java.util.List;
@RestController
@RequestMapping("/products")
public class ProductController {
@Autowired
private ProductRepository productRepository;
// Create a new product
@PostMapping
public Product createProduct(@RequestBody Product product) {
return productRepository.save(product);
}
// Get all products
@GetMapping
public List<Product> getAllProducts() {
return productRepository.findAll();
}
// Get product by ID
@GetMapping("/{id}")
public Product getProductById(@PathVariable Long id) {
return productRepository.findById(id).orElse(null);
}
// Update product by ID
@PutMapping("/{id}")
public Product updateProduct(@PathVariable Long id, @RequestBody Product product) {
if (!productRepository.existsById(id)) {
return null;
}
product.setId(id);
return productRepository.save(product);
}
// Delete product by ID
@DeleteMapping("/{id}")
public void deleteProduct(@PathVariable Long id) {
productRepository.deleteById(id);
}
}
এখানে:
- GET
/products: সমস্ত প্রোডাক্টের তালিকা ফিরিয়ে দেয়। - POST
/products: নতুন প্রোডাক্ট তৈরি করে। - GET
/products/{id}: নির্দিষ্ট একটি প্রোডাক্টের ডেটা ফিরিয়ে দেয়। - PUT
/products/{id}: একটি প্রোডাক্ট আপডেট করে। - DELETE
/products/{id}: একটি প্রোডাক্ট ডিলিট করে।
5. Spring Boot Application শুরু করা
এখন, আপনার Spring Boot অ্যাপ্লিকেশনটি চালু করতে ProductmanagementApplication.java ক্লাসে main() মেথড রান করুন।
package com.example.productmanagement;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
@SpringBootApplication
public class ProductmanagementApplication {
public static void main(String[] args) {
SpringApplication.run(ProductmanagementApplication.class, args);
}
}
এখন, অ্যাপ্লিকেশনটি localhost:8080 তে চলে আসবে।
6. JSON রেসপন্স পরীক্ষা করা
এখন Postman বা ব্রাউজার ব্যবহার করে আমাদের API পরীক্ষা করতে পারি।
1. GET রিকোয়েস্ট:
GET http://localhost:8080/products
JSON রেসপন্স:
[
{
"id": 1,
"name": "Laptop",
"description": "High performance laptop",
"price": 1000.0
},
{
"id": 2,
"name": "Smartphone",
"description": "Latest model smartphone",
"price": 500.0
}
]
2. POST রিকোয়েস্ট:
POST http://localhost:8080/products
Content-Type: application/json
{
"name": "Headphones",
"description": "Noise cancelling headphones",
"price": 150.0
}
JSON রেসপন্স:
{
"id": 3,
"name": "Headphones",
"description": "Noise cancelling headphones",
"price": 150.0
}
3. PUT রিকোয়েস্ট:
PUT http://localhost:8080/products/1
Content-Type: application/json
{
"name": "Laptop Pro",
"description": "Updated high performance laptop",
"price": 1200.0
}
JSON রেসপন্স:
{
"id": 1,
"name": "Laptop Pro",
"description": "Updated high performance laptop",
"price": 1200.0
}
4. DELETE রিকোয়েস্ট:
DELETE http://localhost:8080/products/1
সারাংশ
এই গাইডে, আমরা Spring Boot ব্যবহার করে একটি Product Management System তৈরি করেছি, যেখানে JSON ডেটা রেসপন্স প্রদান করা হয়েছে। এই অ্যাপ্লিকেশনটি:
- Product Entity তৈরি করেছে।
- CRUD অপারেশন সম্পাদন করার জন্য REST Controller তৈরি করেছে।
- Postman ব্যবহার করে API টেস্ট করা হয়েছে।
এটি একটি সাধারণ উদাহরণ, যা Spring Boot এবং JSON এর সাহায্যে একটি complex অ্যাপ্লিকেশন তৈরি করার জন্য সহায়ক হতে পারে।
Read more