org.springframework

1. Perkenalan

Spring Framework menyediakan pemrograman yang bersih dan ekspresif serta model konfigurasi untuk aplikasi perusahaan berbasis Java modern yang dapat berjalan di platform penerapan apa pun.

Artikel ini mencakup ikhtisar tingkat tinggi dari kerangka kerja Spring dan terutama, paket org.springframework yang menyediakan dukungan untuk injeksi ketergantungan, manajemen transaksi, aplikasi web, akses data, pengiriman pesan, pengujian, dan lainnya.

2. Fitur

Framework Spring menawarkan daftar fitur yang lengkap:

  • Aplikasi web Spring MVC dan kerangka kerja layanan web RESTful
  • Pemrograman Berorientasi Aspek termasuk manajemen transaksi deklaratif Spring
  • Injeksi Ketergantungan
  • Pembalikan Kontrol

dan banyak lagi.

3. Ketergantungan Maven

Jika Anda ingin menambahkan Spring ke proyek Maven Anda, Anda dapat menemukan informasi lebih lanjut tentangnya di sini.

4. Proyek Musim Semi

Kerangka ini mencakup sejumlah modul dan proyek yang berbeda. Dari konfigurasi hingga keamanan, aplikasi web hingga data besar - apa pun kebutuhan infrastruktur aplikasi Anda, ada Proyek Musim Semi untuk membantu Anda membangunnya.

Mulailah dari yang kecil dan gunakan apa yang Anda butuhkan - Spring memiliki desain modular. Mari kita lihat beberapa proyek tersebut di sini.

4.1. Spring Web MVC

Kerangka kerja MVC web menyediakan arsitektur Model-View-Controller, yang dirancang dengan DispatcherServlet yang menangani semua permintaan dan respons HTTP serta membuat aplikasi digabungkan secara longgar.

Hal terbaik tentang itu adalah memungkinkan Anda untuk menggunakan objek apa pun sebagai perintah atau objek formulir - tidak perlu mengimplementasikan antarmuka khusus kerangka kerja atau kelas dasar. Data bindingnya sangat fleksibel: misalnya, memperlakukan ketidakcocokan jenis sebagai kesalahan validasi yang dapat dievaluasi oleh aplikasi, bukan sebagai kesalahan sistem.

Di sini Anda dapat menemukan panduan lengkapnya.

4.2. Platform IO Musim Semi

Platform IO mendefinisikan sekumpulan dependensi (keduanya dependensi Spring Framework sebagai pustaka pihak ketiga) yang dapat disertakan pada proyek Java untuk memungkinkan Anda memilih dependensi yang diperlukan tanpa mengkhawatirkan kompatibilitas antara versinya (karena Spring IO menjaminnya).

Platform IO disertifikasi untuk bekerja dengan Java 7 dan 8.

Lihat proyek GitHub.

4.3. Sepatu Musim Semi

Spring Boot memudahkan pembuatan Aplikasi berbasis Spring kelas produksi yang berdiri sendiri dan dapat Anda "jalankan". Itu membuatnya sangat mudah untuk membuat aplikasi bertenaga Spring dengan sedikit kerja.

Aplikasi yang dibuat dengannya sebagian besar dapat dikonfigurasi secara otomatis dengan beberapa default yang masuk akal dan di samping itu dapat ditingkatkan dengan metrik (berapa banyak permintaan, berapa lama permintaan berlangsung, dll.).

Ini terdiri dari beberapa modul (opsional):

  1. CLI - Antarmuka baris perintah, berdasarkan Groovy, untuk memulai / menghentikan aplikasi yang dibuat spring boot.
  2. Boot Core - Basis untuk modul lain.
  3. Konfigurasi otomatis - Modul untuk mengkonfigurasi secara otomatis berbagai project Spring. Ini akan mendeteksi ketersediaan kerangka kerja tertentu (Spring Batch, Spring Data JPA, Hibernate, JDBC).
  4. Aktuator - Proyek ini, ketika ditambahkan, akan mengaktifkan fitur perusahaan tertentu (Keamanan, Metrik, halaman Kesalahan Default) ke aplikasi Anda.
  5. Starters - Berbagai project quickstart untuk disertakan sebagai dependensi dalam file build Maven atau Gradle Anda. Ini akan memiliki dependensi yang dibutuhkan untuk jenis aplikasi itu. Saat ini, terdapat proyek awal untuk proyek web (berbasis tomcat dan jetty), Spring Batch, Spring Data JPA, Spring Integration, Spring Security.
  6. Tools - Fitur build Maven dan Gradle serta Spring Boot Loader kustom (digunakan dalam satu jar / perang yang dapat dijalankan) disertakan dalam project ini.

