KodeGym/Blog Jawa/Acak/Spring kanggo wong kesed Foundation, konsep dhasar, lan c...
John Squirrels
tingkat
San Francisco

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

Diterbitake ing grup
Spring kanggo wong kesed Foundation, konsep dhasar, lan conto karo kode.  Bagean 1 - 1Ing artikel iki, aku ora bakal ngandhani sampeyan carane nggawe proyek Spring sing bisa digunakake ing 5 menit nggunakake kodeku. Aku mung arep nulis dhasar - bab sing bisa sampeyan ora ngerti lan isih nggawe proyek. Nanging ing artikel iki, sampeyan isih ora ngerti apa sing kedadeyan lan, sing luwih penting, kenapa.

Apa Spring Framework?

Spring Framework, utawa mung Spring, minangka salah sawijining kerangka kerja sing paling populer kanggo nggawe aplikasi web ing Jawa. A framework kaya perpustakaan (mbok menawa sampeyan luwih menowo istilah iki), nanging ana soko kanggo nimbang. Secara kasar, nalika sampeyan nggunakake perpustakaan, sampeyan mung nggawe conto kelas sing ana, nelpon metode sing sampeyan butuhake, lan kanthi mangkono entuk asil sing dibutuhake. Ing tembung liyane, iki minangka pendekatan sing luwih penting: ing program sampeyan, sampeyan kanthi jelas nuduhake wektu tartamtu nalika sampeyan kudu nggawe obyek, nalika nelpon cara tartamtu, lan liya-liyane. Sampeyan mung nulis sawetara kelas dhewe lan nulis sawetara logika ing wong-wong mau, nanging banjur framework dhewe nggawe conto saka kelas lan nelpon cara sing. Kelas sampeyan biasane ngleksanakake sawetara antarmuka saka framework utawa marisi sawetara kelas, saéngga nyedhiyakake sawetara fungsi sing wis ditulis kanggo sampeyan. Nanging iki ora mesthi. Contone, Spring nyoba okehe kanggo supaya kopling nyenyet kuwi (ngendi kelas langsung gumantung ing kelas / antarmuka ing framework). Iki nggunakake anotasi kanggo entuk iki. Kita bakal bali menyang iki mengko. Nanging iku penting kanggo ngerti sing Spring mung koleksi kelas lan antarmuka sing kasedhiya kanggo sampeyan nggunakake :) Aku uga pengin Wigati langsung sing Spring bisa digunakake ora mung kanggo aplikasi web, nanging uga kanggo program console paling umum. sing akrab banget karo kita kabeh. Lan kita malah bakal nulis salah siji saka dina iki. saéngga nyedhiyakake sawetara fungsi sing wis ditulis kanggo sampeyan. Nanging iki ora mesthi. Contone, Spring nyoba okehe kanggo supaya kopling nyenyet kuwi (ngendi kelas langsung gumantung ing kelas / antarmuka ing framework). Iki nggunakake anotasi kanggo entuk iki. Kita bakal bali menyang iki mengko. Nanging iku penting kanggo ngerti sing Spring mung koleksi kelas lan antarmuka sing kasedhiya kanggo sampeyan nggunakake :) Aku uga pengin Wigati langsung sing Spring bisa digunakake ora mung kanggo aplikasi web, nanging uga kanggo program console paling umum. sing akrab banget karo kita kabeh. Lan kita malah bakal nulis salah siji saka dina iki. saéngga nyedhiyakake sawetara fungsi sing wis ditulis kanggo sampeyan. Nanging iki ora mesthi. Contone, Spring nyoba okehe kanggo supaya kopling nyenyet kuwi (ngendi kelas langsung gumantung ing kelas / antarmuka ing framework). Iki nggunakake anotasi kanggo entuk iki. Kita bakal bali menyang iki mengko. Nanging iku penting kanggo ngerti sing Spring mung koleksi kelas lan antarmuka sing kasedhiya kanggo sampeyan nggunakake :) Aku uga pengin Wigati langsung sing Spring bisa digunakake ora mung kanggo aplikasi web, nanging uga kanggo program console paling umum. sing akrab banget karo kita kabeh. Lan kita malah bakal nulis salah siji saka dina iki. Spring nyoba okehe kanggo supaya kopling nyenyet kuwi (ngendi kelas langsung gumantung ing kelas / antarmuka ing framework). Iki nggunakake anotasi kanggo entuk iki. Kita bakal bali menyang iki mengko. Nanging iku penting kanggo ngerti sing Spring mung koleksi kelas lan antarmuka sing kasedhiya kanggo sampeyan nggunakake :) Aku uga pengin Wigati langsung sing Spring bisa digunakake ora mung kanggo aplikasi web, nanging uga kanggo program console paling umum. sing akrab banget karo kita kabeh. Lan kita malah bakal nulis salah siji saka dina iki. Spring nyoba okehe kanggo supaya kopling nyenyet kuwi (ngendi kelas langsung gumantung ing kelas / antarmuka ing framework). Iki nggunakake anotasi kanggo entuk iki. Kita bakal bali menyang iki mengko. Nanging iku penting kanggo ngerti sing Spring mung koleksi kelas lan antarmuka sing kasedhiya kanggo sampeyan nggunakake :) Aku uga pengin Wigati langsung sing Spring bisa digunakake ora mung kanggo aplikasi web, nanging uga kanggo program console paling umum. sing akrab banget karo kita kabeh. Lan kita malah bakal nulis salah siji saka dina iki. ) Aku uga pengin Wigati langsung sing Spring bisa digunakake ora mung kanggo aplikasi web, nanging uga kanggo program console paling umum sing dadi menowo kanggo kabeh kita. Lan kita malah bakal nulis salah siji saka dina iki. ) Aku uga pengin Wigati langsung sing Spring bisa digunakake ora mung kanggo aplikasi web, nanging uga kanggo program console paling umum sing dadi menowo kanggo kabeh kita. Lan kita malah bakal nulis salah siji saka dina iki.

