Saya mencoba memahami apa yang akan menjadi penggunaan Spring yang benar. Bukan secara sintaksis, tetapi dalam hal tujuannya. Jika seseorang menggunakan Spring, maka haruskah kode Spring mengganti semua kode Instansiasi bean? Kapan harus menggunakan atau kapan tidak menggunakan Spring, untuk instantiate bean?
Mungkin contoh kode berikut akan membantu Anda memahami dilema saya:
List<ClassA> caList = new ArrayList<ClassA>();
for (String name : nameList) {
ClassA ca = new ClassA();
ca.setName(name);
caList.add(ca);
}
Jika saya mengkonfigurasi Spring, itu menjadi seperti:
List<ClassA> caList = new ArrayList<ClassA>();
for (String name : nameList) {
ClassA ca = (ClassA)SomeContext.getBean(BeanLookupConstants.CLASS_A);
ca.setName(name);
caList.add(ca);
}
Saya pribadi berpikir menggunakan Spring di sini adalah overhead yang tidak perlu, karena
- Kode lebih mudah dibaca / dimengerti.
- Ini sebenarnya bukan tempat yang bagus untuk Dependency Injection karena saya tidak berharap akan ada banyak / beragam implementasi
ClassA
, yang saya ingin kebebasan untuk menggantikan menggunakan konfigurasi Spring pada waktu kemudian.
Apakah saya berpikir benar? Jika tidak, di mana kesalahan saya?
Jika itu adalah kacang , Anda harus membiarkan Spring membangunnya (kecuali Anda dapat memasok kacang pabrik - saya telah menggunakan itu di mana saya perlu mengembalikan subkelas spesifik bergantung pada properti sistem - dan Anda harus membaca dokumentasi pada
@Configuration
dan@Bean
anotasi jika kamu melakukan itu). Jika itu bukan kacang, melainkan hanya Benda Jawa Tua Biasa, Anda tidak perlu menggunakan Spring untuk membuatnya sama sekali. POJO bermanfaat, tetapi tidak akan mendapatkan injeksi ketergantungan, pembungkus AOP, dll. Karena itulah hal-hal yang ditambahkan Spring untuk Anda.Keputusan mendasar adalah apakah itu benar-benar kacang, atau hanya beberapa objek biasa yang kebetulan mengikuti beberapa konvensi kacang (misalnya, penamaan metode). Saya tidak bisa menebak mana sebenarnya dari contoh kecil yang Anda berikan.
sumber
Saya mungkin salah pakar, mohon koreksi.
Seluruh konsep Bean dalam konteks musim semi adalah Spring Container merawat objek. Ini lahir itu lingkup siklus hidup kematian dll ... Ini seperti itu pengurus objek. Aplikasi yang membutuhkannya menyuntikkannya.
Jadi saat mengambil keputusan selama mendesain modul Anda selalu berpikir apakah Anda ingin kerangka kerja Spring dirawat atau itu adalah objek sederhana yang siklus hidupnya tertutup dalam suatu metode.
Seperti yang disarankan sebelumnya objek dao objek jms antrian dll yang berat dan lebih baik diserahkan kepada ahli yaitu kerangka Spring untuk merawatnya.
sumber