JavaRush /Blog Jawa /Random-JV /Apa sampeyan kudu ngerti bab Spring: sajarah, modul tombo...

Apa sampeyan kudu ngerti bab Spring: sajarah, modul tombol, comparison karo Jawa EE

Diterbitake ing grup
Hello! Saiki, arah pangembangan sing paling populer kanggo pangembang sing duwe kawruh babagan Jawa yaiku pangembangan web. Mesthi, kanggo spesialisasi iki ana dhaptar teknologi sing dibutuhake kanggo sinau. Salah siji sing utama yaiku Spring . Sampeyan bisa uga mbantah manawa sampeyan bisa sinau basa JawaApa sampeyan kudu ngerti babagan Spring: sejarah, modul kunci, mbandhingake karo Java EE - 1 EE . Iki, mesthi, bener, nanging saiki akèh-akèhé saka proyèk anyar nggunakake Spring , kang wis sakbenere standar, teknologi wajib kanggo pangembang web Jawa. Lan yen sampeyan pengin tetep karo kabutuhan pasar, sampeyan kudu sinau. Dina iki aku kaya kanggo pirembagan bab Spring , yaiku, kanggo nggedhekake sesanti saka iku sethitik: Dhiskusi bab sajarah nggawe, beda tombol saka tumpukan Jawa EE lan menehi ringkesan singkat saka komponen tombol saka tumpukan Spring . Ayo dadi miwiti! Apa sampeyan kudu ngerti babagan Spring: sejarah, modul kunci, mbandhingake karo Java EE - 2

1. Kepiye lan kapan Spring muncul lan apa sing berkembang dadi wektu

Iku kabeh diwiwiti ing Oktober 2002 , nalika Rod Johnson nulis buku "Expert One-onOne J2EE Design and Development": Apa sampeyan kudu ngerti babagan Spring: sejarah, modul kunci, mbandhingake karo Java EE - 3Ing buku iki, diterbitake dening Wrox , penulis nggambarake kahanan pangembangan perusahaan Java ing wektu kasebut lan nuduhake sawetara kekurangan Java EE lan lingkungan (Enterprise Java Bean)EJB . Ing wektu sing padha, Rod Johnson ngusulake solusi sing luwih prasaja adhedhasar kelas Jawa biasa (POJO - obyek Jawa lawas kosong) lan injeksi ketergantungan. Ing buku kasebut, dheweke nerangake carane nggawe aplikasi reservasi online sing bisa diukur kanthi kualitas dhuwur tanpa nggunakake EJB. Sing. dheweke jelas nuduhake carane mbusak kerumitan pembangunan aplikasi lan nggawe iku bisa nggunakake JavaBeans prasaja kanggo entuk kabeh sing sadurunge mung bisa nggunakake EJBs. Nanging, orane katrangan saka Spring ora winates kanggo pangembangan komponen lunak mlaku ing sisih server. Sembarang aplikasi Java bisa njupuk kauntungan saka kaluwihan framework ing syarat-syarat gamblang, testability, lan coupling longgar. Desain pangembangan J2EE dheweke dadi hit cepet. Akeh kode aplikasi, sing diwenehake kanthi bebas minangka bagean saka buku kasebut, bisa digunakake maneh, lan sawetara pangembang wiwit nggunakake ing proyeke. Wrox duwe kaca web kanggo buku kasebut kanthi kode sumber lan patch. Dheweke uga nyedhiyakake forum online kanggo buku kasebut. Ing Februari 2003, pangembang Jürgen Heller lan Jann Karoff ngyakinake Rod Johnson kanggo nggawe proyek open source adhedhasar kode kerangka. Wiwit iku, Rod, Jurgen lan Yann miwiti kolaborasi kanggo nggawe sing anyar. Ing kasunyatan, iku Yann Karoff sing teka munggah karo jeneng "Spring" kanggo framework anyar. Apa sing dimaksud ing kene yaiku Spring kaya musim semi: wiwitan anyar sawise "musim dingin" J2EE tradisional.
  • Ing wulan Juni 2003, Spring 0.9 dirilis miturut lisensi Apache 2.0.
  • Spring 1.0 dirilis ing Maret 2004. Sing nggumunake, sanajan sadurunge diluncurake Spring 1.0, versi sadurunge 0.9 ditampa kanthi apik lan diadopsi kanthi akeh.
  • Ing wulan Agustus 2004, Rod Johnson, Jürgen Heller, Keith Donald lan Colin Sampaleanu ngedegake antarmuka21 , perusahaan konsultasi, pelatihan lan dhukungan Spring.
  • Oktober 2006: Spring 2.0 dirilis, sing nyederhanakake file konfigurasi XML.
  • Spring 2.5, dirilis ing November 2007, ngenalake konfigurasi anotasi.
  • Spring 3.2, dirilis ing Desember 2012, ngenalake konfigurasi Java, ndhukung Java 7, Hibernate 4, Servlet 3.0, lan mbutuhake paling ora Java 1.5.
  • Yann Karoff ninggalake tim kasebut awal. Rod Johnson ninggalake tim musim semi ing 2012. Jürgen Heller isih dadi anggota aktif ing tim pangembangan Spring.
  • Spring 4.0, dirilis ing 2014, nambah dhukungan kanggo Java 8.
  • Uga ing 2014, Spring Boot dikenalake ing donya.
  • Spring 5.0 dirilis ing 2017. Kaya Spring Boot 2.x, sing ndhukung Spring 5.
  • Bener, iki kepiye kerangka favorit kita dadi apa sing kita kenal saiki.

