Spring muncul pada tahun 2003 sebagai respons terhadap kompleksitas spesifikasi J2EE . Sementara beberapa orang menganggap Java EE dan Spring berbeda, Spring pada kenyataannya adalah pelengkap bagi Java EE. Model pemrograman Spring tidak mencakup spesifikasi platform Java EE melainkan, terintegrasi dengan spesifikasi individual yang dipilih dengan cermat :
- Servlet API (JSR 340)
- Websocket API (JSR 356)
- Concurerency Utlities (JSR 236)
- JSON Binding API (JSR 367)
- Bean Validation (JSR 3030)
- JPA (JSR 338)
- JMS (JSR 914)
- Serta pengaturan JTA / JCA untuk koordinasi transaksi, jika perlu.
Spring framework juga mendukung Dependency Injecton (JSR 330) dan Annotations (JSR 250), Spring Boot membantu kita membuat aplikasi berbasis Spring tingkat produksi yang berdiri sendiri yang dapat kita jalankan. Sebagian besar aplikasi Spring Boot hanya memerlukan sedikit konfigurasi Spring
System Requirment
Spring Boot 3.1.2 membutuhkan Java 17 dan kompatibel hingga Java 20. Spring Framework 6.0.11 atau lebih tinggi juga diperlukan.
Dukungan build eksplisit disediakan untuk build berikut:
Maven v3.6.3 atau diatasnya
Gradle v7.x and 8x atau diatasnya
Servlet Container
Spring boot mendukung servlet container seperti Apache Tomcat, Jetty dan Undertow, Kita juga dapat menerapkan aplikasi Spring Boot ke wadah apa pun yang kompatibel dengan servlet 5.0+.
GraalVM Native Images
Aplikasi Spring Boot bisa diconvert menjadi Native Images dengan GraalVM 22.3 atau diatasnya, Images bisa dibuat dengan menggunakan plugins native build tools Gradle/Maven atau native-image tool yang di sediakan oleh GraalVM. Kita juka dapat membuat native images dengan native-image Paketo builpack :
Installing Spring Boot
Sebelum kita menginstall Spring Boot pastiksan Java sudah tersintall pada tutorial kali ini kita akan menggunakan Java 17 atau di atasnya disarankan menggunakan versi JDK 17 dan Apache Maven
Prerequirment
$ java -version
openjdk version "17.0.4.1" 2022-08-12 LTS
OpenJDK Runtime Environment (build 17.0.4.1+1-LTS)
OpenJDK 64-Bit Server VM (build 17.0.4.1+1-LTS, mixed mode, sharing)
$ mvn -v
Apache Maven 3.8.5 (3599d3414f046de2324203b78ddcf9b5e4388aa0)
Maven home: usr/Users/developer/tools/maven/3.8.5
Java version: 17.0.4.1, vendor: BellSoft, runtime: /Users/developer/sdkman/candidates/java/17.0.4.1-librca
Buat project java menggunakan maven kemudian tambahkan baris code pada file pom.xml
<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 https://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>
<parent>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-parent</artifactId>
<version>3.1.2</version>
<relativePath/> <!-- lookup parent from repository -->
</parent>
<groupId>com.hyvercode</groupId>
<artifactId>spring</artifactId>
<version>0.0.1-SNAPSHOT</version>
<name>spring</name>
<description>Tutorial project for Spring Boot</description>
<properties>
<java.version>17</java.version>
</properties>
<dependencies>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-test</artifactId>
<scope>test</scope>
</dependency>
</dependencies>
<build>
<plugins>
<plugin>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-maven-plugin</artifactId>
</plugin>
</plugins>
</build>
</project>
Kita bisa melakukan test dengan menjalankan perintah maven berikut mvn package,
[INFO] ------------------------------------------------------------------------
[INFO] BUILD SUCCESS
[INFO] ------------------------------------------------------------------------
[INFO] Total time: 12.284 s
[INFO] Finished at: 2023-07-30T21:50:30+07:00
[INFO] ------------------------------------------------------------------------
Jika tidak terjadi kesalahan maka kita telah berhasil menginstall Spring Boot pada project kita, atau kita juka bisa menggunakan tools generator yang di sediakan oleh Spring yaitu Spring Boot Initializr.

Jika kita membuka project hasil generate maka tampilan struktur project Spring boot seperti berikut :

Ubah application.properties menjadi application.yaml ini agar lebih mudah ketika menambahkan Konfigurasi jika kita mengunakan file yaml/yml karena lebih tersturktur dengan baik di bandingkan dengan .properties.
Sample source code bisa di download di github-hyvercode