Spring Boot adalah kerangka kerja sumber terbuka berbasis Java untuk membuat layanan mikro, yang memungkinkan pengembang untuk menyebarkan dan mengembangkan layanan secara mandiri. Setiap layanan yang berjalan memiliki prosesnya sendiri, sehingga mencapai model ringan yang mendukung aplikasi bisnis. Layanan mikro memiliki beberapa keunggulan:skalabilitas sederhana, konfigurasi minimum, waktu produksi yang lebih singkat, kompatibilitas wadah, dan pengembangan yang mudah.
Spring boot menyediakan platform yang baik bagi pengembang untuk membangun aplikasi pegas yang berdiri sendiri dan siap produksi yang dapat Anda jalankan; dengan demikian, seseorang dapat memulai dengan konfigurasi minimum tanpa memerlukan seluruh konfigurasi konfigurasi pegas.
Misalnya, menangani manajemen ketergantungan rumit untuk proyek-proyek besar; Spring Boot dengan demikian menyelesaikan kesulitan ini dengan menyediakan satu set dependensi untuk kenyamanan pengembang. Aplikasi Spring Boot memindai semua kacang dan deklarasi paket saat aplikasi diinisialisasi; Selain itu, anotasi aplikasi Spring Boot mencakup pemindaian komponen, Konfigurasi Otomatis, dan Konfigurasi Boot Musim Semi.
Fitur Boot Musim Semi
Di bawah ini adalah beberapa fitur standar spring-boot:
- Ini secara otomatis mengonfigurasi perpustakaan Spring dan pihak ketiga jika memungkinkan
- Ini memberikan dependensi 'pemula' yang memiliki opini untuk menyederhanakan konfigurasi build Anda
- Tidak ada persyaratan untuk konfigurasi XML dan Tidak ada pembuatan kode
- Selain itu, ia menawarkan fitur siap produksi seperti metrik konfigurasi eksternal dan health check
- Ini memiliki Tomcat, Undertow secara langsung, atau Jetty; dengan demikian, tidak perlu menyebarkan file WAR
- Juga, ini membuat aplikasi Spring yang berdiri sendiri
Keuntungan Spring Boot bagi pengembang
- Ini meningkatkan produktivitas
- Mempermudah dalam mengembangkan dan memahami aplikasi pegas
- Ini mengurangi pengembangan waktu.
Tujuan Boot Musim Semi
Ini dirancang untuk:
- Mengembangkan aplikasi pegas siap produksi dengan cara yang lebih mudah
- Hindari konfigurasi XML yang rumit di Spring
- Kurangi waktu pengembangan dan jalankan aplikasi secara mandiri
- Tawarkan cara yang lebih mudah untuk memulai aplikasi.
Spring Boot lebih disukai karena fitur dan manfaat yang diberikannya seperti:
- Penyediaan pemrosesan batch yang kuat dan pengelolaan titik akhir REST
- Penyediaan cara yang lebih fleksibel untuk mengonfigurasi Transaksi Data, Java Beans j, dan konfigurasi XML.
- Menawarkan anotasi- berdasarkan aplikasi pegas
- Menyederhanakan manajemen dependensi, termasuk Servlet Container yang disematkan
- Tidak diperlukan konfigurasi manual karena semua yang ada di Spring Boot dikonfigurasi secara otomatis
MongoDB adalah program database berorientasi dokumen yang tersedia untuk sumber, lintas platform. Ini adalah database dokumen yang menyediakan skalabilitas tinggi dan fleksibilitas program. Selain itu, ia menawarkan kueri dan pengindeksan cepat kepada pengguna, yang dalam jangka panjang meningkatkan kinerjanya.
MongoDB diklasifikasikan sebagai program database NoSQL dan menggunakan dokumen mirip JSON dengan skema opsional dan fleksibel. Basis data ini dikembangkan oleh MongoDB Inc., sebuah perusahaan berbasis di Amerika yang mengembangkan dan menyediakan dukungan komersial untuk basis data yang tersedia sumber. MongoDB dilisensikan di bawah Lisensi Publik Sisi Server (SSPL).
MongoDB telah mengalami peningkatan berkelanjutan pada fitur-fiturnya karena pengembangan versi yang sedang berlangsung misalnya;
TANGGAL | VERSI | CATATAN FITUR |
---|---|---|
Desember 2009 | 1.2 | Fungsi JavaScript yang disimpan |
Pembuatan indeks lebih cepat | ||
Lebih banyak indeks per koleksi | ||
Waktu sinkronisasi yang dapat dikonfigurasi | ||
Beberapa fitur dan perbaikan kecil | ||
Agustus 2010 | 1.6 | Peta/kurangi |
Set replika | ||
Sharding siap produksi | ||
Dukungan untuk IPv6 | ||
Maret 2013 | 2.4 | Indeks hash |
Beralih ke mesin JavaScript V8 | ||
Dukungan geospasial yang ditingkatkan | ||
Penelusuran teks yang disempurnakan | ||
Peningkatan keamanan | ||
8 April 2014 | 2.6 | Peningkatan mesin kueri |
Peningkatan agregasi | ||
Peningkatan keamanan | ||
Protokol operasi tulis baru | ||
Integrasi pencarian teks | ||
3 Maret 2015 | 3.0 | Fungsi penjelasan yang ditingkatkan |
API mesin penyimpanan yang dapat dicolokkan | ||
Manajer Operasi MongoDB | ||
Dukungan mesin penyimpanan Wired Tiger | ||
Otentikasi SCRAM-SHA-1 | ||
8 Desember 2015 | 3.2 | Peningkatan pemilihan replikasi |
Validasi dokumen | ||
Mesin penyimpanan Wired Tiger secara default | ||
Konfigurasikan server sebagai kumpulan replika | ||
Dipindahkan dari V8 ke Spider Monkey | ||
Validasi dokumen | ||
Baca Kekhawatiran | ||
29 November 2016 | 3.4 | Kolasi, Perhatian dan tampilan baca yang dapat dilinearisasi |
Juni 2018 | 4.0 | Transaksi yang disempurnakan |
13 Juli 2021 | 5.0 | Enkripsi tingkat bidang sisi klien |
API berversi masa depan | ||
Dukungan deret waktu | ||
Reharding langsung memerlukan perubahan pemetaan objek-shard dan memindahkan objek ke shard lain. |
Aplikasi mandiri yang cepat dan mudah dapat dibuat dengan bantuan Spring Boot (seperti yang akan kita lihat nanti). Sebagai hasil dari kemudahan penggunaannya, MongoDB telah menjadi database NoSQL paling populer. Cepat, aman, dapat diandalkan, dan membutuhkan waktu pengembangan minimal dapat dibuat dengan menggabungkan Spring Boot dan MongoDB.
Artikel ini menunjukkan cara menggunakan Spring Data MongoDB API untuk menggabungkan Spring Boot dengan MongoDB.
Cara menggunakan Spring Boot dengan MongoDB
Spring Boot adalah kerangka kerja web berbasis layanan mikro yang dikonfigurasi secara otomatis dan dapat menyediakan fitur keamanan dan akses basis data bawaan. Dengan demikian, boot Spring dapat dengan cepat membuat aplikasi yang berdiri sendiri tanpa perubahan konfigurasi. Di sisi lain, MongoDB adalah database NoSQL paling populer karena dapat dengan mudah menyimpan dan mengambil data. Menggabungkan Spring Boot dan MongoDB menghasilkan aplikasi yang aman, cepat, dan andal yang membutuhkan waktu pengembangan minimum.
Spring Boot membuat aplikasi siap produksi dengan cepat. MongoDB dan Spring Boot berinteraksi menggunakan kelas Template Mongo dan antarmuka Repositori Mongo.
- Template Mongo — ini mengimplementasikan serangkaian API yang siap digunakan. Pilihan yang baik untuk operasi seperti agregasi pembaruan, antara lain; selain itu, Template Mongo menawarkan kontrol yang lebih halus atas kueri khusus.
- Repositori Mongo digunakan untuk kueri dasar yang melibatkan banyak bidang dokumen seperti melihat dokumen dan pembuatan data.
Konfigurasi Spring Boot MongoDB menggunakan kedua pendekatan hanya membutuhkan beberapa baris kode.
Spring Boot adalah kerangka kerja aplikasi untuk aplikasi web Java berdasarkan kerangka kerja MVC (Model-View-Controller). Injeksi ketergantungannya menangani fitur seperti keamanan basis data, akses, dan inisialisasi, memungkinkan pengembang untuk fokus pada logika bisnis. Selain itu, ini dibangun di atas kerangka Spring, terutama untuk REST API dan membutuhkan konfigurasi yang sangat sedikit. Ini memiliki empat lapisan:
Lapisan presentasi — Bagian tampilan dari kerangka kerja MVC menangani front-end.
Lapisan bisnis adalah pengontrol tempat semua logika bisnis dan validasi dilakukan.
Lapisan persistensi — Lapisan ini menerjemahkan objek bisnis ke objek database.
Lapisan basis data — Operasi CRUD (Buat, Baca, Perbarui, Hapus) yang sebenarnya.
MongoDB adalah database cepat yang mampu menangani sejumlah besar data terorganisir dan tidak terstruktur, sehingga ideal untuk aplikasi web. MongoDB menyimpan data sebagai objek JSON Biner, yang menyederhanakan pengambilan data. Kerangka kerja Spring mencakup konektor kuat yang memungkinkan operasi database yang efisien dengan MongoDB.
Kami hanya peduli dengan lapisan Persistence dan Database di Spring Boot dengan contoh tutorial MongoDB ini. Kami akan menjalankan perangkat lunak kami melalui Lingkungan Pengembangan Terintegrasi (IDE) untuk mempertahankan penekanan kuat pada operasi CRUD. Untuk menghubungkan Spring Boot dan MongoDB, kami akan menambahkan konfigurasi Spring Boot MongoDB.
Apa yang akan kita buat dalam contoh ini
Mari kita kembangkan daftar belanjaan pengguna fiktif. Kami akan melakukan prosedur berikut:
- Kami mendefinisikan barang belanjaan Plain Old Java Object (POJO) dengan ID, nama, kuantitas, dan kategori di aplikasi Spring kami.
- Setelah itu, kami melakukan tindakan membuat, membaca, memperbarui, dan menghapus (CRUD) melalui antarmuka publik MongoRepository.
- Akhirnya, kami mendemonstrasikan metode yang berbeda untuk memodifikasi dokumen dengan memanfaatkan kelas MongoTemplate.
Prasyarat
Kami membutuhkan:
- Cluster MongoDB Atlas (jika Anda belum memiliki akun, daftar gratis sebelum melanjutkan ke fase berikutnya).
- Inisialisasi Musim Semi
- Java 1.8
- Maven (instal Maven dengan membuka "Bantuan -> lalu Instal perangkat lunak baru" di Eclipse).
- Lingkungan pengembangan terintegrasi (IDE) akan mengimpor pustaka dan dependensi penting. Eclipse akan digunakan untuk ilustrasi proyek ini.
Untuk memulai, buat proyek Spring Boot dengan pengaturan berikut menggunakan Spring Initializr:
Pilih Proyek Maven dengan Java (8) sebagai bahasa pemrograman dan Spring Boot 2.5.3 sebagai versinya. Selain itu, tambahkan dependensi Spring Web dan Spring Data MongoDB. Spring Web mengintegrasikan server Apache Tomcat, Spring MVC, dan REST ke dalam aplikasi Anda, untuk memusatkan pengelolaan semua dependensi umum.
Kami memanfaatkan ketergantungan Spring Data MongoDB untuk mengakses data dari cluster MongoDB Atlas kami di aplikasi ini.
Masukkan metadata untuk proyek (seperti yang diilustrasikan di atas) dan pilih opsi JAR. Spring Initializr mengelola pembuatan file pom.xml sementara Maven mengunduh dependensi yang diperlukan melalui pom.xml.
Ini melengkapi persiapan kami untuk pengaturan. Setelah itu, kita dapat mengklik tombol Generate untuk menghasilkan semua file yang diperlukan untuk bootstrap proyek Spring Boot. Setelah itu, browser akan mulai mengunduh file ZIP secara otomatis.
Setelah mengunduh file ZIP, unzip proyek. Dari IDE, buka proyek. Anda dapat melihat contoh struktur proyek yang mirip dengan ini:
Seperti yang bisa kita lihat, dependensi yang kita tambahkan disertakan dalam file pom.xml sebagai artifactId:
Saatnya mengisi subdirektori src/main/java dengan konten.
Implementasi Model MongoDB
Kelas POJO atau GroceryItem berfungsi sebagai model kami di sini.
Buat paket bernama “com.example.mdbspringboot.model” dan sertakan kelas GroceryItem.java di dalamnya.
Anotasi @Document digunakan untuk menentukan nama koleksi yang akan digunakan model. MongoDB akan membuat koleksi jika belum ada.
Kami dapat menghasilkan getter dan setter untuk kode ini dengan menggunakan opsi Eclipse Source -> Generate Getters and Setters. Pertama, gunakan anotasi @Id untuk menentukan _id kunci utama dari dokumen MongoDB. MongoDB akan secara otomatis menghasilkan bidang _id saat dokumen dibuat jika kita tidak menentukan apa pun.
Implementasi MongoDB API di Spring Boot
Repositori adalah tempat API diimplementasikan. Ini berfungsi sebagai jembatan antara database dan model, menyediakan akses ke semua aktivitas CRUD.
Buat paket bernama “com.example.mdbspringboot.repository” untuk memuat semua file repositori.
Kami membuat antarmuka publik untuk ItemRepository yang memperluas antarmuka MongoRepository.
Pendekatan pertama, findItemByName, memerlukan argumen kueri, yang menentukan bidang tempat kueri harus difilter. Ini ditentukan menggunakan anotasi @Query. Teknik kedua memanfaatkan bidang kategori untuk mengambil semua objek yang termasuk dalam kategori tertentu. Kami hanya ingin nama dan nomor bidang diproyeksikan dalam jawaban kueri; oleh karena itu, kami menyetel bidang tersebut ke 1. Kami menerapkan kembali metode count() dalam statusnya saat ini.
Contoh MongoDB dengan Spring Boot CRUD
Kami sekarang siap untuk mengembangkan Aplikasi Musim Semi kami dan menguji metodenya.
Untuk menautkan ke MongoDB Atlas, kami mendefinisikan string koneksi di file application.properties folder src/main/resources. String koneksi cluster dapat diakses di UI Atlas. Tidak ada file lain yang diperlukan untuk menyertakan kode terkait koneksi. Spring Boot mengelola koneksi database atas nama kami.
Selain itu, kami menentukan nama database di sini – MongoDB akan membuatnya jika tidak ada.
Kami tidak menggunakan Controller atau View dalam sampel Spring Boot MongoDB ini. Sebagai gantinya, untuk melihat output di konsol, kami akan menggunakan CommandLineRunner.
Buat kelas utama MdbSpringBootApplication.java dalam paket root com.example.mdbspringboot:
Untuk menjalankan aplikasi pegas, kelas kami MdbSpringBootApplication menggunakan antarmuka CommandLineRunner. ItemRepository adalah Autowired, yang berarti bahwa Spring akan menemukannya secara otomatis. Anotasi @SpringBootApplication digunakan untuk menginisialisasi Konteks Aplikasi. Selain itu, kami mengaktifkan Repositori Mongo dengan @EnableMongoRepositories. Struktur proyek kami sekarang harus menyerupai berikut ini:
Sekarang, mari tambahkan operasi repositori ke kelas utama, yang akan digunakan untuk operasi CRUD:
Membuat operasi Boot Musim Semi MongoDB
Kami akan menggunakan fungsi simpan untuk membuat dokumen baru. Kita dapat mengakses metode simpan melalui kelas SimpleMongoRepository, yang menggunakan protokol MongoRepository. Antarmuka ItemRepository kami memperluas antarmuka ItemRepository MongoRepository.
Metode simpan akan menerima parameter tipe GroceryItem. Bagian ini akan membuat lima item belanjaan (dokumen) kemudian menggunakan fungsi simpan untuk menyimpannya ke MongoDB.
Operasi baca Spring Boot MongoDB
Kami sedang melakukan empat operasi baca yang berbeda dalam aplikasi ini:
Gunakan fungsi findAll() untuk mengambil semua dokumen (barang kebutuhan sehari-hari).
Fungsi findItemByName mengembalikan satu item (dokumen) berdasarkan bidang namanya.
Ambil daftar objek yang diatur menurut kategori.
Hitung jumlah total objek.
Kami dapat merancang fungsi pembantu untuk memformat hasil operasi baca:
Operasi pembaruan Boot Musim Semi MongoDB
Asumsikan kita berubah pikiran dan lebih memilih istilah "kudapan" daripada "makanan ringan" di daftar belanjaan kita. Kami perlu memperbarui dokumen apa pun yang berisi kategori "makanan ringan". Untuk melakukannya, pertama-tama kita harus mengambil semua kertas yang termasuk dalam kategori “makanan ringan”, mengubah kategori menjadi “kudapan”, lalu menyimpan semua dokumen.
Operasi penghapusan Boot Musim Semi MongoDB
Alih-alih mengubah kategori atau item, kami mungkin ingin menghapus item belanjaan dari daftar kami. Menggunakan fungsi deleteById yang telah ditentukan sebelumnya, kami dapat menghapus item belanjaan dengan ID tertentu.
Kita bisa menggunakan groceryItemRepo.deleteAll(); berfungsi untuk menghapus semua item. Menghapus semua dokumen dalam koleksi tidak akan menghapusnya.
Merakit operasi CRUD
Setelah itu, kita akan mengimplementasikan CommandLineRunner. Untuk memanggil metode sebelumnya, gunakan metode run():
Pernyataan system.out digunakan untuk meningkatkan tampilan keluaran.
Saat perangkat lunak dijalankan, output berikut diharapkan:
Fungsi pembaruan MongoDB Spring Boot bersama dengan MongoTemplate
Selain itu, kita dapat memanfaatkan kelas MongoTemplate untuk melakukan tindakan pembaruan pada bidang tertentu. Ini termasuk fungsionalitas default paket org.springframework.data.mongodb.core.query. Kami tidak perlu menulis kode dalam jumlah besar, dan pembaruan dapat dilakukan dengan satu kueri basis data. MongoTemplate juga dapat digunakan untuk proses yang lebih rumit seperti agregasi (tidak dalam cakupan panduan ini).
Repositori khusus harus dibuat sebelum menggunakan kelas yang disebut MongoTemplate. Di sinilah kueri untuk pembaruan akan dibuat.
Izinkan saya untuk mendemonstrasikan cara membuat metode yang memperbarui jumlah item supermarket.
Buat antarmuka CustomItemRepository:
Kami dapat memperluas antarmuka dengan metode sebanyak yang diperlukan dan memberikan contoh di kelas CustomItemRepositoryImpl:
Spring akan mengimpor dependensi objek karena MongoTemplate adalah @Autowired. Selain itu, anotasi @Component memungkinkan Spring menemukan antarmuka CustomItemRepository.
Langkah berikut adalah memanggil fungsi ini dari dalam kelas utama kita. Seperti halnya grosirItemRepo, kita harus mendefinisikan customRepo kita sebagai berikut:
Kemudian, di kelas utama, buat metode berikut yang memanggil fungsi customRepo kita:
Tambahkan metode berikut ke metode run sehingga dipanggil saat program dijalankan:
Anda harus mendapatkan hasil berikut:
Seperti yang dikatakan sebelumnya, kami dapat melakukan modifikasi dalam satu transaksi basis data alih-alih MongoRepository, yang memerlukan tiga tindakan:cari, setel, dan simpan. MongoTemplate juga menyertakan metode updateMulti(), yang memungkinkan Anda memperbarui beberapa dokumen secara bersamaan.
Kesimpulan
Kami menunjukkan dalam artikel ini betapa sederhananya mengintegrasikan MongoDB dengan Spring Boot. Tidak ada kode lain yang diperlukan untuk terhubung ke MongoDB Atlas. MongoDB Atlas menyediakan antarmuka yang mudah digunakan untuk menyimpan dan mengakses data dari lokasi mana pun. Jika Anda telah menyelesaikan tutorial sederhana ini, kami yakin Anda sekarang memahami cara menggunakan Spring Boot dengan MongoDB. Jika Anda mengalami kesulitan, hubungi melalui bagian komentar untuk bantuan. Terima kasih telah membaca.