Apa itu Spring Framework (Spring)?
Spring Framework adalah framework open-source untuk pengembangan perangkat lunak yang menyediakan dukungan infrastruktur untuk membangun aplikasi berbasis Java di berbagai platform deployment.
Spring pertama kali dirilis pada Juni 2003 oleh Rod Johnson di bawah lisensi Apache 2.0 dan di-host oleh SourceForge.
Untuk apa Spring digunakan?
Sebagai salah satu framework Java Enterprise Edition (Java EE) yang paling populer, Spring membantu developer membangun aplikasi berkinerja tinggi menggunakan POJO (Plain Old Java Objects) dan container servlet untuk mempercepat proses development.
Spring memanfaatkan AOP (aspect-oriented programming) dan dependency injection guna menyederhanakan coding dan testing, serta memangkas biaya maintenance aplikasi. Framework ini cocok banget buat bikin aplikasi enterprise yang skalabel dan handal.
Berbeda dengan API klasik seperti JDBC, Java Servlet, dan JavaServer Pages yang lebih kompleks, Spring membuat development jadi lebih simpel dan efisien.
Kenapa pakai Spring untuk aplikasi Java?
Spring menyederhanakan kompleksitas Java, menjadikannya framework yang aman, fleksibel, dan efisien dari segi penggunaan resource. Dengan Spring, developer nggak perlu ribet konfigurasi manual dan bisa langsung fokus ke logika bisnis aplikasi.
Spring juga menyediakan banyak module fleksibel seperti Spring AOP, ORM, Web Flow, dan MVC yang bisa digunakan terpisah atau bersama sesuai kebutuhan.
Gimana cara kerja Spring?
Aplikasi web umumnya punya tiga lapisan utama:
- Presentation layer: menampilkan UI dan handle interaksi user.
- Business logic layer: menjalankan fungsi inti aplikasi.
- Data access layer: mengambil dan mengelola data.
Setiap layer saling tergantung. Nah, di sinilah Spring masuk dengan fitur dependency injection untuk membantu membangun arsitektur yang lebih decoupled.
Spring membaca anotasi seperti @component
dan @autowired
untuk tahu class mana yang harus di-manage dan dependency mana yang harus diinject.
Teknologi dan fitur penting di Spring
Inversion of Control (IoC)
Spring ambil alih alur eksekusi aplikasi sehingga kode jadi lebih modular dan mudah dites atau diganti implementasinya.
Dependency Injection
Objek mendeklarasikan dependency-nya lewat:
- Constructor.
- Factory method.
- Setter method atau properti.
Ini bikin kode jadi lebih loose coupling dan gampang maintenance.
IoC Container
Tempat semua objek Spring (bean) dibuat, diatur, dan dikonfigurasi sepanjang lifecycle-nya berdasarkan metadata dari XML, anotasi, atau kode Java.
Beans
Bean adalah objek inti dalam aplikasi Spring, yang dikelola oleh IoC container. Setiap bean punya ID unik dan bisa punya alias.
Istilah penting lainnya dalam Spring
- Autowiring collaborators: Spring otomatis menghubungkan bean satu dengan lainnya.
- Lazy-initialized beans: Bean yang hanya dibuat saat dibutuhkan.
- Singleton dan non-singleton: Bean bisa diset sebagai singleton (1 instance) atau tidak.
- Bean scopes: Terdapat 6 scope: singleton, prototype, request, session, application, dan websocket. Bisa juga buat custom scope.
Kelebihan Spring Framework
- Menyederhanakan Java programming dan mempercepat pengembangan.
- Ringan, fleksibel, dan tidak memaksa pewarisan kelas (noninvasive).
- Mendukung Kotlin dan Groovy.
- Integrasi dengan banyak teknologi lain: REST, JMS, JMX, dll.
- Mendukung unit testing dan integration testing.
- Menyediakan manajemen transaksi yang lengkap.
- Memiliki Spring Expression Language untuk manipulasi objek saat runtime.
- Mendukung AOP untuk modularisasi fungsi lintas objek.