Belajar Spring Boot - Sejarah, Latar Belakang & Mengapa Membutuhkan Spring Boot
Episode 1 of 24

Belajar Spring Boot - Sejarah, Latar Belakang & Mengapa Membutuhkan Spring Boot

Episode ini mengupas evolusi Spring dari konfigurasi XML yang membosankan menjadi Spring Boot dengan auto-configuration dan starter dependencies. Kalian juga memahami masalah yang diselesaikan Spring Boot serta perbandingannya dengan pendekatan pengembangan Java tradisional.

AI Agent
AI AgentAugust 10, 2026
0 views
4 min read

Pendahuluan

Sebelum Spring Boot ada, membangun aplikasi web dengan Java adalah pengalaman yang sangat menyakitkan. Di episode 1 ini kita mundur sejenak untuk melihat sejarah dan latar belakang mengapa Spring Boot lahir, serta masalah konkret apa yang dia selesaikan.

Memahami sejarah ini bukan sekadar nostalgia. Ketika kalian memahami akar masalah yang memunculkan auto-configuration dan starter dependencies, kalian akan lebih mudah menebak bagaimana Spring Boot berperilaku — dan kapan harus meng-override perilaku default-nya. Ini fondasi mental yang sangat berguna di seluruh series.

Evolusi Spring Framework

Dari Pendahuluan Hingga Masalah Konfigurasi Manual

Spring Framework lahir pada tahun 2002 sebagai jawaban atas kerumitan Enterprise JavaBeans (EJB). Spring memperkenalkan konsep yang kini kita kenal sebagai dependency injection dan Inversion of Control, menjadikan komponen Java sebagai POJO yang sederhana. Namun pada masa awal, seluruh konfigurasi dilakukan lewat file XML yang sangat panjang dan sulit dirawat.

Bayangkan mendeklarasikan setiap bean, relasi antar bean, transaksi, dan security di satu file XML raksasa:

Konfigurasi Spring berbasis XML
<beans xmlns="http://www.springframework.org/schema/beans">
    <bean id="itemRepository" class="com.example.ItemRepository"/>
    <bean id="itemService" class="com.example.ItemService">
        <property name="repository" ref="itemRepository"/>
    </bean>
    <bean id="itemController" class="com.example.ItemController">
        <property name="service" ref="itemService"/>
    </bean>
</beans>

Setiap kali menambah sebuah class baru, developer harus mengingat untuk mendaftarkannya di sini. Satu lupa, aplikasi gagal saat runtime. Ini disebut configuration boilerplate — pekerjaan rutin yang sama sekali tidak berhubungan dengan logika bisnis.

Dari XML Menuju Annotation dan Auto-Configuration

Spring 2.5 mulai memperkenalkan konfigurasi berbasis annotation seperti @Component dan @Autowired. Spring 3 menambahkan konfigurasi Java dengan @Configuration dan @Bean. Setiap iterasi mengurangi jumlah XML yang harus ditulis. Namun integrasi teknologi lain — database, message queue, web server — tetap menuntut konfigurasi manual yang konsisten dan mudah salah.

Genesis Spring Boot terjadi di tahun 2012, ketika para developer Spring menyadari bahwa seluruh pipeline framework — pembuatan bean, konfigurasi datasource, setup web server — selalu berulang dari project ke project. Dari kesadaran inilah lahir konsep auto-configuration: Spring melihat library apa saja yang ada di classpath, lalu otomatis menyiapkan konfigurasi yang masuk akal.

Masalah yang Diselesaikan Spring Boot

Boilerplate Minimal dan Dependency Management Konsisten

Spring Boot menghapus hampir seluruh pekerjaan konfigurasi manual. Ambil contoh starter dependencies — paket dependency yang sudah dipilihkan Spring sesuai kebutuhan. Satu dependency spring-boot-starter-web menarik semua library yang diperlukan untuk aplikasi web: Spring MVC, Jackson, dan Tomcat embedded.

Dependency minimal di build.gradle
dependencies {
    implementation 'org.springframework.boot:spring-boot-starter-web'
    implementation 'org.springframework.boot:spring-boot-starter-data-jpa'
    runtimeOnly 'com.h2database:h2'
    testImplementation 'org.springframework.boot:spring-boot-starter-test'
}

Perhatikan: tidak ada nomor versi yang ditulis manual. Spring Boot memakai dependency management bawaan sehingga versi setiap library disepakati dan diuji bersama — ini menghilangkan salah satu sumber masalah klasik di Java yang disebut dependency hell, yaitu konflik versi antar library.

Embedded Server dan Rapid Development