2. Spring vs Jawa EE

Ayo nggawe perbandingan cilik saka rong tumpukan Java utama kanggo pangembang web: Spring lan Java EE. Apa sampeyan kudu ngerti babagan Spring: sejarah, modul kunci, mbandhingake karo Java EE - 4
Jawa EE
Kaluwihan Cacat
  • Aplikasi sing ditulis ing Java EE dianggep luwih dipercaya, aman lan bisa diukur
  • Java EE minangka standar API sing disetujoni industri
  • Utamane adhedhasar anotasi lan CDI (injeksi konteks lan ketergantungan), kaya Spring
  • Implementasi adhedhasar kontainer EJB lan POJO
  • Aplikasi Komplek kanthi akeh transaksi ditangani kanthi apik dening JEE
  • Sukses digunakake kanggo aplikasi monolitik sing bisa diukur
  • Java EE nduweni basa OOP dhewe sing ngemot gaya lan sintaksis tartamtu
  • Lingkungan pangembangan aplikasi sing rumit banget sing angel dingerteni para pamula (lan kadhangkala uga kanggo wong tuwa)
  • Biaya pungkasan proyek kasebut, kalebu desain, penyebaran lan pangembangan aplikasi, bisa uga larang
Java EE, dilisensi dening Oracle, dirancang kanggo organisasi lan perusahaan sing mbutuhake lingkungan sing bisa diadaptasi lan disebarake kanggo mbangun aplikasi pasar massal. Kaya Spring, Java EE kalebu perpustakaan tambahan kanggo akses database (JDBC, JPA), invocation remot engineering (RMI), informasi (JMS), administrasi web, pangolahan XML lan ciri API standar kanggo JavaBeans perusahaan, portlet, Servlets, Java Server Pages, etc. Apa sampeyan kudu ngerti babagan Spring: sejarah, modul kunci, mbandhingake karo Java EE - 5Sasaran dhasar saka Java EE kanggo unravel masalah utama ngadhepi dening gawe bab mbangun aplikasi saiki nggunakake macem-macem API. Ing wektu sing padha, pangembangan ing Java EE nduweni tingkat kerumitan sing dhuwur, sing ngunggahake standar sing ora mung kanggo pamula. Lan bisa dadi angel kanggo spesialis sing berpengalaman kanggo ngerti fungsi sing wis ditulis, mula pangembangan ing Java EE luwih suwe lan luwih larang. Babagan Java EE kanthi ringkes, kita bisa ngomong iki: Komplek, nanging fleksibel. Saiki ayo ngomong babagan Spring . Apa sampeyan kudu ngerti babagan Spring: sejarah, modul kunci, mbandhingake karo Java EE - 6
Spring
Kaluwihan Cacat
  • Ngidini sampeyan ngatur interaksi obyek kanthi efektif
  • Luwih prasaja tinimbang Java EE
  • Dilaksanakake kanthi basis IOC lan AOP , sing njamin kopling aplikasi sing longgar
  • Dianggo adhedhasar XML, Groovy utawa konfigurasi anotasi
  • Ngidini sampeyan nggunakake obyek Jawa lawas biasa - POJOs, pangembang ora mbutuhake wadah perusahaan kaya server aplikasi
  • Nyedhiyakake pangembang Jawa kanthi tingkat modularitas sing dhuwur
  • Nyedhiyakake implementasi perpustakaan Java EE, nanging kanthi cara dhewe, nggawe panggunaane luwih gampang
  • Lisensi Open Source
  • Spring Boot banget nyederhanakake persiyapan aplikasi awal
  • Kode aplikasi spring umume gampang dites
  • Spring relatif angel dikembangake amarga kurang fokus sing jelas
  • Kanggo pangembang Java anyar, sinau kerangka Spring bisa dadi tantangan (nanging isih luwih gampang tinimbang Java EE)
  • Spring luwih alon tinimbang Java EE
