JavaRush /Blog Java /Random-MS /Apa yang anda perlu tahu tentang Spring: sejarah, modul u...

Apa yang anda perlu tahu tentang Spring: sejarah, modul utama, perbandingan dengan Java EE

Diterbitkan dalam kumpulan
hello! Pada masa ini, hala tuju pembangunan yang paling popular untuk pembangun yang mempunyai pengetahuan tentang Java ialah pembangunan web. Sudah tentu, untuk kepakaran ini terdapat senarai teknologi yang diperlukan untuk belajar. Salah satu yang utama ialah Spring . Anda mungkin berpendapat bahawa anda boleh belajar Java EEApa yang anda perlu tahu tentang Spring: sejarah, modul utama, perbandingan dengan Java EE - 1 sebaliknya . Ini, sudah tentu, benar, tetapi kini sebahagian besar projek baharu menggunakan Spring , yang menjadikannya hampir lalai, teknologi mandatori untuk pembangun web Java. Dan jika anda ingin mengikuti keperluan pasaran, anda perlu mengkajinya. Hari ini saya ingin bercakap tentang Spring , iaitu, untuk mengembangkan sedikit wawasan anda tentangnya: bercakap tentang sejarah penciptaannya, perbezaan utama daripada timbunan Java EE dan memberikan gambaran ringkas tentang komponen utama timbunan Spring . Mari kita mulakan! Apa yang anda perlu tahu tentang Spring: sejarah, modul utama, perbandingan dengan Java EE - 2

1. Bagaimana dan bila Spring muncul dan apa yang berubah menjadi dari semasa ke semasa

Semuanya bermula pada Oktober 2002 apabila Rod Johnson menulis buku "Reka Bentuk dan Pembangunan J2EE Pakar One-onOne": Apa yang anda perlu tahu tentang Spring: sejarah, modul utama, perbandingan dengan Java EE - 3Dalam buku ini, diterbitkan oleh Wrox , penulis menerangkan keadaan pembangunan Java perusahaan pada masa itu dan menunjukkan beberapa kelemahan. Java EE dan persekitaran (Enterprise Java Bean)EJB . Pada masa yang sama, Rod Johnson mencadangkan penyelesaian yang lebih mudah berdasarkan kelas Java biasa (POJO - objek Java lama biasa) dan suntikan kebergantungan. Dalam buku itu, beliau menerangkan cara anda boleh mencipta aplikasi tempahan dalam talian yang berkualiti tinggi dan berskala tanpa menggunakan EJB. Itu. beliau dengan jelas menunjukkan cara untuk membuang kerumitan pembangunan aplikasi dan memungkinkan untuk menggunakan JavaBeans mudah untuk mencapai semua yang sebelum ini hanya boleh dilakukan menggunakan EJB. Walau bagaimanapun, skop Spring tidak terhad kepada pembangunan komponen perisian yang berjalan di bahagian pelayan. Mana-mana aplikasi Java boleh memanfaatkan kelebihan rangka kerja dari segi kesederhanaan, kebolehujian dan gandingan longgar. Reka bentuk pembangunan J2EE beliau menjadi popular segera. Kebanyakan kod aplikasi, yang disediakan secara percuma sebagai sebahagian daripada buku, boleh diguna semula, dan beberapa pembangun tidak lama kemudian mula menggunakannya dalam projek mereka. Wrox mempunyai halaman web untuk buku dengan kod sumber dan tampalan. Mereka juga menyediakan forum dalam talian untuk buku itu. Pada Februari 2003, pembangun Jürgen Heller dan Jann Karoff meyakinkan Rod Johnson untuk mencipta projek sumber terbuka berdasarkan kod rangka kerja. Sejak saat itu, Rod, Jurgen dan Yann memulakan kerjasama mereka untuk mencipta sesuatu yang benar-benar baharu. Malah, Yann Karoff yang menghasilkan nama "Spring" untuk rangka kerja baharu itu. Apa yang dimaksudkan di sini ialah Musim Bunga adalah seperti musim bunga: permulaan baharu selepas "musim sejuk" J2EE tradisional.
  • Pada Jun 2003, Spring 0.9 telah dikeluarkan di bawah lesen Apache 2.0.
  • Spring 1.0 telah dikeluarkan pada Mac 2004. Menariknya, sebelum keluaran Spring 1.0, versi sebelumnya 0.9 telah diterima dengan baik dan diterima pakai secara meluas.
  • Pada Ogos 2004, Rod Johnson, Jürgen Heller, Keith Donald dan Colin Sampaleanu mengasaskan antara muka21 , sebuah syarikat perundingan, latihan dan sokongan Spring.
  • Oktober 2006: Spring 2.0 dikeluarkan, yang memudahkan fail konfigurasi XML.
  • Spring 2.5, dikeluarkan pada November 2007, memperkenalkan konfigurasi anotasi.
  • Spring 3.2, dikeluarkan pada Disember 2012, memperkenalkan konfigurasi Java, menyokong Java 7, Hibernate 4, Servlet 3.0, dan juga memerlukan sekurang-kurangnya Java 1.5.
  • Yann Karoff meninggalkan pasukan lebih awal. Rod Johnson meninggalkan pasukan musim bunga pada tahun 2012. Jürgen Heller masih merupakan ahli aktif pasukan pembangunan Spring.
  • Spring 4.0, dikeluarkan pada 2014, menambah sokongan untuk Java 8.
  • Juga pada tahun 2014, Spring Boot telah diperkenalkan kepada dunia.
  • Spring 5.0 telah dikeluarkan pada 2017. Seperti Spring Boot 2.x, yang menyokong Spring 5.
  • Sebenarnya, inilah cara rangka kerja kegemaran kami menjadi seperti yang kami ketahui sekarang.

