Spring

Spring



Spring merupakan framework Java yang mempermudah para programmer dalam membuat sebuah aplikasi Java dengan menerapkan salah satunya adalah design-patern : dependency-injection.
Beberapa Fitur yang disediakan Spring Framework adalah sebagai berikut.

  • Depedency Injection
  • Aspect Oriented Programming
  • Spring MVC dan Restful Web Service
  • Support koneksi database, dsb.

Spring Boot merupakan salah satu jenis framework dari Spring.
Namun di Spring Boot , kita lebih dipermudah dalam pembuatan program karena :

  • Sudah disediakan Tomcat dan beberapa server lain, sehingga kita hanya perlu run.
  • Menggunakan Maven sebagai build manager yang dapat kita atur di Project Object Model (POM)
  • Anotasi-anotasi ajaib yang mempermudah kita dalam menentukan komponen kelas-kelas.

IstilahDeskripsi
@AutowiredAnotasi yang digunakan untuk melakukan inject instance dari suatu bean ke objek yang memiliki dependency

@Configuration
Anotasi yang digunakan agar Spring container dapat membuat definisi bean dari suatu kelas dan menunjukkan bahwa suatu kelas mendeklarasikan satu atau lebih method @bean (kelas konfigurasi). (Best practice) Kelas yang mendefinisikan method main dapat menjadi kelas

@Configuration utama. Tidak semua konfigurasi harus diletakkan dalam 1 kelas, anotasi @Import dapat digunakan untuk mengimport kelas @Configuration tambahan. Cara lain dapat menggunakan @ComponentScan untuk mencari secara otomatis kelas @Configuration.

@Component

Anotasi yang digunakan agar Spring container dapat membuat definisi bean dari suatu kelas
@ComponentScan
Anotasi yang digunakan untuk melakukan scan @Component, @Service, @Controller, @RestController, @Repository pada saat aplikasi mulai dijalankan, ketika @Component, @Service, @Controller, @RestController, @Repository ditemukan disinilah proses pembentukan bean terjadi yang nantinya akan digunakan untuk proses dependency injection
@Controller
Anotasi yang digunakan agar Spring container dapat membuat definisi bean dari suatu kelas dan menunjukkan kelas tersebut adalah kelas controller
@Repository
Anotasi yang digunakan agar Spring container dapat membuat definisi bean dari suatu kelas dan menunjukkan kelas tersebut adalah kelas repository
@RestController
Anotasi yang digunakan agar Spring container dapat membuat definisi bean dari suatu kelas dan menunjukkan kelas tersebut adalah kelas rest controller
@RequestMapping
Anotasi yang digunakan untuk melakukan mapping url dengan method
@Service
Anotasi yang digunakan agar Spring container dapat membuat definisi bean dari suatu kelas dan menunjukkan kelas tersebut adalah kelas service
@SpringBootApplication
Anotasi yang digunakan untuk menggantikan deklarasi @Configuration, @EnableAutoConfiguration dan @ComponentScan secara bersamaan dengan menggunakan atribut default dari masing-masing anotasi yang digantikan tadi. Untuk @ComponentScan atribut default untuk package yang discan adalah package yang ada pada kelas yang memiliki anotasi ini
@EnableAutoConfiguration
Anotasi yang digunakan agar Spring dapat melakukan konfigurasi secara otomatis berdasarkan dependency jar yang ditambahkan. (Best practice) Dalam satu projek Spring, anotasi @EnableAutoConfiguration hanya boleh digunakan satu kali dan biasanya ditambahkan hanya di kelas @Configuration utama.
Bean
Objek yang dibuat dan diatur oleh Spring IoC Container
Dispatcher Servlet atau Front Controller
Program yang digunakan untuk mengatur alur kerja pemrosesan request web pada Spring
IoC (Inverse of Control) atau Dependency Injection
Spring akan mengatur dependency suatu objek dengan membuat suatu instance atas dependency objek tersebut
Runtime
Waktu pada saat program mulai dijalankan pada komputer (tahap compile)
Servlet
Program kecil pada web server Java yang akan berjalan secara otomatis sebagai bentuk respon dari inputan user

Spring MVC merupakan Framework dari Spring dengan menggunakan konsep MVC (Model View Controller). 

Model : Menampung data dari frontend maupun backend. Data yang diterima dari frontend akan ditampung di model sebelum diolah di backend, jika sudah di olah di backend, return atau data balikan akan ditampung lagi di model sebelum di lempar ke frontend sebagai bentuk feedback. Biasa terdapat logic pada model. (Intinya model itu perantara antara view dan controller)

View : Interface aplikasi / frontend

Controller : backend / fungsi-fungsi untuk menjalankan suatu perintah. Misal : Save / Get.

Dalam model pada spring terdapat 2 layer yaitu repository layer dan service layer.

Repository Layer

JPA Repository memiliki 2 parameter, yaitu entity yang akan di handle dan identifier dari entity tersebut. JPA Repository ini telah memberikan kita method untuk melakukan operasi CRUD seperti save(), findAll(), findOne(), delete(). Salah satu kelebihan JPA ini juga adalah query creation from method name, dimana kita bisa membuat custom query method dengan sangat mudah.

Service Layer

Setelah membuat repository layer, untuk dapat berinteraksi dengan model, berikutnya kita harus membuat service layer yang akan berisi business logic dari project kita 

Dependency Injection adalah proses menginjeksi / memasukkan sebuah class ke class lain yang membutuhkan/menggunakannya.

Karena kita ingin menggunakan class repository pada class service kita, maka kita harus inject class repository tersebut ke class service. Untuk proses injeksi dapat dilakukan dengan cara menambahkan class yang ingin di inject ke dalam constructor class yang akan menggunakannya.


 

Komentar