Spring Boot MongoDB - Simple App Tutorial
Sebelumnya kita membuat "Belajar MongoDB Dasar Menggunakan MongoDB Compass (Aman untuk Amazon DocumentDB)" https://undebugable.blogspot.com/2026/01/belajar-mongodb-dasar-menggunakan.html.
Step 1 – Buat Project Spring Boot
Opsi A (Recommended): Spring Initializr (Web)
Project Settings
Project: Gradle
Language: Java
Spring Boot: 3.x
Java: 17
Project Metadata
Group:
com.yusufArtifact:
spring-mongo-cleanName:
spring-mongo-cleanPackage name:
com.yusuf.springmongocleanPackaging:
Jar
Dependencies
- Spring Web
- Spring Data MongoDB
Klik Generate → Extract → Open di IntelliJ
Step 2 – Struktur Project (Clean dari Awal)
Setelah dibuka di IntelliJ, rapikan package:
│
├── SpringMongoCleanApplication.java
│
├── config
│ └── MongoConfig.java (nanti)
│
├── controller
│ └── UserController.java
│
├── service
│ └── UserService.java
│
├── repository
│ └── UserRepository.java
│
├── domain
│ └── User.java
│
└── dto
└── UserRequest.java
Kenapa ini clean?
-
Controller = HTTP
-
Service = business logic
-
Repository = data access
-
Domain = entity
-
DTO = request/response (tidak bocor entity)
Step 3 – Konfigurasi MongoDB (application.yml)
Buka src/main/resources/application.yml
server:
port: 8080
spring:
application:
name: spring-mongo-clean
mongodb:
uri: ${MONGO_CONNECTION_STRING:mongodb://root:root@localhost:27017/auth_db?authSource=admin}
logging:
level:
org.mongodb.driver: DEBUG
com.yusuf.springmongoclean: DEBUG
Step 4 – Domain Model (Clean & Modern)
domain/User.java
Gunakan Record (Java 17+)
package com.yusuf.springmongoclean.domain;
import org.springframework.data.annotation.Id;
import org.springframework.data.mongodb.core.mapping.Document;
@Document(collection = "users")
public record User(
@Id String id,
String name,
String email
) {}
Step 5 – Repository (Spring Data MongoDB)
repository/UserRepository.java
*No implementation needed (Spring auto-generate).
Step 6 – Service Layer (Clean Logic)
service/UserService.java
Clean Code check:
-
Fungsi kecil
-
Tidak ada side effect tersembunyi
-
Validasi jelas
Step 7 – DTO (Jangan Langsung Pakai Entity)
dto/UserRequest.java
Step 8 – Controller (REST API)
controller/UserController.java
package com.yusuf.springmongoclean.controller;
import com.yusuf.springmongoclean.domain.User;
import com.yusuf.springmongoclean.dto.UserRequest;
import com.yusuf.springmongoclean.service.UserService;
import org.springframework.web.bind.annotation.*;
import java.util.List;
@RestController
@RequestMapping("/users")
public class UserController {
private final UserService service;
public UserController(UserService service) {
this.service = service;
}
@PostMapping
public User create(@RequestBody UserRequest request) {
return service.create(request.name(), request.email());
}
@GetMapping
public List<User> findAll() {
return service.findAll();
}
}
Step 9 – Run & Test
Run:
Comments
Post a Comment