2. Spring lwn Java EE

Mari kita buat perbandingan kecil dua tindanan Java utama untuk pembangun web: Spring dan Java EE. Apa yang anda perlu tahu tentang Spring: sejarah, modul utama, perbandingan dengan Java EE - 4
Java EE
Kelebihan Kecacatan
  • Aplikasi yang ditulis dalam Java EE dianggap lebih dipercayai, selamat dan berskala
  • Java EE ialah piawaian API yang diluluskan oleh industri
  • Terutamanya berdasarkan anotasi dan CDI (suntikan konteks dan kebergantungan), sama seperti Spring
  • Pelaksanaan berdasarkan kontena EJB dan POJO
  • Aplikasi kompleks dengan jumlah transaksi yang banyak dikendalikan dengan baik oleh JEE
  • Berjaya digunakan untuk aplikasi monolitik berskala
  • Java EE mempunyai bahasa OOP sendiri yang mengandungi gaya dan sintaks tertentu
  • Persekitaran pembangunan aplikasi yang sangat kompleks yang sukar difahami oleh pemula (dan kadangkala untuk orang tua juga)
  • Kos akhir projek, termasuk reka bentuk, penggunaan dan pembangunan aplikasi, mungkin terlalu mahal
Java EE, yang dilesenkan oleh Oracle, direka untuk organisasi dan syarikat yang memerlukan persekitaran yang boleh disesuaikan secara meluas dan boleh diagihkan untuk membina aplikasi pasaran massa. Seperti Spring, Java EE termasuk perpustakaan tambahan untuk akses pangkalan data (JDBC, JPA), invokasi kejuruteraan jauh (RMI), maklumat (JMS), pentadbiran web, pemprosesan XML dan mencirikan API standard untuk JavaBeans perusahaan, portlet, Servlet, Halaman Pelayan Java, dll. Apa yang anda perlu tahu tentang Spring: sejarah, modul utama, perbandingan dengan Java EE - 5Matlamat asas Java EE adalah untuk merungkai isu utama yang dihadapi oleh pembangun berkenaan membina aplikasi semasa menggunakan pelbagai API. Pada masa yang sama, pembangunan di Java EE mempunyai tahap kerumitan yang tinggi, yang meningkatkan bar yang sangat tinggi bukan sahaja untuk pemula. Dan mungkin sukar bagi pakar berpengalaman untuk memahami fungsi yang sudah ditulis, jadi pembangunan dalam Java EE mengambil masa yang lebih lama dan, oleh itu, lebih mahal. Mengenai Java EE secara ringkas kita boleh katakan ini: Kompleks, tetapi fleksibel. Nah, sekarang mari kita bercakap sedikit tentang Spring . Apa yang anda perlu tahu tentang Spring: sejarah, modul utama, perbandingan dengan Java EE - 6
Musim bunga
Kelebihan Kecacatan
  • Membolehkan anda mengatur interaksi objek dengan berkesan
  • Lebih mudah daripada Java EE
  • Dilaksanakan berdasarkan IOC dan AOP , yang memastikan gandingan longgar aplikasi
  • Berfungsi berdasarkan konfigurasi XML, Groovy atau anotasi
  • Membolehkan anda menggunakan objek Java lama biasa - POJO, pembangun tidak memerlukan bekas perusahaan seperti pelayan aplikasi
  • Menyediakan pembangun Java dengan tahap modulariti yang tinggi
  • Menyediakan pelaksanaan perpustakaan Java EE, tetapi dengan cara tersendiri, menjadikan penggunaannya lebih mudah
  • Lesen Sumber Terbuka
  • Spring Boot sangat memudahkan persediaan aplikasi awal
  • Kod aplikasi musim bunga biasanya mudah untuk diuji
  • Musim bunga agak sukar untuk dibangunkan kerana ia tidak mempunyai fokus yang jelas
  • Untuk pembangun Java baharu, mempelajari rangka kerja Spring boleh mencabar (tetapi masih lebih mudah daripada Java EE)
  • Musim bunga lebih perlahan daripada Java EE