Spring minangka kerangka Java open source kanggo bisnis gedhe. Kerangka Spring nduweni tujuan kanggo nyedhiyakake implementasine gagasan J2EE sing paling gampang lan nggunakake praktik pemrograman sing apik banget kanthi nambah kapabilitas model pemrograman berbasis POJO. Sing. Java EE luwih minangka standar resmi, dene Spring luwih minangka kerangka sing ngetrapake standar iki kanthi cara dhewe.

Asil mbandhingake

Ing pangertenku, Java EE lan Spring kaya JDBC lan Hibernate, ing ngendi JDBC minangka teknologi sing luwih cepet, nanging ing wektu sing padha karo akeh kode sing ora perlu. Lan Hibernate wis nggunakake JDBC, nanging ing wektu sing padha simplifying lan ngurangi pembangunan Ngartekno (sanajan nemtokke sawetara Watesan). Ora bisa ngomong kanthi pasti endi sing luwih apik. Iki uga kaya-kaya kaya pitakonan: sing luwih apik - ArrayList utawa LinkedList. Sawise kabeh, jawaban bakal padha - gumantung saka kahanan. Saben wong duwe kaluwihan lan kelemahane dhewe, lan sampeyan kudu milih kanthi ati-ati, nimbang kahanan lan pangerten sing bakal entuk manfaat paling akeh saiki. Apa sampeyan kudu ngerti babagan Spring: sejarah, modul kunci, mbandhingake karo Java EE - 7

3. Spring Komponen

Saiki ayo ngomong sethithik babagan kerangka kerja sing nggawe Spring.

Rangka spring

Iki minangka modul inti sing nyedhiyakake model pemrograman lan konfigurasi lengkap kanggo aplikasi perusahaan basis Java modern-ing platform penyebaran apa wae. Isine akeh inti (inti) teknologi Spring :
  • inti - fungsi dhasar sing ngetrapake konsep IoC (inversi kontrol) lan DI (injeksi ketergantungan) ;
  • AOP - Pemrograman Berorientasi Aspek - pemrograman berorientasi aspek sing dituju kanggo ngetrapake logika end-to-end;
  • MVC lan WebFlux - kerangka kanggo interaksi web;
  • JDBC , ORM - teknologi kanggo sesambungan karo database;
  • Tes - fungsionalitas kanggo tes transparan lan ora rumit saka data wadhah Spring;
  • SpEL - Basa Ekspresi Spring - Basa ekspresi musim semi;
  • lsp.

Boot Spring

Nyederhanakake nggawe aplikasi basis Spring kanthi nyilikake persiyapan aplikasi awal lan unsur aplikasi Spring sing konfigurasi otomatis. Conto miwiti boot Spring ing 5 menit

Data Spring

Nyederhanakake panggunaan teknologi akses data, basis data relasional lan non-relasional (mbusak kode sing bola-bali lan nyederhanakake interaksi karo data). Artikel iki ngemot tutorial sing apik babagan nyambungake Data Spring.

Awan Spring

Digunakake ing arsitektur layanan mikro, nyederhanakake interaksi layanan mikro lan ngotomatisasi panyebaran aplikasi ing platform maya kayata AWS , Azure , lsp. Waca tutorial rinci ing Spring Cloud kene , nanging aku bakal ngelingake sampeyan sing topik iki ora gampang lan ngarahke ing specialists cedhak tingkat senior.

Keamanan Spring

Nyedhiyakake alat bukti asli (otentikasi) lan kontrol akses (otorisasi) sing kuat lan bisa disesuaikan kanggo aplikasi. Sampeyan bisa nemokake conto prasaja kanggo nyambungake Spring Security menyang aplikasi sampeyan ing kirim iki . Apa sampeyan kudu ngerti babagan Spring: sejarah, modul kunci, mbandhingake karo Java EE - 8

Spring GraphQL

