JavaRush /Blog Jawa /Random-JV /Spring kanggo wong kesed. Fundamentals, konsep dhasar lan...

Spring kanggo wong kesed. Fundamentals, konsep dhasar lan conto karo kode. Bagean 1

Diterbitake ing grup
Akeh wong, sawise maca artikel babagan nggawe cithakan kanggo proyek web lan babagan nggawe layanan web sing prasaja nggunakake servlets , kepingin weruh nalika aku bakal nulis babagan Spring. Aku ora pengin, Aku disaranake maca buku (lan aku isih ngomong sing buku luwih saka 10, utawa malah 100 artikel ing Internet). Nanging saiki aku wis mutusake yen nerangake bab sing padha kanggo wong sing beda-beda, aku nglampahi wektu luwih akeh tinimbang yen aku lungguh sepisan lan nulis artikel, banjur mung ngirim link menyang. Dadi aku nulis kanggo link)). Spring kanggo wong kesed.  Fundamentals, konsep dhasar lan conto karo kode.  Bagean 1 - 1Ing artikel iki, aku ora bakal nulis carane nggawe proyek kerja ing Spring ing 5 menit sawise conto. Aku bakal nulis mung bab dhasar, tanpa kawruh kang mesthi bisa kanggo miwiti project, nanging apa mengkono ana, lan, liyane Jahwéh, kok, ora bakal cetha.

Apa Spring Framework?

Spring Framework , utawa mung Spring , iku salah siji saka framework paling populer kanggo nggawe aplikasi web ing Jawa. A framework soko padha perpustakaan (mbok menawa istilah iki luwih menowo kanggo sampeyan), nanging ana siji titik. Kanthi kasar, nggunakake perpustakaan, sampeyan mung nggawe obyek saka kelas sing ana ing kono, nelpon metode sing dibutuhake, lan kanthi mangkono entuk asil sing dibutuhake. Yaiku, ana pendekatan sing luwih penting: sampeyan kanthi jelas nuduhake ing program sampeyan ing wektu tartamtu sampeyan kudu nggawe obyek, ing wayahe sampeyan kudu nelpon cara tartamtu, lsp. Kanthi frameworks, iku rada beda. Sampeyan mung nulis sawetara kelas dhewe, nulis sawetara bagéan saka logika ana, lan framework dhewe nggawe obyek saka kelas lan nelpon cara kanggo sampeyan. Paling asring, kelas sampeyan ngleksanakake sawetara antarmuka saka framework utawa marisi sawetara kelas saka iku, saéngga nampa sawetara fungsi wis ditulis kanggo sampeyan. Nanging ora kudu kaya ngono. Ing Spring, contone, padha nyoba kanggo pindhah adoh saka kopling ketat kuwi okehe (nalika kelas langsung gumantung ing sawetara kelas / antarmuka saka framework iki), lan nggunakake anotasi kanggo maksud iki. Kita bakal bali menyang titik iki mengko. Nanging iku penting kanggo ngerti sing Spring mung pesawat saka sawetara kelas lan antarmuka sing wis ditulis kanggo sampeyan :) Aku uga pengin langsung Wigati sing Spring bisa digunakake ora mung kanggo aplikasi web, nanging uga kanggo console paling umum. aplikasi sing dadi menowo kanggo kabeh kita program Lan dina iki kita malah bakal nulis kaya ngono.

Struktur

Nanging Spring ora siji framework tartamtu. Iki luwih jeneng umum kanggo sawetara frameworks cilik, saben kang nindakake sawetara jenis proyek beda.
Spring kanggo wong kesed.  Fundamentals, konsep dhasar lan conto karo kode.  Bagean 1 - 2
Minangka sampeyan bisa ndeleng, spring duwe struktur modular. Iki ngidini kita mung nyambungake modul sing dibutuhake kanggo aplikasi lan ora nyambungake sing jelas ora bakal digunakake. Sa adoh aku ngerti, pendekatan iki sing mbantu Spring ngluwihi pesaing ing wektu kasebut (EJB) lan dadi pimpinan. Amarga aplikasi sing nggunakake EJB narik akeh ketergantungan karo dheweke, lan umume dadi alon lan kikuk. Gambar nuduhake yen framework spring kasusun saka sawetara modul:
  • akses data;
  • web;
  • inti;
  • lan liya-liyane.
Dina iki kita bakal kenal karo sawetara konsep modul utama, kayata: kacang buncis, konteks lan liya-liyane. Minangka sampeyan bisa ngira, modul akses data ngemot alat kanggo nggarap data (utamane database), web - kanggo nggarap jaringan (kalebu kanggo nggawe aplikasi web, sing bakal dibahas mengko). Kajaba iku, ana uga sing disebut infrastruktur Spring kabeh: akeh proyek liyane sing ora resmi kalebu ing framework dhewe, nanging seamlessly Integrasi menyang project Spring Panjenengan (contone, keamanan spring padha kanggo nggarap wewenang pangguna ing situs, kang, Mugi, kita uga bakal aran liyawektu).