Spring ialah rangka kerja Java sumber terbuka untuk perniagaan besar. Rangka kerja Spring bertujuan untuk menyediakan pelaksanaan idea J2EE yang paling mudah dan memanfaatkan amalan pengaturcaraan cemerlang dengan memperluaskan keupayaan model pengaturcaraan berasaskan POJO. Itu. Java EE lebih kepada standard rasmi, manakala Spring lebih kepada rangka kerja yang melaksanakan piawaian ini dengan cara tersendiri.

Hasil perbandingan

Pada pemahaman saya, Java EE dan Spring adalah seperti JDBC dan Hibernate, di mana JDBC adalah teknologi yang lebih pantas, tetapi pada masa yang sama dengan banyak kod yang tidak diperlukan. Dan Hibernate sudah menggunakan JDBC, tetapi pada masa yang sama memudahkan dan mengurangkan pembangunan dengan ketara (walaupun mengenakan beberapa sekatan). Tidak mustahil untuk mengatakan dengan pasti yang mana antara mereka yang lebih baik. Ini juga agak mengingatkan soalan: yang mana lebih baik - ArrayList atau LinkedList. Lagipun, jawapannya akan sama - bergantung kepada keadaan. Setiap daripada mereka mempunyai kekuatan dan kelemahan sendiri, dan anda perlu memilih daripada mereka dengan berhati-hati, menimbang situasi anda dan memahami yang mana antara mereka akan membawa faedah yang paling banyak sekarang. Apa yang anda perlu tahu tentang Spring: sejarah, modul utama, perbandingan dengan Java EE - 7

3. Komponen Spring

Nah, sekarang mari kita bercakap sedikit tentang rangka kerja yang membentuk Spring.

Rangka kerja musim bunga

