Gunakan anotasi untuk membangun wadah IOC
Gunakan anotasi untuk mendaftarkan kacang dengan kontainer musim semi. Perlu mendaftar di ApplicationContext.xml <Context: Component-Scan Base-Package = ”pagkage1 [, pagkage2,…, pagkagen]”/>.
Misalnya: Tentukan paket dalam paket dasar
<konteks: komponen-scan-package = "cn.gacl.java"/>
Menunjukkan bahwa jika suatu kelas memiliki anotasi tertentu [@@component/@repositori/@service/@controller] dalam paket cn.gacl.java dan subpakimnya, objek ini akan didaftarkan ke dalam wadah musim semi sebagai kacang. Anda juga dapat menentukan beberapa paket dalam <konteks: komponen-scan-package = ""/>, seperti:
<konteks: komponen-scan-package = "cn.gacl.dao.impl, cn.gacl.service.impl, cn.Gacl.action"/>
Beberapa paket dipisahkan oleh koma.
1. @Component
@Komponen
Ini adalah bentuk umum untuk semua komponen yang dikelola musim semi. Anotasi @Component dapat ditempatkan di kepala kelas, dan @Component tidak disarankan.
2. @Controller
@Controller sesuai dengan kacang lapisan presentasi, yaitu tindakan, misalnya:
@Controller @scope ("prototipe") Public Class UserAction memperluas basa <user> {...}Setelah menggunakan anotasi @Controller untuk mengidentifikasi pengguna, itu berarti bahwa pengguna harus diserahkan ke wadah pegas untuk manajemen. Akan ada tindakan bernama "UserAction" di Container Spring. Nama ini diambil berdasarkan nama kelas UserAction. Catatan: Jika @Controller tidak menentukan nilainya 【@Controller】, nama kacang default adalah huruf kecil di huruf pertama dari nama kelas. Jika Anda menentukan nilai 【@controller (value = "userAction")】 atau 【@controller ("UserAction")】, maka gunakan nilai sebagai nama kacang.
Pengguna di sini juga menggunakan anotasi @scope. @Scope ("prototipe") berarti bahwa ruang lingkup tindakan dinyatakan sebagai prototipe. Anda dapat menggunakan SCOPE = "Prototipe" dari wadah untuk memastikan bahwa setiap permintaan memiliki tindakan terpisah untuk menanganinya, menghindari masalah tindakan keselamatan utas di Struts. Spring The Default Scope adalah Singleton Mode (Scope = "Singleton"), yang hanya akan membuat objek tindakan. Setiap akses adalah objek tindakan yang sama. Data tidak aman. Struts2 mensyaratkan bahwa setiap akses sesuai dengan tindakan yang berbeda. Scope = "Prototipe" dapat memastikan bahwa objek tindakan dibuat ketika ada permintaan.
3. @ Service
@Service sesuai dengan kacang lapisan layanan, misalnya:
@Service ("UserserService") Kelas Publik UserserServiceImpl mengimplementasikan UserserService {……}@Service ("UserserService") Anotasi memberi tahu Spring bahwa ketika Spring ingin membuat instance UserserServiceImpl, nama kacang harus disebut "Userservice". Dengan cara ini, ketika tindakan perlu menggunakan instance dari UserserServiceImpl, "Userservice" yang dibuat oleh Spring dapat disuntikkan ke dalam tindakan: dalam tindakan, Anda hanya perlu mendeklarasikan variabel bernama "Userservice" untuk menerima "UserserService" yang disuntikkan oleh Spring. Kode spesifiknya adalah sebagai berikut:
// menyuntikkan UserserService @Resource (name = "Userservice") Private UserServerService;
CATATAN: Jenis variabel "UserserService" yang dinyatakan dalam tindakan harus "UserserServiceImpl" atau kelas induknya "Userservice", jika tidak, ia tidak dapat disuntikkan karena tipe yang tidak konsisten. Karena variabel "UsersEvers Users" dalam tindakan tersebut menggunakan anotasi @Resource dan menunjukkan namanya = "UsersEverse", yang setara dengan memberi tahu Spring bahwa saya ingin instantiate "UserserService". Musim semi akan membantu saya membuat instantiasi dengan cepat, dan kemudian memberikannya kepada saya. Ketika Spring melihat anotasi @Resource pada variabel UserserService, sesuai dengan atribut nama yang ditentukan, Anda dapat mengetahui bahwa instance UserServiceImpl perlu digunakan dalam tindakan. Pada saat ini, Spring akan menyuntikkan contoh UserserServiceImpl yang disebut "UserService" ke dalam variabel "Userservice" dalam tindakan untuk membantu tindakan menyelesaikan instantiasi UserserService, jadi dalam tindakan tidak perlu menggunakan "UserserService UserService = New UserServiceImpl ();" Ini adalah cara paling primitif untuk membuat instantiate UsersEver.
Jika tidak ada pegas, ketika tindakan perlu menggunakan UserserServiceImpl, Anda harus secara aktif membuat objek instan melalui "Userservice UsersEverService = baru UserServiceImpl ();". Namun, setelah menggunakan Spring, ketika tindakan ingin menggunakan UserServiceImpl, Anda tidak harus secara aktif membuat instance UserserServiceImpl. Membuat instance UserserServiceImpl telah diserahkan ke Spring. Spring memberikan instance UserserviceImpl yang dibuat untuk tindakan tersebut, dan Anda dapat menggunakannya secara langsung setelah Anda mendapatkan tindakan.
Tindakan dapat digunakan segera setelah secara aktif membuat instance UserserServiceImpl, tetapi menjadi secara pasif menunggu Spring untuk membuat instance UserserServiceImpl sebelum menyuntikkannya ke dalam tindakan.
Ini menunjukkan bahwa "kontrol" aksi atas kelas "UserserviceImpl" telah "terbalik". Ternyata inisiatif itu ada di tangan saya sendiri. Saya harus menggunakan instance kelas "UserServiceImpl". Saya dapat mengambil inisiatif untuk segera menggunakannya. Tetapi sekarang saya tidak dapat mengambil inisiatif ke contoh baru dari instance kelas "UserserviceImpl". Kekuatan instance kelas "UserserServiceImpl" yang baru telah diambil pada musim semi. Hanya musim semi yang dapat contoh baru dari instance kelas "UserserServiceImpl", dan tindakan hanya dapat menunggu musim semi untuk membuat kelas "userse" setelah contoh kelas RViceImpl "," mohon "Spring memberikannya contoh yang dibuat dari kelas" UserServiceImpl "yang dapat menggunakan" Injeksi Ketergantungan ". Ini adalah COUNTION TERGINGING. UserserviceImpl untuk bekerja, jadi itu membuat ketergantungan pada UserserviceImpl.
4. @ Repositori
@Repository sesuai dengan kacang lapisan akses data, misalnya:
@Repository (value = "userdao") Public Class UserdaoImpl memperluas BasiseOmpl <User> {………}Anotasi @Repository (value = "userdao") memberi tahu Spring untuk membiarkan Spring membuat instance userdaoImpl bernama "userdao".
Ketika layanan perlu menggunakan instance userdaoImpl bernama "userdao" yang dibuat oleh Spring, Anda dapat menggunakan anotasi @Resource (name = "userdao") untuk memberi tahu Spring, dan Spring dapat menyuntikkan userdao yang dibuat ke dalam layanan.
// menyuntikkan userdao, dan saat mengeluarkan pengguna yang ditentukan dari database sesuai dengan ID pengguna, Anda perlu menggunakan @resource (name = "userdao") Private BasedAo <User> userdao;
@Resource, @Autowired, dan @Qualifier semuanya digunakan untuk menyuntikkan objek. Di antara mereka, @Resource dapat disuntikkan dalam nama atau jenis, @Autowired hanya dapat disuntikkan dalam jenis, dan @Qualifier hanya dapat disuntikkan dalam nama.
Tetapi mereka memiliki beberapa perbedaan halus:
1. @Resource dan @Qualifier secara otomatis disuntikkan oleh byname secara default, dan @Autowired secara otomatis disuntikkan oleh bytype secara default.
2. @Resource memiliki dua properti yang lebih penting, nama dan tipe. Jika atribut nama digunakan, kebijakan byname injeksi otomatis digunakan. Saat menggunakan atribut Type, kebijakan injeksi otomatis BYTYPE digunakan.
3. @Resources adalah anotasi yang disediakan oleh JDK, sedangkan @Autowired adalah anotasi yang disediakan oleh Spring.
Anda dapat memperlakukan @resource sebagai bos @Autowired @qualifier, haha. Saya memiliki apa yang Anda miliki, dan saya memiliki apa yang tidak Anda miliki, dan saya juga ~
@Resource, @Autowired, dan @Qualifier semuanya digunakan untuk menyuntikkan objek. Di antara mereka, @Resource dapat disuntikkan dalam nama atau jenis, @Autowired hanya dapat disuntikkan dalam jenis, dan @Qualifier hanya dapat disuntikkan dalam nama.
Tetapi mereka memiliki beberapa perbedaan halus:
1. @Resource dan @Qualifier secara otomatis disuntikkan oleh byname secara default, dan @Autowired secara otomatis disuntikkan oleh bytype secara default.
2. @Resource memiliki dua properti yang lebih penting, nama dan tipe. Jika atribut nama digunakan, kebijakan byname injeksi otomatis digunakan. Saat menggunakan atribut Type, kebijakan injeksi otomatis BYTYPE digunakan.
3. @Resources adalah anotasi yang disediakan oleh JDK, sedangkan @Autowired adalah anotasi yang disediakan oleh Spring.
Anda dapat memperlakukan @resource sebagai bos @Autowired @qualifier, haha. Saya memiliki apa yang Anda miliki, dan saya memiliki apa yang tidak Anda miliki, dan saya juga ~
Anotasi musim semi umum di atas metode penggunaan anotasi untuk membangun wadah IOC adalah semua konten yang telah saya bagikan dengan Anda. Saya harap Anda dapat memberi Anda referensi dan saya harap Anda dapat mendukung wulin.com lebih lanjut.