Struktur

Nanging Spring ora mung siji framework tartamtu. Nanging, iki minangka jeneng umum sing digunakake kanggo nyebut sawetara kerangka cilik, sing saben-saben nindakake pakaryan dhewe. Spring kanggo wong kesed Foundation, konsep dhasar, lan conto karo kode.  Bagean 1 - 2

https://docs.spring.io/spring/docs/4.3.26.RELEASE/spring-framework-reference/htmlsingle/
Gambar 2.1. Ringkesan Spring Framework

Nalika sampeyan bisa ndeleng, Spring punika modular. Iki ngidini kita nyambungake mung modul sing dibutuhake kanggo aplikasi lan ora nyambungake modul sing jelas ora bakal digunakake. Sa adoh aku ngerti, iki pendekatan sing supaya Spring outperform sawijining banjur pesaing (EJB) lan njupuk timbal. Aplikasi sing nggunakake EJB nyeret akeh dependensi ing mburine, lan asile dadi alon lan alon. Gambar nuduhake yen Spring Framework kasusun saka sawetara modul:
  • Akses Data
  • Web
  • inti
  • lan liyane
Dina iki kita bakal kenal karo sawetara konsep sing ditemokake ing modul utama: kacang buncis, konteks, lan liya-liyane. Kaya sing wis sampeyan duga, modul Akses Data ngemot alat kanggo nggarap data (utamane database), lan modul Web kanggo nggarap jaringan (kalebu nggawe aplikasi web, sing bakal dibahas mengko). Kajaba iku, ana infrastruktur lengkap sing ndhukung Spring: akeh proyek liyane sing ora resmi kalebu ing framework dhewe, nanging seamlessly Integrasi menyang project Spring Panjenengan (contone, Spring Keamanan, sing aku uga ngarep-arep kanggo tutul ing, iku kanggo otentikasi pangguna ing situs web).

Napa Java duwe Spring Framework?