Ia adalah modul teras yang menyediakan model pengaturcaraan dan konfigurasi komprehensif untuk aplikasi perusahaan berasaskan Java moden—pada mana-mana platform penggunaan. Ia mengandungi banyak teras (teras) teknologi Spring :
  • teras - fungsi asas yang melaksanakan konsep IoC (penyongsangan kawalan) dan DI (suntikan kebergantungan) ;
  • AOP - Pengaturcaraan Berorientasikan Aspek - pengaturcaraan berorientasikan aspek yang bertujuan untuk melaksanakan logik hujung ke hujung;
  • MVC dan WebFlux - rangka kerja untuk interaksi web;
  • JDBC , ORM - teknologi untuk berinteraksi dengan pangkalan data;
  • Ujian - kefungsian untuk ujian telus dan tidak rumit data bekas Spring;
  • SpEL - Bahasa Ungkapan Spring - Bahasa ungkapan Spring;
  • dan lain-lain.

Kasut Musim Bunga

Memudahkan penciptaan aplikasi berasaskan Spring dengan meminimumkan persediaan aplikasi awal dan elemen aplikasi Spring konfigurasi automatik. Contoh memulakan but Spring dalam masa 5 minit

Data Musim Bunga

Memudahkan penggunaan teknologi capaian data, pangkalan data perhubungan dan bukan perkaitan dengan ketara (mengalih keluar kod berulang dan memudahkan interaksi dengan data). Artikel ini mengandungi tutorial yang baik tentang menyambung Data Spring.

Awan Musim Bunga

Ia digunakan dalam seni bina perkhidmatan mikro, memudahkan interaksi perkhidmatan mikro antara satu sama lain dan mengautomasikan penggunaan aplikasi pada platform awan seperti AWS , Azure , dsb. Lihat tutorial terperinci tentang Spring Cloud di sini , tetapi saya akan memberi amaran kepada anda bahawa topik ini bukanlah topik yang mudah dan ditujukan kepada pakar yang dekat dengan peringkat senior.

Keselamatan Musim Bunga

Menyediakan alat pengesahan (pengesahan) dan kawalan akses (kebenaran) yang berkuasa dan boleh disesuaikan untuk aplikasi. Anda boleh mendapatkan contoh mudah untuk menyambungkan Spring Security ke aplikasi anda dalam siaran ini . Apa yang anda perlu tahu tentang Spring: sejarah, modul utama, perbandingan dengan Java EE - 8

Spring GraphQL

Modul ini menyediakan sokongan untuk aplikasi Spring yang dibina pada Java GraphQL. GraphQL ialah bahasa pertanyaan untuk API yang membolehkan pelanggan menanyakan set data terhad yang mereka perlukan, yang seterusnya membolehkan data dikumpulkan dalam bilangan pertanyaan terhad. Jika anda sudah biasa dengan JPA, anda mungkin telah menemui EntityGraph, dengan konsep yang serupa (atau sama). Anda boleh membaca lebih lanjut mengenai GraphQL di sini .

Sesi Musim Bunga

Bahagian rangka kerja Spring ini menyediakan API dan pelaksanaan untuk mengurus maklumat sesi pengguna (data sesi pengguna disimpan dalam storan berterusan seperti Redis , MongoDb , HazelCast , dll.). Contoh penggunaan Spring Session boleh didapati di sini .

Integrasi Spring

Modul ini direka bentuk untuk memudahkan pemesejan dalam aplikasi berasaskan Spring dan menyokong integrasi dengan sistem luaran melalui penyesuai deklaratif. Penyesuai ini menyediakan tahap abstraksi yang lebih tinggi daripada sokongan Spring untuk mengalihkan, pemesejan dan penjadualan. Artikel terperinci .

REHAT musim bunga

Menyediakan set alat yang kaya yang memudahkan pembangunan REST API: alatan untuk penghalaan permintaan, untuk menukar JSON/XML kepada objek jenis yang diperlukan, dsb. Contoh perkhidmatan RESTful dalam Spring boleh didapati dalam bahan ini .

Aliran Web Musim Bunga