Kita dapat menemukan artefak Maven di sini dan melihat proyek GitHub.

4.4. Data Musim Semi

Misi Spring Data adalah untuk menyediakan model pemrograman berbasis Spring yang familiar dan konsisten untuk akses data sambil tetap mempertahankan ciri khusus dari penyimpanan data yang mendasarinya.

Tujuan utama dari proyek ini adalah untuk mempermudah pembuatan aplikasi bertenaga Spring yang menggunakan teknologi akses data baru seperti database non-relasional, kerangka kerja pengurangan peta, dan layanan data berbasis cloud serta memberikan dukungan yang ditingkatkan untuk teknologi database relasional .

Ini adalah proyek payung yang berisi banyak sub-proyek yang dikhususkan untuk database tertentu (seperti JPA, MongoDB, Redis, Apache Solr, Gemfire, Apache Cassandra). Proyek ini dikembangkan dengan bekerja sama dengan banyak perusahaan dan pengembang yang berada di belakang teknologi yang menarik ini.

4.5. Keamanan Musim Semi

Spring Security adalah kerangka kerja yang berfokus pada penyediaan otentikasi dan otorisasi untuk aplikasi Java. Seperti semua proyek Musim Semi, kekuatan nyata dari Keamanan Musim Semi ditemukan dalam betapa mudahnya itu dapat diperpanjang untuk memenuhi persyaratan khusus. Ini dirilis di bawah lisensi Apache 2.0 sehingga Anda dapat menggunakannya dengan percaya diri dalam proyek Anda.

Ini juga mudah dipelajari, diterapkan, dan dikelola. Ini memiliki ruang nama keamanan khusus yang memberikan arahan untuk sebagian besar operasi umum, memungkinkan keamanan aplikasi lengkap hanya dalam beberapa baris XML dan dapat melindungi aplikasi Anda dari serangan seperti fiksasi sesi, pembajakan klik, pemalsuan permintaan lintas situs, dll.

Spring Security juga terintegrasi dengan banyak teknologi Spring lainnya, termasuk Spring Web Flow, Spring Web Services dan Pivotal tc Server.

Lihat FAQ keamanan Spring untuk mendapatkan wawasan yang lebih dalam dan halaman ketergantungan Maven. Juga, lihat tutorial keamanan Spring untuk Otentikasi, Pendaftaran, dan penyiapan Keamanan Musim Semi dengan Maven .

4.6. Sosial Musim Semi

Spring Social adalah perluasan dari kerangka kerja yang memungkinkan aplikasi untuk terhubung dengan penyedia Perangkat Lunak sebagai Layanan seperti Twitter, Facebook, dan API berbasis otentikasi OAuth lainnya. Ini menyediakan kerangka kerja otentikasi OAuth yang siap digunakan untuk aplikasi berbasis web.

Fitur:

  • Kerangka penyedia layanan yang dapat diperluas yang sangat menyederhanakan proses menghubungkan akun pengguna lokal ke akun penyedia yang dihosting.
  • Pengontrol koneksi yang menangani aliran otorisasi antara aplikasi web Java / Spring Anda, penyedia layanan, dan pengguna Anda.
  • Pengikatan Java ke API penyedia layanan populer seperti Facebook, Twitter, LinkedIn, TripIt, dan GitHub.
  • Pengontrol masuk yang memungkinkan pengguna mengautentikasi dengan aplikasi Anda dengan masuk melalui penyedia layanan.

Panduan Memulai:

  • Mengakses Data Facebook
  • Pengaturan Twitter Sosial Musim Semi
  • Login Facebook Sekunder

Spring menyediakan beberapa contoh proyek GitHub untuk membuat Anda memulai dengan cepat dan referensi Spring Social juga berguna dengan halaman mulai cepat.

4.7. Spring Shell

Spring Shell adalah shell interaktif yang dapat dengan mudah diperluas dengan perintah menggunakan model pemrograman berbasis Spring.

Pengguna proyek shell dapat dengan mudah membangun aplikasi shell ( alias baris perintah) berfitur lengkap dengan bergantung pada jar Spring Shell dan menambahkan perintah mereka sendiri (yang datang sebagai metode pada spring beans). Membuat aplikasi baris perintah dapat berguna misalnya untuk berinteraksi dengan REST API proyek Anda, atau untuk bekerja dengan konten file lokal.

Proyek GitHub dapat ditemukan di sini.

4.8. Spring Mobile

Spring Mobile merupakan perpanjangan dari framework MVC dan Spring Web yang bertujuan untuk mempermudah pengembangan aplikasi web mobile.

