Karena cukup baru di Spring, saya memiliki pertanyaan tentang memberi anotasi pada kelas. Saat membuat anotasi kelas dengan @Component
apakah ini berarti kelas ini akan menjadi Spring Bean dan secara default menjadi tunggal?
sumber
Karena cukup baru di Spring, saya memiliki pertanyaan tentang memberi anotasi pada kelas. Saat membuat anotasi kelas dengan @Component
apakah ini berarti kelas ini akan menjadi Spring Bean dan secara default menjadi tunggal?
Ya, itu benar, @Component
adalah kacang musim semi dan tunggal.
Jika kelas tersebut termasuk dalam lapisan layanan, Anda mungkin ingin memberi anotasi @Service
sebagai gantinya
Namun perlu diingat bahwa agar anotasi ini dapat dideteksi, Anda perlu menempatkan baris ini di applicationContext.xml
:
<context:component-scan base-package="com.yourcompany" />
Tentang lajang - kacang musim semi semuanya dalam lingkup tunggal secara default. Satu-satunya hal yang harus Anda ingat adalah Anda tidak boleh menyimpan status dalam variabel lapangan (mereka hanya boleh menyimpan dependensi). Dengan demikian, aplikasi Anda akan aman untuk thread, dan Anda tidak akan memerlukan instance bean baru setiap saat. Dengan kata lain, kacang Anda tidak memiliki kewarganegaraan.
Secara default - Ya.
Namun, Anda dapat mengganti perilaku ini menggunakan
@Scope
anotasi. Sebagai contoh:@Scope(ConfigurableBeanFactory.SCOPE_PROTOTYPE)
sumber