Kenapa Spring ing Jawa?

Inggih, saliyane kasunyatan sing modis, apik gayane, lan enom, aku bisa langsung ngomong yen sampeyan bisa nguwasani sanajan sethithik, sampeyan bakal ngerti carane akeh karya sing saiki ora kudu dilakoni, lan pira Spring njupuk ing. Sampeyan bisa nulis sawetara rolas baris saka configs, nulis saperangan saka kelas - lan sampeyan bakal entuk proyek apa. Nanging sanalika sampeyan miwiti kanggo mikir bab pira ana "ing hood", pinten karya wis rampung, lan carane akeh kode bakal kudu ditulis yen sampeyan nindakake project padha ing servlets gundhul utawa ing soket lan Jawa murni. - rambutmu ngadeg ing mburi :) Malah ana ekspresi kaya "sihir" Spring. Iki nalika sampeyan ndeleng manawa kabeh bisa digunakake, nanging sampeyan kira-kira pira sing kudu kedadeyan ing kana supaya kabeh bisa ditindakake lan kepiye cara kerjane ing kana - mula kabeh iki kedadeyan amarga ana sihir tenan)) Iku luwih gampang. nelpon kabeh Piandel saka nyoba kanggo nerangake carane iku kabeh interconnected ana. mesem data_ web-mvc_ securitymung dhasar.

DI/IoC

Yen sampeyan nyoba maca babagan Spring, mula sing pertama ditemokake yaiku huruf iki: DI/IoC . Saiki aku menehi saran supaya sampeyan ngaso saka artikel iki lan maca artikel iki babagan Habré ! IoC (Inversion of Control) - inversi kontrol. Aku wis nyebataken babagan iki nalika aku nulis yen nalika nggunakake perpustakaan, sampeyan dhewe nulis ing kode sampeyan cara obyek sing bakal ditelpon, lan ing kasus framework, paling asring framework bakal nelpon kode sing ditulis ing sisih tengen. wektu. Tegese, ing kene sampeyan ora bisa ngontrol proses eksekusi kode / program, nanging kerangka kasebut kanggo sampeyan. Sampeyan ditransfer kontrol kanggo dheweke (inversi kontrol). DI dimangerteni minangka salah siji Dependency Inversion (inversi dependensi, yaiku , nyoba ora nggawe sambungan hard antarane modul / kelas, ngendi siji kelas langsung disambungake menyang liyane), utawa Dependency Injection (injeksi dependensi, iki nalika obyek kucing ora. digawe dening sampeyan ing utama lan banjur sampeyan pass menyang cara sampeyan, lan Spring nggawe wong kanggo sampeyan, lan sampeyan mung marang wong kaya "Aku pengin njaluk kucing kene" lan liwat kanggo sampeyan ing cara). Kita bakal luwih kerep nemoni sing nomer loro ing artikel liyane.

Kacang buncis lan konteks