Spring Mobile adalah kerangka kerja yang memberikan kemampuan untuk mendeteksi jenis perangkat yang membuat permintaan ke situs web Spring Anda dan menyajikan tampilan alternatif berdasarkan perangkat tersebut. Seperti semua proyek Spring, kekuatan sebenarnya dari Spring Mobile terletak pada betapa mudahnya diperpanjang.

Fitur:

  • Abstraksi pemecah perangkat untuk deteksi sisi server dari perangkat seluler dan tablet
  • Pengelolaan preferensi situs yang memungkinkan pengguna untuk menunjukkan apakah dia lebih menyukai pengalaman "normal", "seluler", atau "tablet"
  • Pengalih situs yang mampu mengalihkan pengguna ke situs yang paling sesuai, baik seluler, tablet, atau normal, berdasarkan perangkatnya dan secara opsional menunjukkan preferensi situs
  • Manajemen tampilan sadar perangkat untuk mengatur dan mengelola tampilan yang berbeda untuk perangkat tertentu.

Aplikasi contoh ini akan membantu Anda memulai dengan cepat.

Anda juga dapat mendeteksi perangkat, menangani preferensi situs web, atau menyajikan konten web seluler dengan Spring MVC.

4.9. Batch Musim Semi

Spring Batch adalah framework ringan dan komprehensif yang bertujuan untuk memungkinkan pengembangan aplikasi batch yang penting untuk operasi harian sistem perusahaan.

Aplikasi batch dalam konteks ini mengacu pada sistem offline otomatis yang ditargetkan untuk pemrosesan data massal. Spring Batch mengotomatiskan iterasi batch dasar ini, memberikan kemampuan untuk memproses transaksi serupa sebagai satu set, biasanya dalam lingkungan offline tanpa interaksi pengguna.

Spring Batch bekerja dengan membaca data dengan ukuran potongan yang dapat dikonfigurasi dari sumber data, memprosesnya, dan terakhir menulisnya ke sumber daya.

Sumber data untuk pembaca dapat berupa file datar (file teks, file XML, file CSV…), database relasional (MySQL…), MongoDB.

Demikian pula, seorang penulis dapat menulis data ke file datar, database relasional, MongoDB, mailer dll.

Mulailah dengan cepat dengan Membuat Layanan Batch dan dengan sumber daya batch Spring lainnya.

5. Paket Inti Musim Semi

Di sini, mari kita lihat paket inti Spring.

  • org.springframework.cache - Paket ini mendukung sub paket dan kelas untuk manajemen cache deklaratif, menyiapkan cache sumber terbuka di pustaka Caffeine, mendukung kelas untuk cache sumber terbuka EhCache 2.x.

  • org.springframework.context - Paket ini dibangun di atas paket kacang untuk menambahkan dukungan untuk sumber pesan dan pola desain Observer, dan kemampuan objek aplikasi untuk mendapatkan sumber daya menggunakan API yang konsisten.

  • org.springframework.core - Menyediakan kelas dasar untuk penanganan pengecualian dan deteksi versi serta pembantu inti lainnya yang tidak spesifik untuk bagian mana pun dari kerangka kerja.

  • org.springframework.expression - Paket ini menyediakan abstraksi inti di balik Spring Expression Language .

  • org.springframework.http - Paket ini berisi abstraksi dasar melalui HTTP sisi klien / server.

  • org.springframework.jdbc - Kelas dalam paket ini membuat JDBC lebih mudah digunakan dan mengurangi kemungkinan kesalahan umum.
  • org.springframework.jms - Paket ini berisi kelas integrasi untuk JMS, memungkinkan akses JMS gaya Spring.

  • org.springframework.jndi - Kelas-kelas dalam paket ini membuat JNDI lebih mudah digunakan, memfasilitasi pengaksesan konfigurasi yang disimpan di JNDI, dan menyediakan superclass yang berguna untuk kelas akses JNDI.

  • org.springframework.orm.hibernate5 - Paket menyediakan integrasi Hibernate 5.x dengan konsep Spring.

  • org.springframework.test.util - Kelas utilitas umum untuk digunakan dalam pengujian unit dan integrasi.

Daftar ini terbatas dan hanya menjelaskan paket inti untuk framework Spring. Anda dapat menemukan daftar lengkapnya di sini.

6. Kesimpulan

Dalam artikel ikhtisar singkat ini, kami telah melihat berbagai proyek yang ada di ekosistem Spring dan membuat banyak koleksi dependensi Maven, proyek GitHub, dan fitur komprehensif yang ditawarkan setiap proyek untuk membuat aplikasi web kami aman, dapat diskalakan, dan mudah digunakan. tinggal dengan.

Kami juga melihat paket inti yang memberi kami kekuatan untuk fokus pada aspek logis aplikasi kami.