Pola desain apa yang digunakan dalam kerangka Spring? [Tutup]

90

Pola desain apa yang digunakan dalam kerangka Spring?

Tony
sumber
Ini mencakup lebih dari 10 pola termasuk ..MVC, Pengontrol depan, View Helper, Singleton, Prototype, Factory dll. javabench.in/2012/02/design-patterns-being-used-in-spring.html
Raúl

Jawaban:

74

Ada banyak pola desain berbeda yang digunakan, tetapi ada beberapa yang jelas:

  • Proxy - banyak digunakan di AOP , dan remoting .

  • Singleton - beans yang ditentukan dalam file konfigurasi musim semi adalah singletons secara default.

  • Metode template - digunakan secara ekstensif untuk menangani kode berulang boilerplate (seperti menutup koneksi dengan rapi, dll ..). Misalnya JdbcTemplate , JmsTemplate , JpaTemplate .


Perbarui komentar berikut: Untuk MVC, Anda mungkin ingin membaca Referensi MVC

Beberapa pola yang jelas digunakan di MVC:

  • Model View Controller :-). Keuntungan dengan Spring MVC adalah bahwa pengontrol Anda adalah POJO dan bukan servlet. Hal ini mempermudah pengujian pengontrol. Satu hal yang perlu diperhatikan adalah bahwa pengontrol hanya diperlukan untuk mengembalikan nama tampilan logis, dan pilihan tampilan diserahkan ke ViewResolver terpisah . Ini membuatnya lebih mudah untuk menggunakan kembali pengontrol untuk teknologi tampilan yang berbeda.

  • Kontroler Depan . Spring menyediakan DispatcherServlet untuk memastikan permintaan masuk dikirim ke pengontrol Anda.

  • View Helper - Spring memiliki sejumlah tag JSP kustom, dan makro kecepatan, untuk membantu memisahkan kode dari presentasi dalam tampilan.

toolkit
sumber
Terima kasih, Apa pola desain yang digunakan dalam modul Spring MVC?
Tony
10
Saya tidak berpikir Spring menerapkan tunggal untuk kacang. Perhatikan bahwa kacang bercakupan tunggal akan memiliki satu contoh per konteks aplikasi . Jadi, jika aplikasi Anda memiliki dua konteks Spring, mereka memuat kacang tunggal yang sama Foodan Anda mengambil instance Fooper konteks, Anda akan mendapatkan dua referensi objek yang berbeda. Sebaliknya, pola desain yang diterapkan di sini adalah kelas terbang
Luiggi Mendoza
@Luiggi Mendoza maksud Anda musim semi tidak memiliki objek tunggal? tolong jelaskan saya dengan beberapa klarifikasi.
Kumaresan Perumal
1
@KumaresanPerumal ada perbedaan yang signifikan antara pola Singleton dan instance tunggal (perhatikan huruf besar / kecil S). Pola tunggal adalah tentang mempertahankan satu contoh objek melalui seluruh aplikasi. Apa yang dilakukan Spring saat mendeteksi kacang tunggal adalah membuat satu instance per konteks aplikasi . Konteks aplikasi adalah komponen inti Spring, dan berfungsi untuk mendelegasikan pembuatan dan pengambilan objek. Kacang tunggal dibuat hanya sekali per konteks aplikasi.
Luiggi Mendoza
Tautan untuk pengontrol tampilan model, pengontrol depan, dan tampilan membantu dibawa ke oracle.com/technetwork/java/index.html . Bisakah Anda memperbarui jawaban dengan tautan yang berfungsi?
SpringLearner
12

Dan tentu saja injeksi ketergantungan, atau IoC (inversi kontrol), yang merupakan pusat dari keseluruhan hal BeanFactory / ApplicationContext.

Chochos
sumber
10

Hal DI sebenarnya adalah semacam pola strategi. Kapan pun Anda ingin menggunakan beberapa logika / implementasi yang dapat dipertukarkan, Anda biasanya menemukan antarmuka dan metode penyetel yang sesuai pada kelas host untuk menghubungkan implementasi khusus Anda dari antarmuka itu.

Oliver Drotbohm
sumber
Jawaban dari Master itu sendiri. @Oliver Bisakah Anda menyatakan lebih banyak pola di sini?
Gaurav
7

Spring adalah kumpulan pola API praktik terbaik, Anda dapat menulis daftar belanjanya selama lengan Anda. Cara API dirancang mendorong Anda (tetapi tidak memaksa Anda) untuk mengikuti pola-pola ini, dan separuh waktu Anda mengikutinya tanpa mengetahui Anda sedang melakukannya.

skaffman
sumber
3

Pola Lokasi Layanan - ServiceLocatorFactoryBean menyimpan informasi dari semua kacang dalam konteksnya. Ketika kode klien meminta layanan (kacang) menggunakan nama, itu hanya menempatkan kacang itu dalam konteks dan mengembalikannya. Kode klien tidak perlu menulis kode terkait musim semi untuk menemukan kacang.

Suman Mitra
sumber
2

Observer-Observable: digunakan dalam mekanisme event ApplicationContext

ksevindik.dll
sumber
1

Pola pabrik juga digunakan untuk memuat biji melalui konteks BeanFactory dan Aplikasi.

Gurpreet
sumber
1

Pola Pabrik Metode: BeanFactory untuk membuat contoh objek Singleton: jenis contoh dapat tunggal untuk konteks Prototipe: jenis contoh dapat menjadi prototipe. Pola pembangun: Anda juga dapat menentukan metode di kelas yang akan bertanggung jawab untuk membuat instance kompleks.

Praveen Sharma
sumber
0

Wadah pegas menghasilkan objek kacang tergantung pada ruang lingkup kacang (tunggal, prototipe dll ..). Jadi ini terlihat seperti menerapkan pola Pabrik Abstrak . Dalam implementasi internal Spring, saya yakin setiap ruang lingkup harus dikaitkan dengan kelas jenis pabrik tertentu.

jsr
sumber