Salah sawijining konsep utama ing musim semi yaiku kacang . Intine, iku mung obyek saka sawetara kelas. Dadi, kanggo program kita kudu nggunakake 3 obyek: kucing, asu lan manuk beo. Lan kita duwe akeh kelas kanthi macem-macem metode, ing ngendi kita butuh kucing kanggo metode, lan asu kanggo metode liyane, lan kadhangkala kita bakal duwe metode sing butuh kucing lan manuk beo (contone, metode kanggo dipakani kucing, hehe), lan ing sawetara cara, kabeh telung obyek bakal dibutuhake. Ya, pisanan kita bisa nggawe telung obyek iki ing utama, lan banjur pass menyang kelas kita, lan saka ing kelas kanggo cara kita kudu ... Lan ing saindhenging program. Lan yen kita uga mbayangno manawa kita pengin ngganti dhaptar paramèter sing ditampa kanthi periodik kanggo metode kita (uga, kita mutusake kanggo nulis ulang utawa nambah fungsionalitas) - banjur kita kudu nggawe akeh suntingan kanggo kode yen perlu. ngganti soko. Saiki, apa yen kita mbayangno yen kita ora duwe 3, nanging 300 obyek kasebut? Alternatif kanggo ngumpulake kabeh obyek kasebut dadi siji dhaptar obyek umum ( List<Object> ) lan pass menyang kabeh metode, lan saka njero metode entuk obyek iki utawa sing dibutuhake. Nanging apa yen kita mbayangno yen program kasebut maju, sawetara obyek bisa ditambahake menyang dhaptar iki, utawa (apa sing luwih elek) dibusak? Banjur ing kabeh cara kanggo njupuk obyek saka dhaptar kanthi indeks, kabeh bisa rusak. Banjur kita mutusake kanggo nyimpen dudu dhaptar, nanging peta, ing ngendi tombol kasebut bakal dadi jeneng obyek sing kita butuhake, lan nilai kasebut bakal dadi obyek kasebut, banjur kita bisa entuk obyek sing kita butuhake mung kanthi jeneng. : njaluk ("parrot") lan nanggepi kita nampa parrot obyek Utawa, umpamane, kunci yaiku kelas obyek, lan nilai obyek kasebut dhewe, mula kita ora bisa nuduhake jeneng obyek kasebut, nanging mung kelas obyek sing kita butuhake, sing uga trep. Utawa malah nulis sawetara jinis pambungkus liwat peta, ngendi sampeyan bisa nggawe cara supaya ing sawetara kasus sampeyan bisa njupuk obyek kanthi jeneng, lan ing kasus liyane dening kelas. Iki sing kita entuk saka konteks aplikasi musim semi . Konteks yaiku sakumpulan kacang (obyek). Nguripake konteks, kita bisa entuk kacang (obyek) sing kita butuhake kanthi jeneng, umpamane, utawa miturut jinise, utawa liya-liyane. Kajaba iku, kita bisa njaluk Spring kanggo golek kacang sing kita butuhake ing konteks lan ngirim menyang metode kita. Contone, yen kita duwe metode kaya iki:
public void doSomething(Cat cat) {
    ...
}
Nalika Spring nyebutake cara iki kanggo kita, dheweke ngliwati obyek kucing kita saka konteks kasebut. Saiki kita mutusake manawa metode kita, saliyane kucing, uga butuh manuk beo. Nggunakake spring - ora ana sing luwih gampang kanggo kita! Kita mung nulis:
public void doSomething(Cat cat, Parrot parrot) {
    ...
}
lan Spring, nalika nelpon cara iki kita, bakal ngerti sing kita kudu pass kucing lan manuk beo kene, pindhah menyang konteks, njaluk loro obyek iki lan pass menyang cara kita. Kanthi nyerahake kendali program kita menyang Spring, kita uga nransfer tanggung jawab kanggo nggawe obyek lan ngirim menyang metode kita, sing bakal diarani. Pitakonan muncul: kepiye Spring bakal ngerti obyek sing bakal digawe?

Metode Konfigurasi Aplikasi

Ana telung cara utama kanggo ngatur aplikasi (yaiku, ngandhani Spring obyek sing kudu kita lakoni):
  1. nggunakake file xml / configs;
  2. nggunakake konfigurasi java;
  3. konfigurasi otomatis.
Pangembang musim semi ngatur ing urutan prioritas iki:
  • cara paling prioritas sing kudu diwenehi preferensi yaiku konfigurasi otomatis;
  • yen nggunakake konfigurasi otomatis ora bisa ngatur kanthi bener kabeh kacang buncis, nggunakake konfigurasi Jawa (nggawe obyek nggunakake kode Jawa);
  • Ya, cara prioritas paling murah yaiku cara lawas, nggunakake konfigurasi xml.
Kajaba iku, Spring ngidini sampeyan nggabungake metode kasebut. Contone, ayo Spring nindakake kabeh sing bisa dikonfigurasi kanthi otomatis; ing ngendi sampeyan kudu nemtokake sawetara paramèter khusus, gunakake konfigurasi Java, lan saliyane, sampeyan bisa nyambungake sawetara konfigurasi warisan ing format xml. Umumé, kabeh iki bisa ditindakake kanthi fleksibel. Nanging, yen kabeh bisa ditindakake kanthi nggunakake setelan otomatis, gunakake. Aku mung bakal nimbang konfigurasi otomatis lan configs Jawa; xml configs wis digunakake ing meh saben Spring conto ing Internet, lan yen sampeyan ngerti carane konfigurasi Jawa dianggo, mesthine ora ana masalah "maca" file xml sing nindakake perkara sing padha. Konfigurasi otomatis digunakake nalika obyek sing dibutuhake kanggo karya minangka obyek saka kelas sing wis ditulis . Yen sawetara logika banget tartamtu dibutuhake kanggo nggawe obyek saka kelas kita, utawa yen kita ora duwe kesempatan kanggo menehi tandha sawetara kelas karo anotasi kita kudu, kang bakal dijupuk dening konfigurasi otomatis, iki bisa rampung ing Jawa configs. . Ing bagean sabanjure , kita bakal nggawe proyek maven, nyambungake sawetara modul spring tengah lan nggawe kacang buncis pisanan.
Komentar
TO VIEW ALL COMMENTS OR TO MAKE A COMMENT,
GO TO FULL VERSION