Kelas Spring Framework dan Spring Boot

Jul 22, 2024

Kelas Spring Framework dan Spring Boot

Pengenalan Diri

  • Nama: Eko Kurniawan Khannedy
  • Pekerjaan: Teknik Arsitek di e-commerce terbesar di Indonesia
  • Pengalaman: 10+ tahun
  • Konten: Programming di website dan YouTube channel 'Programmer Zaman Now'
  • Kontak: Telegram, sosial media Programmer Zaman Now
  • Email: [disediakan]

Agenda Kelas

  1. Dasar-dasar Spring Framework dan Spring Boot
  2. Konsep Inversion of Control (IoC)
  3. ApplicationContext
  4. Dependency Injection
  5. Lifecycle, Scope, dan Dependency Management
  6. Bean and Bean Factories
  7. Spring Boot Features
  8. Event Handling
  9. Menjalankan aplikasi dengan Spring Boot Plugin
  10. Konfigurasi dan Customisasi

Pengenalan Spring Framework

  • Spring Framework: Framework populer di Java untuk aplikasi desktop, web, dan enterprise
  • Mengalahkan Java Enterprise (Jakarta Enterprise)
  • Dibuat oleh Rod Johnson tahun 2003
  • Bersifat ringan dan lebih murah untuk hardware dibandingkan Java Enterprise
  • Website: spring.io

Spring Boot

  • Mempermudah pembuatan aplikasi Spring
  • Automatisasi konfigurasi yang biasanya manual dan kompleks
  • Selalu digunakan bersamaan dengan Spring Framework di aplikasi modern
  • Membantu integrasi dengan berbagai teknologi lain

Mengapa Menggunakan Spring?

  • Framework Java paling populer
  • Banyak bahasa yang bisa berjalan di JVM (Java Virtual Machine): Kotlin, Groovy, Scala
  • Digunakan di banyak perusahaan besar (contoh: Netflix)
  • Ekosistem pendukung sangat besar
  • Mudah mengintegrasikan teknologi lain seperti database NoSQL (MongoDB, Cassandra) maupun konsul

Membuat Project Spring

  1. Gunakan Spring Initializr (start.spring.io) untuk generate projek
  2. Pilih tipe project, language, dan dependencies (contoh: Lombok)
  3. Pilih versi Java (contoh: Java 11)
  4. Generate dan import project ke IDE favorit

Inversion of Control (IoC)

  • Prinsip pemindahan kontrol objek/kode ke container di dalam framework
  • Spring sebagai IoC container disebut ApplicationContext
  • ApplicationContext mengelola objek/kode program
  • Parameter didefinisikan menggunakan @Configuration

ApplicationContext

  • Kontainer inti dari Spring Framework untuk manajemen objek
  • Interface turunan dari BeanFactory
  • Membaca definisi konfigurasi untuk membuat dan mengelola bean

Bean

  • Objek yang dikelola oleh Spring container
  • Default bernilai singleton
  • Dibuat menggunakan @Bean di dalam kelas konfigurasi
  • NAME sebagai nama bean
  • Annotasi seperti @Primary dan @Qualifier untuk mengatur prioritas dan pemilihan bean

Dependency Injection (DI)

  • Otomatisasi pemenuhan objek yang dibutuhkan oleh objek lain
  • Dibuat dan di-inject secara otomatis oleh Spring
  • Bisa menggunakan constructor injection, setter injection, atau field injection
  • Annotasi yang digunakan: @Autowired untuk injection
  • Contoh: Menggunakan DI dengan constructor, setter, atau field langsung di @Component

Scope

  • Strategi cara objek dibuat dan dikelola
  • Default: Singleton (satu objek untuk satu kontainer)
  • Prototype: Membuat objek baru setiap akses
  • Request, Session, Application, WebSocket (khusus aplikasi web)
  • Scope dipilih menggunakan @Scope anotasi

Lifecycle Bean

  • Hook metoda inisialisasi dan destruksi bean
  • Mengimplementasikan InitializingBean dan DisposableBean interface atau dengan annotasi @PostConstruct dan @PreDestroy
  • Contoh: Membuat koneksi ke database pada inisialisasi dan menutupnya pada destruksi

ApplicationContextAware dan BeanNameAware

  • Interface khusus untuk mengakses ApplicationContext atau BeanName di dalam bean
  • Menggunakan callback method seperti setApplicationContext atau setBeanName

Event Handling

  • Spring menyediakan event mechanism untuk komunikasi antar komponen
  • Membuat event listener dengan @EventListener atau mengimplementasikan ApplicationListener interface
  • Contoh: Membuat listener untuk menangani login success event

Spring Boot Plugin

  • Menggunakan spring-boot-maven-plugin untuk mempermudah menjalankan dan membangun aplikasi
  • Menjalankan aplikasi dengan mvn spring-boot:run
  • Membuat distribution file dengan mvn package (fat JAR)

Customizing Spring Application

  • Menggunakan kelas SpringApplication untuk custom configuration
  • Menambahkan listeners, inisialisasi, banner, dan banyak lagi
  • Contoh: Mematikan banner saat startup

Event Specific to Spring Boot

  • Application Events yang dikeluarkan pada berbagai tahap aplikasi (mulai, inisialisasi, siap, gagaldasr, dll)
  • Example: ApplicationStartingEvent, ApplicationReadyEvent
  • Menggunakan SpringApplication setListeners untuk menangkap event ini

Usage of CommandLineRunner and ApplicationRunner

  • Menjalankan kode setelah aplikasi Spring Boot berjalan
  • Mengambil command-line arguments melalui runner
  • Menggunakan @Component dan implementasi interface CommandLineRunner atau ApplicationRunner
  • ApplicationRunner memiliki parsing tambahan pada argumen

Method Testing with Spring Boot Test

  • Menggunakan @SpringBootTest untuk menandai kelas testing
  • Dependency injection di dalam testing
  • Menjalankan Spring Boot context saat testing application

Conclusion

Ini adalah overview dari topik Spring dan Spring Boot yang mencakup dasar-dasar seperti pemahaman mengenai bean, dependency injection, lifecycle, konfigurasi, dan event handling serta penggunaan Spring Boot untuk efisiensi dan kemudahan development. Ide utamanya adalah pemahaman bahwa Spring mengelola bean dan dependency secara otomatis, membuat development lebih modular dan terstruktur.