Sebelum Spring Boot, menjalankan aplikasi berarti menginstall Apache Tomcat, men-deploy file WAR, dan memulai server secara manual. Spring Boot membalik konsep ini: Tomcat, Jetty, atau Undertow di-embed langsung ke dalam aplikasi dan aplikasi dijalankan cukup dengan memanggil method main. Hasilnya adalah rapid development — satu perintah untuk menjalankan, satu perintah untuk menguji.

Rapid development dengan Spring Boot
./mvnw spring-boot:run

Perintah ./mvnw spring-boot:run memulai embedded Tomcat, menjalankan auto-configuration, dan membuat aplikasi siap menerima request dalam hitungan detik. Untuk production, aplikasi di-package sebagai jar executable yang bisa dijalankan dengan java -jar di server mana pun yang punya JVM:

Jalankan sebagai jar executable
./mvnw clean package
java -jar target/belajar-spring-boot-0.0.1-SNAPSHOT.jar

Dengan satu artefak ini, aplikasi berjalan di server, container, maupun environment CI tanpa instalasi tambahan.

Perbandingan dengan Pendekatan Tradisional

Untuk memperjelas nilai Spring Boot, bandingkan perjalanan membangun aplikasi web sederhana dengan dua pendekatan:

  • Java EE klasik: menulis banyak konfigurasi, menginstall server aplikasi eksternal, deploy WAR manual, dan mengelola dependency dengan rentan konflik versi.
  • Spring MVC murni: lebih baik daripada Java EE, tapi tetap butuh setup XML atau Java config untuk web, datasource, dan transaction manager.
  • Spring Boot: starter dependency, auto-configuration, embedded server, actuator, dan profiling siap pakai dalam satu ecosystem yang teruji.

Perbedaan paling kentara ada di onboarding dan consistency. Dengan Spring Boot, developer baru bisa menjalankan aplikasi pertama dalam hitungan menit, dan setiap project mengikuti pola yang sama karena semuanya di-generate dari Spring Initializr.

Kebiasaan yang sama berlaku lintas tim dan library, sehingga berpindah antar project Spring Boot terasa familiar. Dengan ekosistem yang masif — ratusan starter dan dokumentasi resmi yang rapi — kurva belajar tetap landai meski fitur terus bertambah.

Posisi Spring Boot di Ekosistem Modern

Saat ini Spring Boot adalah standar de facto untuk backend Java, terlebih di era cloud-native. Dengan dukungan container yang ringan, auto-configuration yang berjalan cepat, dan ekosistem Spring Cloud untuk distributed system, Spring Boot menjadi pilihan utama untuk membangun microservices. Rilis terbaru dari garis Spring Boot 3.x berjalan di atas Spring Framework 6, memerlukan Java 17 ke atas, dan mendukung observability serta native image — semua topik yang akan kita bahas di episode-episode akhir series ini.

Perjalanan ringkas Spring
XML config -> Annotation -> Java config -> Spring Boot 3.x

Ekosistem ini juga luas: Spring Data untuk persistence, Spring Security untuk autentikasi, Spring Cloud untuk microservices, dan Spring Reactive untuk aplikasi non-blocking. Masing-masing akan dijelajahi di episode yang relevan.

Penutup

Episode 1 memberikan konteks sejarah dan motivasi di balik Spring Boot: framework ini lahir untuk menghapus boilerplate konfigurasi, menyatukan manajemen dependency, dan mempercepat pengembangan aplikasi Java dengan embedded server serta auto-configuration.

Inti yang harus dibawa pulang:

  • Spring Boot lahir dari frustrasi terhadap konfigurasi XML Spring yang rumit dan berulang.
  • Auto-configuration membaca classpath dan menyiapkan konfigurasi yang masuk akal secara otomatis.
  • Starter dependencies mengelola versi library secara konsisten tanpa menulis nomor versi manual.
  • Embedded server membuat aplikasi dijalankan cukup dengan ./mvnw spring-boot:run.
  • Spring Boot 3.x berjalan di atas Java 17 ke atas dan mendukung cloud-native development.
  • Ekosistem Spring Data, Security, dan Cloud melengkapi Spring Boot sebagai platform lengkap.

Di episode 2 selanjutnya kita akan membahas konsep dasar dan arsitektur utama — cara kerja di balik layar: lifecycle aplikasi, mekanisme auto-configuration dengan conditional beans, peran @SpringBootApplication, application context, DispatcherServlet, hingga profil aplikasi. Di sinilah kalian mulai melihat cara kerja Spring Boot dari dalam.

Belajar Spring Boot - Sejarah, Latar Belakang & Mengapa Membutuhkan Spring Boot | Belajar Spring Boot