Kajaba iku, modis, lunyu lan seger, saiki aku bisa ujar manawa sampeyan entuk katrampilan cilik nggunakake Spring, sampeyan bakal ngerti kepiye kabeh jinis pakaryan sing ora ana maneh. apa, lan carane akeh karya Spring njupuk marang dhewe. Sampeyan bisa nulis sawetara rolas baris saka setelan konfigurasi lan nulis saperangan saka kelas, lan sampeyan mungkasi munggah karo proyek apa. Nanging sanalika sampeyan miwiti kepingin weruh carane akeh barang ing hood, carane akeh karya wis rampung, lan carane akeh kode sampeyan kudu nulis yen sampeyan arep kanggo ngleksanakake project padha adhedhasar servlets kosong utawa sockets lan Jawa murni, rambutmu bakal ngadeg ing pungkasan :) Spring malah diterangake minangka jenis sihir. Sampeyan ngalami iki nalika sampeyan ndeleng kabeh bisa digunakake, nanging sampeyan uga duwe idea atos carane lan carane akeh karya wis kedados konco sing pemandangan - dadi misale jek sing ana tenan sawetara jenis Piandel ing tumindak :) Iku luwih gampang kanggo nyebataken Piandel saka nyoba kanggo nerangake carane iku kabeh interconnected. :) Argumentasi kapindho sing nyinaoni Spring yaiku kira-kira 90% lowongan kerja kanggo pangembang junior (adhedhasar pengamatan pribadi) mbutuhake kawruh utawa paling ora gagasan umum babagan apa Spring.Data, Web MVC, lan Securitymodul nawakake pangembang sing canggih :) Nanging dina iki mung babagan dhasar.

DI/IoC

Yen sampeyan wis nate nyoba maca babagan Spring, mula sing pertama ditemokake yaiku akronim kasebut: DI/IoC. Saiki aku menehi saran supaya sampeyan ngaso saka artikel iki lan maca artikel DZone iki ! IoC singkatan saka inversi kontrol. Aku wis kasebut ing liwat nalika aku wrote sing nggunakake perpustakaan melu sampeyan dhewe nuduhake ing kode kang cara kanggo nelpon ing obyek, nanging sing nggunakake framework umume tegese framework bakal nelpon kode ing wektu tengen. Ing tembung liya, ing kasus sing terakhir iki, sampeyan ora lagi ngatur proses nglakokake kode/program — kerangka nindakake iki kanggo sampeyan. Sampeyan ngliwati kontrol menyang framework (inversi kontrol). DI singkatan saka injeksi dependensi. Kanthi injeksi dependensi, sampeyan ora nggawe obyek kucing ing metode utama lan banjur pindhah menyang metode sampeyan. Nanging, Spring Framework nggawe kanggo sampeyan. Sampeyan mung ngomong kaya "Aku pengin njaluk kucing ing kene" lan kerangka kasebut menehi sampeyan kanthi cara sampeyan. Kita bakal weruh singkatan iki ing artikel sabanjure.

Kacang buncis lan konteks

Salah sawijining konsep kunci ing musim semi yaiku kacang. Nyatane, iki mung obyek saka sawetara kelas. Upaminipun kita duwe program sing mbutuhake 3 obyek: kucing, asu, lan manuk beo. Lan kita duwe akeh kelas kanthi akeh metode. Kadhangkala kita butuh kucing kanggo metode, kadhangkala kita butuh asu kanggo cara sing beda, lan kadhangkala cara kita butuh kucing lan manuk beo (contone, cara kanggo menehi panganan kucing, ha-ha). Kanggo cara liyane, kabeh telung obyek dibutuhake. Ya, pisanan kita bisa nggawe telung obyek iki ing cara utama, lan banjur pass menyang kelas kita, lan banjur ing kelas iki pass menyang cara sing cocog... Lan ing saindhenging kabeh program. Nanging yen kita uga ngira yen sok-sok pengin ngganti dhaptar parameter input kanggo metode kita (contone, kita mutusake kanggo nulis maneh utawa nambah fungsi anyar), banjur kita kudu nggawe sawetara owah-owahan ing kode kasebut. Lan saiki mbayangno yen kita ora duwe 3, nanging 300 obyek kasebut. Salah sawijining alternatif yaiku ngumpulake kabeh obyek ing siji dhaptar (List<Object>), pass menyang saben metode, banjur entuk obyek sing dibutuhake nalika ana ing metode kasebut. Nanging nalika program mlaku, apa yen sawetara obyek ditambahake menyang dhaptar iki, utawa luwih elek, apa yen ana sing wis dibusak? Iki duweni potensi kanggo ngilangi saben cara sing nggunakake indeks kanggo njupuk obyek saka dhaptar. Kanggo ngindhari masalah iki, kita mutusake kanggo nyimpen obyek ora ing dhaptar, nanging ing peta, ing ngendi tombol kasebut yaiku jeneng obyek lan nilai obyek kasebut dhewe. Iki ngidini kita njupuk obyek sing kita butuhake mung kanthi nggunakake jenenge, contone get("parrot"), lan kanggo nanggepi kita entuk obyek parrot. Utawa kunci bisa dadi kelas obyek, lan nilai kasebut bisa dadi obyek kasebut. Ing kasus iki, tinimbang nemtokake jeneng obyek, nanging mung bisa tartamtu kelas obyek kita kudu. Sing uga trep. Utawa kita bisa uga nulis sawetara jinis pambungkus kanggo peta, ing ngendi sawetara metode entuk obyek kanthi jeneng, lan metode liyane entuk obyek miturut kelase. Sing wis tekan kene diarani ankonteks aplikasi ing Spring Framework. Konteks yaiku kumpulan kacang (obyek). Kita ngakses konteks kanggo entuk kacang (obyek) sing kita butuhake kanthi jeneng, jinis, utawa kanthi cara liya. Kajaba iku, kita bisa njaluk Spring dhewe kanggo golek ing konteks dhewe kanggo buncis kita perlu lan pass menyang cara kita. Contone, umpamane kita duwe metode kaya iki:
public void doSomething(Cat cat) {
    ...
}
Nalika Spring diarani metode iki, njupuk obyek kucing kita saka konteks lan ngliwati metode kasebut. Nanging saiki kita wis mutusake manawa, saliyane kucing, metode kita uga butuh manuk beo. Kanthi Spring, ora ana sing luwih gampang! Kita mung nulis:
public void doSomething(Cat cat, Parrot parrot) {
    ...
}
Saiki nalika Spring nelpon cara kita, iku mangerténi perlu kanggo pass kucing lan manuk beo, supaya dadi menyang konteks, njaluk loro obyek iki, lan pass menyang cara kita. Kanthi nransfer kendali kontrol menyang Spring, kita uga nransfer tanggung jawab kanggo nggawe obyek lan ngirim menyang metode kita, sing bakal diarani Spring. Iki dadi pitakonan: kepiye Spring ngerti obyek (kacang) sing bakal digawe?

