Apa itu Spring Boot
Spring Boot adalah framework berbasis Spring Framework yang mempermudah pembuatan aplikasi Java production-ready dengan:
✅ konfigurasi minimal
✅ embedded server
✅ auto-configuration
✅ siap untuk microservices & cloud
1. Konsep Inti: Dependency Injection (DI) & IoC
🎯 Tujuan
Mengurangi coupling antar class.
Tanpa DI
Dengan DI
public class UserService {}
UserService service;
Spring container akan membuat & mengelola object.
✔ loose coupling
✔ mudah testing
✔ mudah maintain
2. Auto Configuration
Spring Boot otomatis mengkonfigurasi komponen berdasarkan dependency.
Contoh:
Jika ada dependency:
spring-boot-starter-data-jpa
Spring otomatis setup:
✔ DataSource
✔ JPA
✔ Transaction manager
➡ developer tidak perlu konfigurasi manual.
3. Starter Dependencies
Starter = paket dependency siap pakai.
Contoh:
spring-boot-starter-web→ REST APIspring-boot-starter-data-jpa→ databasespring-boot-starter-security→ authenticationspring-boot-starter-validation→ validation
👉 mempercepat setup project.
4. Embedded Server
Spring Boot menjalankan server internal:
✔ Tomcat (default)
✔ Jetty
✔ Undertow
Menjalankan aplikasi cukup:
java -jar app.jar
5. Struktur Layered Architecture (Best Practice)
Struktur umum:
controller
service
repository
model/entity
dto
config
exception
📌 Controller (API layer)
@RestController
@RequestMapping("/users")
public class UserController {}
📌 Service (business logic)
@Service
public class UserService {}
📌 Repository (data access)
@Repository
public interface UserRepository extends JpaRepository<User, Long> {}
✔ separation of concerns
✔ scalable architecture
6. REST API Development (Spring MVC)
Digunakan untuk membangun API.
@GetMapping("/{id}")
public User getUser(@PathVariable Long id) {
return userService.getUser(id);
}
Annotation penting:
- @RestController
- @GetMapping
- @PostMapping
- @RequestBody
- @PathVariable
7. Configuration Management
Konfigurasi di:
application.yml
Contoh: YAML
server:
port: 8081
spring:
datasource:
url: jdbc:postgresql://localhost:5432/app
Profile Environment
application-dev.yml
application-prod.yml
Aktifkan:
spring.profiles.active=dev
✔ mendukung multi environment.
8. Spring Data JPA (ORM)
Mempermudah akses database.
public interface UserRepository extends JpaRepository<User, Long> {
List<User> findByName(String name);
}
Tanpa SQL manual.
9. Entity Mapping
10.Transaction Management
Digunakan untuk menjaga konsistensi data.
@Transactional
public void transfer() {
// debit
// credit
}
✔ rollback otomatis jika error
✔ penting untuk transaksi finansial
11. Validation
@NotNull
private String name;
}
public void create(@Valid @RequestBody UserRequest req){}
12. Exception Handling Global
public class GlobalExceptionHandler {
@ExceptionHandler(Exception.class)
public ResponseEntity<?> handle(Exception e){
return ResponseEntity.badRequest().body(e.getMessage());
}
}
✔ mudah debugging
13. Logging
Menggunakan SLF4J + Logback.
log.info("User created");
✔ debugging production
14. Security (Spring Security + JWT)
Digunakan untuk:
✔ authentication
✔ authorization
✔ proteksi API
Biasanya digunakan bersama JWT token.
15. Caching
Menggunakan Redis / in-memory cache.
@Cacheable("users")
public User find(Long id){}
✔ meningkatkan performa
16. Actuator (Monitoring & Health Check)
Dependency:
spring-boot-starter-actuator
Endpoint:
/actuator/health
/actuator/metrics
✔ monitoring aplikasi production.
17. Spring Boot Profiles & Environment
Memisahkan konfigurasi:
✔ dev
✔ staging
✔ production
Sangat penting untuk deployment.
18. Build & Packaging
Gunakan:
✔ Maven
✔ Gradle
Build:
mvn clean package
Hasil:
app.jar
19. Testing
Unit Test
@SpringBootTest
class UserServiceTest {}
Tools umum:
✔ JUnit
✔ Mockito
✔ Testcontainers
20. Microservices Ready Features
Spring Boot mendukung:
✔ REST communication
✔ service discovery
✔ distributed config
✔ circuit breaker
✔ container deployment
Flow Request di Spring Boot
1️⃣ Client request API
2️⃣ Controller menerima request
3️⃣ Service menjalankan business logic
4️⃣ Repository akses database
5️⃣ Response dikirim kembali
Kenapa Spring Boot Populer di Enterprise?
✅ cepat dikembangkan
✅ standar industri
✅ scalable & cloud ready
✅ ecosystem besar
✅ production ready
Kesimpulan
Fundamental Spring Boot yang wajib dikuasai:
✔ Dependency Injection & IoC
✔ Auto Configuration & Starter
✔ REST API & MVC
✔ JPA & Transaction
✔ Exception handling & validation
✔ Security & caching
✔ Monitoring & deployment


No comments:
Post a Comment