Modul iki nyedhiyakake dhukungan kanggo aplikasi Spring sing dibangun ing Java GraphQL. GraphQL minangka basa pitakon kanggo API sing ngidini klien takon sakumpulan data winates sing dibutuhake, sing ngidini data dikumpulake ing jumlah pitakon sing winates. Yen sampeyan wis kenal karo JPA, sampeyan bisa uga wis nemokake EntityGraph, kanthi konsep sing padha (utawa padha). Sampeyan bisa maca liyane babagan GraphQL kene .

Sesi Spring

Bagean saka kerangka Spring iki nyedhiyakake API lan implementasine kanggo ngatur informasi sesi pangguna (data sesi pangguna disimpen ing panyimpenan sing terus-terusan kaya Redis , MongoDb , HazelCast , lsp.). Conto nggunakake Spring Session bisa ditemokaké kene .

Integrasi Spring

Modul iki dirancang kanggo nyederhanakake olahpesen ing aplikasi basis Spring lan ndhukung integrasi karo sistem eksternal liwat adaptor deklaratif. Adaptor iki nyedhiyakake tingkat abstraksi sing luwih dhuwur tinimbang dhukungan Spring kanggo remot, olahpesen, lan jadwal. Artikel rinci .

Spring REST

Nyedhiyakake piranti sing sugih sing nyederhanakake pangembangan REST API: alat kanggo nuntun panjalukan, kanggo ngowahi JSON/XML dadi obyek saka jinis sing dibutuhake, lsp. Conto layanan RESTful ing Spring bisa ditemokake ing materi iki .

Aliran Web Spring

Spring Web Flow adhedhasar Spring MVC lan ngidini sampeyan ngleksanakake "aliran" aplikasi web. Aliran kasebut ngemot urutan langkah-langkah sing nuntun pangguna kanggo ngrampungake sawetara tugas bisnis. Padha ngetung pirang-pirang panjalukan HTTP, stateful, nggarap data transaksional, bisa digunakake maneh, lan bisa dinamis lan awet. Conto nyambungake Spring Web Flow bisa dideleng ing pandhuan iki ing basa Inggris .

Spring WebServices

Modul iki dirancang kanggo nggawe luwih gampang ngembangake layanan SOAP adhedhasar kontrak kanthi ngidini sampeyan nggawe layanan web fleksibel nggunakake salah siji saka akeh cara kanggo ngapusi payload XML. SOAP - Simple Object Access Protocol - Protokol prasaja kanggo ngakses obyek.

Spring HATEOAS

Modul kasebut nyedhiyakake sawetara API supaya luwih gampang nggawe pengontrol REST sing ngetutake prinsip HATEOAS nalika nggarap Spring lan utamane Spring MVC. HATEOAS - Hypermedia Minangka Engine Of Application State - Hypermedia minangka engine saka negara aplikasi. Sampeyan bisa ndeleng nggunakake perpustakaan Spring iki kene .

Spring Batch

Modul iki nyedhiyakake fungsi kanggo pangolahan data batch (nalika data diproses ing potongan gedhe - batch), penting kanggo operasi saben dina sistem perusahaan. Spring Batch nyedhiyakake fitur sing bisa digunakake maneh sing dibutuhake kanggo nangani rekaman volume gedhe, kalebu logging / nelusuri, manajemen transaksi, statistik pangolahan proyek, miwiti maneh proyek, skipping, lan manajemen sumber daya. Sampeyan bisa nemokake ringkesan menarik saka Spring Batch ing link iki .

Spring AMQP

Modul kasebut ngetrapake konsep Spring inti kanggo pangembangan solusi olahpesen basis AMQP. Nyedhiyakake cithakan minangka abstraksi tingkat dhuwur kanggo ngirim lan nampa pesen. Uga nyedhiyakake dhukungan kanggo POJO sing didhukung pesen kanthi wadah pamireng. AMQP - Protokol Antrian Pesen Lanjut - Protokol Antrian Pesen Lanjut. Proyek kasebut ngemot rong bagean: spring-amqp minangka abstraksi dhasar, lan spring-rabbit minangka implementasine kanggo RabbitMQ . Conto karo sambungan RabbitMQ nggunakake Spring Apa sampeyan kudu ngerti babagan Spring: sejarah, modul kunci, mbandhingake karo Java EE - 9

Spring kanggo Apache Kafka