Aliran Web Musim Bunga adalah berdasarkan MVC Musim Bunga dan membolehkan anda melaksanakan "aliran" aplikasi web. Aliran sedemikian merangkumi urutan langkah yang membimbing pengguna melalui penyelesaian beberapa tugas perniagaan. Ia merangkumi berbilang permintaan HTTP, bersifat stateful, berfungsi dengan data transaksi, boleh digunakan semula dan boleh bersifat dinamik dan tahan lama. Contoh menyambung Aliran Web Spring boleh dilihat dalam panduan ini dalam bahasa Inggeris .

Spring WebServices

Modul ini direka bentuk untuk memudahkan anda membangunkan perkhidmatan SOAP berasaskan kontrak dengan membenarkan anda mencipta perkhidmatan web yang fleksibel menggunakan salah satu daripada banyak cara untuk memanipulasi muatan XML. SOAP - Protokol Akses Objek Mudah - Protokol mudah untuk mengakses objek.

Musim bunga HATEOAS

Modul ini menyediakan beberapa API untuk memudahkan anda mencipta pengawal REST yang mengikut prinsip HATEOAS apabila bekerja dengan Spring dan terutamanya Spring MVC. HATEOAS - Hipermedia Sebagai Enjin Keadaan Aplikasi - Hipermedia sebagai enjin keadaan aplikasi. Anda boleh melihat penggunaan perpustakaan Spring ini di sini .

Kumpulan Musim Bunga

Modul ini menyediakan fungsi untuk pemprosesan data kelompok (apabila data diproses dalam kepingan besar - kelompok), penting untuk operasi harian sistem korporat. Spring Batch menyediakan ciri boleh guna semula yang diperlukan untuk mengendalikan jumlah rekod yang besar, termasuk pengelogan/penjejakan, pengurusan transaksi, statistik pemprosesan kerja, memulakan semula kerja, melangkau dan pengurusan sumber. Anda boleh mendapatkan gambaran keseluruhan yang menarik tentang Spring Batch di pautan ini .

AMQP musim bunga

Modul ini menggunakan konsep Spring teras untuk pembangunan penyelesaian pemesejan berasaskan AMQP. Ia menyediakan templat sebagai abstraksi peringkat tinggi untuk menghantar dan menerima mesej. Ia juga menyediakan sokongan untuk POJO dipacu mesej dengan bekas pendengar. AMQP - Protokol Gilir Mesej Lanjutan - Protokol Baris Gilir Mesej Lanjutan. Projek ini mengandungi dua bahagian: spring-amqp ialah abstraksi asas, dan spring-rabbit ialah pelaksanaan untuk RabbitMQ . Contoh dengan sambungan RabbitMQ menggunakan Spring Apa yang anda perlu tahu tentang Spring: sejarah, modul utama, perbandingan dengan Java EE - 9

Musim bunga untuk Apache Kafka

Projek ini menggunakan konsep Spring teras kepada pembangunan penyelesaian pemesejan berasaskan Kafka . Templat disediakan sebagai abstraksi peringkat tinggi untuk menghantar mesej. Ia juga menyediakan sokongan untuk POJO dipacu mesej dengan anotasi yang diperlukan dan bekas pendengar. Terdapat persamaan yang jelas di sini dengan Spring AMQP, tetapi modul ini disesuaikan khusus untuk Kafka. Contoh penyambungan Spring Kafka boleh dilihat di sini .

Spring CredHub

Menyediakan sokongan pihak pelanggan untuk menyimpan, mendapatkan semula dan memadam bukti kelayakan daripada pelayan CredHub yang dijalankan pada platform Cloud Foundry . CredHub - Menyediakan API untuk menyimpan, mencipta, mendapatkan semula dan memadam pelbagai jenis bukti kelayakan dengan selamat. Spring CredHub menyediakan pengikatan Java untuk API CredHub, menjadikannya mudah untuk menyepadukan aplikasi Spring dengan CredHub.

FLO musim bunga