Cara kanggo ngatur aplikasi

Ana telung cara utama kanggo ngatur aplikasi , yaiku, cara kanggo ngandhani Spring persis obyek sing dibutuhake:
  1. file konfigurasi XML
  2. konfigurasi basis Jawa
  3. konfigurasi otomatis
Pencipta Spring menehi prioritas ing urutan iki:
  • cara karo prioritas ndhuwur, kang kudu disenengi, iku konfigurasi otomatis
  • yen konfigurasi otomatis ora bisa digunakake kanggo ngatur kabeh kacang buncis kanthi bener, gunakake konfigurasi basis Java (sing kalebu nggawe obyek nggunakake kode Jawa)
  • lan metode prioritas paling murah yaiku cara lawas - nggunakake file konfigurasi XML.
Spring uga ngidini kita nggabungake metode kasebut. Contone, supaya Spring ngatur kabeh sing bisa diatur kanthi otomatis, nggunakake konfigurasi basis Java ing ngendi wae sampeyan mbutuhake paramèter khusus, lan nggunakake XML kanggo sembarang konfigurasi warisan. Iki kabeh bisa dadi cukup fleksibel. Isih, yen kabeh bisa dikonfigurasi kanthi otomatis, pilih opsi kasebut. Aku mung bakal nimbang konfigurasi otomatis lan konfigurasi basis Jawa. Konfigurasi XML digunakake ing meh kabeh conto Spring ing Internet. Apa maneh, yen sampeyan ngerti cara kerjane konfigurasi basis Java, sampeyan ora bakal duwe masalah maca file XML sing nindakake perkara sing padha. Konfigurasi otomatis digunakake nalika kita kudu nggarap obyek saka kelas sing kita tulis. Yen nggawe salah siji obyek kita mbutuhake sawetara logika tartamtu, utawa yen kita ora bisa nggawe sawetara kelas karo anotasi perlu kanggo konfigurasi otomatis, banjur kita bisa nggunakake konfigurasi basis Jawa kanggo nindakake apa kudu rampung. Ingbagean sabanjure , kita bakal nggawe project Maven, nyambungake saperangan saka modul Spring utama, lan nggawe kacang buncis pisanan.
Komentar
  • Popular
  • Anyar
  • lawas
Sampeyan kudu mlebu kanggo ninggalake komentar
Kaca iki durung duwe komentar