Proyek iki ngetrapake konsep inti Spring kanggo pangembangan solusi olahpesen adhedhasar Kafka . Cithakan diwenehake minangka abstraksi tingkat dhuwur kanggo ngirim pesen. Uga nyedhiyakake dhukungan kanggo POJO sing didhukung pesen kanthi anotasi sing dibutuhake lan wadah pamireng. Ana persamaan sing jelas ing kene karo Spring AMQP, nanging modul iki diadaptasi khusus kanggo Kafka. Conto nyambungake Spring Kafka bisa dideleng ing kene .

Spring CredHub

Nyedhiyakake dhukungan sisih klien kanggo nyimpen, njupuk, lan mbusak kredensial saka server CredHub sing mlaku ing platform Cloud Foundry . CredHub - Nyedhiyani API kanggo nyimpen, nggawe, njupuk, lan mbusak macem-macem jinis kredensial kanthi aman. Spring CredHub nyedhiyakake ikatan Java kanggo CredHub API, dadi gampang kanggo nggabungake aplikasi Spring karo CredHub.

Spring FLO

Iku perpustakaan JavaScript sing nawakake HTML5 desainer visual embeddable prasaja kanggo pipelines lan grafik prasaja kanggo ngawasi streaming lan batch data. Tur babagan teknologi iki ana ing video ing tautan kasebut .

Spring LDAP

Pustaka iki nyederhanakake operasi LDAP lan adhedhasar Spring JdbcTemplate. Kerangka kasebut ngidini telusuran lan nutup konteks, ndeleng asil, enkoding / nilai dekoding, saringan lan liya-liyane (dibangun kanthi prinsip sing padha karo Spring Jdbc) Conto implementasi Spring LDAP bisa ditemokake ing kene .

Spring Roo

Modul iki nyedhiyakake alat RAD sing bisa nggawe lan ngatur aplikasi basis Spring. Tujuane kanggo ningkatake produktivitas pangembang Jawa. Ora bisa nulis logika bisnis aplikasi sampeyan, nanging bisa nangani konfigurasi lan prasarana.

Spring Shell

Perpustakaan nggampangake nggawe aplikasi cangkang lengkap (uga dikenal minangka baris perintah) kanthi ngandelake stoples Spring Shell lan nambahake printah sampeyan dhewe (sing dadi metode ing kacang Spring). Nggawe aplikasi baris perintah bisa migunani, contone, kanggo sesambungan karo REST API proyek utawa nggarap konten file lokal. Waca liyane kene lan kene .

Spring Statemachine

Modul iki ngidini pangembang aplikasi nggunakake konsep mesin negara karo aplikasi Spring. Conto rinci babagan nggunakake fungsi iki bisa ditemokake ing kene lan ing kene .

Spring Vault

Spring Vault nyedhiyakake abstraksi Spring sing akrab lan dhukungan sisih klien kanggo ngakses, nyimpen, lan mbatalake rahasia. Nawakake abstraksi tingkat rendah lan tingkat dhuwur kanggo sesambungan karo Vault , mbebasake pangguna saka masalah infrastruktur. Conto implementasi Spring Vault Apa sampeyan kudu ngerti babagan Spring: sejarah, modul kunci, mbandhingake karo Java EE - 10"Apa aku kudu sinau kabeh iki?" - sampeyan takon ing gumun. Aja wedi! Iki salah! Luwih tepate, ora kaya ngono. Iki minangka dhaptar lengkap teknologi sing kasedhiya ing Spring. Dhaptar teknologi sing kudu dingerteni pamula luwih sederhana:
  • Inti Spring
  • Boot Spring
  • Spring Web (MVC lan REST)
  • Spring Data (Spring ORM, Spring JDBC, Spring JPA)
  • Tes Spring
Ana uga teknologi liyane sing asring ditemokake ing proyek, nanging amarga kerumitan, biasane ditangani dening pangembang sing luwih berpengalaman tinimbang wong anyar ijo. Nanging, uga migunani kanggo pamula kanggo paling ora duwe pangerten umum babagan:
  • Keamanan Spring
  • Spring AOP
  • Awan Spring
Teknologi liyane digunakake luwih jarang, dadi sampeyan mung kudu sinau kanthi serius kanggo nggarap proyek tartamtu. Miturut cara, sampeyan bisa nemokake dhaptar lengkap babagan apa sing kudu dingerteni pangembang Jawa ing artikelku liyane. Sing kabeh kanggo kula dina iki, nganti ketemu sampeyan kabeh! Apa sampeyan kudu ngerti babagan Spring: sejarah, modul kunci, mbandhingake karo Java EE - 11
Komentar
TO VIEW ALL COMMENTS OR TO MAKE A COMMENT,
GO TO FULL VERSION