Ia ialah perpustakaan JavaScript yang menawarkan pereka bentuk visual mudah dibenamkan HTML5 untuk saluran paip dan graf ringkas untuk memantau penstriman dan data kelompok. Demo teknologi ini terdapat dalam video di pautan .

LDAP musim bunga

Pustaka ini memudahkan operasi LDAP dan berdasarkan Spring JdbcTemplate. Rangka kerja membolehkan konteks carian dan penutupan, melihat hasil, pengekodan/penyahkodan nilai, penapis dan banyak lagi (dibina berdasarkan prinsip yang sama seperti Spring Jdbc) Contoh pelaksanaan Spring LDAP boleh didapati di sini .

Spring Roo

Modul ini menyediakan alat RAD yang boleh mencipta dan mengurus aplikasi berasaskan Spring anda. Matlamatnya adalah untuk meningkatkan produktiviti pembangun Java. Ia tidak boleh menulis logik perniagaan aplikasi anda, tetapi ia boleh mengendalikan perkara konfigurasi dan infrastruktur.

Cangkang Spring

Pustaka memudahkan untuk mencipta aplikasi shell berciri penuh (juga dikenali sebagai baris arahan) dengan bergantung pada balang Spring Shell dan menambah arahan anda sendiri (yang datang sebagai kaedah dalam kacang Spring). Mencipta aplikasi baris arahan boleh berguna, contohnya, untuk berinteraksi dengan API REST projek anda atau untuk bekerja dengan kandungan fail tempatan. Baca lebih lanjut di sini dan di sini .

Mesin State Spring

Modul ini membenarkan pembangun aplikasi menggunakan konsep mesin keadaan dengan aplikasi Spring. Contoh terperinci penggunaan fungsi ini boleh didapati di sini dan di sini .

Bilik Kebal Musim Bunga

Spring Vault menyediakan abstraksi Spring yang biasa dan sokongan pihak pelanggan untuk mengakses, menyimpan dan membatalkan rahsia. Ia menawarkan abstraksi peringkat rendah dan peringkat tinggi untuk berinteraksi dengan Vault , membebaskan pengguna daripada kebimbangan infrastruktur. Contoh pelaksanaan Spring Vault Apa yang anda perlu tahu tentang Spring: sejarah, modul utama, perbandingan dengan Java EE - 10"Adakah saya perlu mempelajari semua ini?" - anda bertanya dengan hairan. Jangan takut! Ini adalah salah! Lebih tepat lagi, tidak begitu. Ini ialah senarai lengkap teknologi yang tersedia di Spring. Senarai teknologi yang perlu diketahui oleh pemula adalah lebih sederhana:
  • Teras Spring
  • Kasut Musim Bunga
  • Spring Web (MVC dan REST)
  • Data Spring (ORM Spring, JDBC Spring, JPA Spring)
  • Ujian Musim Bunga
Terdapat juga teknologi lain yang sering ditemui pada projek, tetapi disebabkan kerumitannya, ia biasanya ditangani oleh pembangun yang lebih berpengalaman dan bukannya pemula hijau. Walau bagaimanapun, ia juga berguna untuk pemula untuk sekurang-kurangnya mempunyai pemahaman umum tentang:
  • Keselamatan Musim Bunga
  • AOP musim bunga
  • Awan Musim Bunga
Teknologi lain digunakan dengan lebih jarang, jadi anda hanya perlu mengkajinya dengan serius untuk mengerjakan projek tertentu. Dengan cara ini, anda boleh mencari senarai semak lengkap tentang perkara yang perlu diketahui oleh pembangun Java dalam artikel saya yang lain. Itu sahaja untuk saya hari ini, jumpa anda semua tidak lama lagi! Apa yang anda perlu tahu tentang Spring: sejarah, modul utama, perbandingan dengan Java EE - 11
Komen
TO VIEW ALL COMMENTS OR TO MAKE A COMMENT,
GO TO FULL VERSION