1. Gunakan anotasi:
Dalam file konfigurasi Spring, ApplicationContext.xml, tambahkan pemindaian anotasi. Item konfigurasi mengkonfigurasi pemindaian paket yang ditentukan untuk mengimplementasikan injeksi ketergantungan.
<? Xml Version = "1.0" Encoding = "UTF-8"?> <span style = "font-size: 18px;"> <beans xmlns = "http://www.springframework.org/schema/beans" xmlns: xsi = "http:-paMaMa. xmlns: context = "http://www.springframework.org/schema/context" xmlns: aop = "http://www.springframework.org/schema/aop" xsi: schemalocation = "http:/schema.aop" http://www.springframework.org/schema/beans/spring-weans-3.0.xsd http://www.springframework.org/schema/context http:/www.springframework.org/schema/context http://www.springframework.org/schema/aop http://www.springframework.org/schema/aop/spring-aop-3.0.xsd http://www.springframework.org/schema/aop/aop/spramework.org/schema/aop:aop:spramewewer.orga/schema/aop:aop/spramework http://www.springframework.org/schema/util http://www.springframework.org/schema/util/spring-util-3.0.xsd"> <aop:aspectj-autoproxy/> <context:annotation-config/> <context:component-scan base-package="com.test" /> // di mana harus memindai </tobel>
2. Komentar Umum:
@Controller@service@autowired@requestMapping@requestparam@modelTribute@cacheable@cacheeflush@sumber daya@postconstruct@predestroy@repository@component (tidak disarankan)@scope@sessionattributes@initbinder@wajib@kualifier)
3. Anotasi musim semi yang biasa digunakan:
@Controller (untuk lapisan presentasi)
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.
@Controller
@Scope ("prototipe") Public Class UserAction memperluas basa <user> {}@ Layanan (digunakan di lapisan logika bisnis)
Perhatikan bahwa anotasi @Service digunakan di bawah kelas implementasi antarmuka layanan, bukan di antarmuka.
Ini mencerminkan inversi kontrol di musim semi dengan sangat baik. Kami tidak membiarkan objek instantiate objek itu sendiri dan secara aktif mengandalkan objek, tetapi sebaliknya menggunakan wadah untuk membuat objek, yang dikelola oleh IOC. Contoh:
Ketika tindakan ingin menggunakan UserserServiceImpl, Anda tidak perlu secara aktif membuat instance UserserServiceImpl. Membuat instance UserserServiceImpl telah diserahkan ke Spring. Spring memberikan instance UserServiceImpl yang dibuat untuk bertindak, dan Anda dapat menggunakannya 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.
@Service ("UserserService") Kelas Publik UserserServiceImpl mengimplementasikan UserserService {}@ Repositori (untuk manajemen data)
Penulis menggunakan alat ini untuk menghasilkan model data Entity Layer dan mapper secara terbalik, sehingga anotasi ini tidak digunakan, tetapi ini hanya menyuntikkan kacang ke dalam wadah pegas.
@Repository (value = "userdao") kelas publik userdaoImpl meluas berdasarkan BasiseoImpl <User> {}4. Anotasi SpringMVC yang biasa digunakan:
@Autowired (disuntikkan berdasarkan jenis)
Annotate Variabel Anggota Kelas, Metode, dan Konstruktor untuk menyelesaikan pekerjaan perakitan otomatis. Sederhananya, itu untuk memanggil kacang dan memberi tahu Spring bahwa itu ada dan dikelola dalam wadah.
@Autowired pencarian dari artikel online musim semi sesuai dengan jenis kacang. Jenis pendaftaran harus unik, jika tidak, pengecualian akan dilaporkan.
Ketika anotasi @Autowired bertindak pada jenis peta, jika kunci peta adalah jenis string, pegas akan menambahkan semua jenis dalam wadah ke jenis nilai peta yang sesuai, dan gunakan ID atau nama kacang sebagai kunci peta.
@Autowired Fungsi lain adalah bahwa jika dianotasi pada tipe beanFactory, jenis ApplicationContext, jenis sumber daya, jenis ApplicationEventPublisher, dan jenis sumber pesan, Spring akan secara otomatis menyuntikkan contoh kelas implementasi ini tanpa operasi tambahan.
@Autowired
Laporan Laporan Ireports Private;
@Resource (disuntikkan berdasarkan nama)
Mirip dengan @Autowired, @Resource mencari secara default sesuai dengan nama kacang. Jika tidak ditemukan, itu akan mencari berdasarkan jenis.
@Sumber
DataSource Private DataSource; // Suntikkan kacang bernama 'DataSource'
@Resource (name = "DataSource")
@Resource (type = DataSource.class)
Pertanyaan yang diperpanjang: Apa itu perakitan berdasarkan jenis dan apa itu perakitan dengan nama?
Dengan tipe berarti bahwa ketika ada kacang dengan jenis yang sama dengan atribut yang ditentukan dalam wadah pegas, atribut akan dirakit secara otomatis; Jika ada beberapa kacang jenis ini, pengecualian akan dijalankan dan ditunjukkan bahwa perakitan otomatis berdasarkan jenis tidak dapat digunakan; Jika tidak ada kacang yang cocok ditemukan, tidak ada yang akan terjadi.
Nama yang disebut berarti perakitan otomatis berdasarkan nama atribut. Item ini akan memeriksa kacang di wadah musim semi yang persis sama dengan nama atribut dan melakukan perakitan otomatis.
@RequestMapping (alamat permintaan peta)
Anotasi yang digunakan untuk menangani pemetaan alamat yang diminta dapat digunakan pada kelas atau metode. Untuk digunakan pada kelas, semua metode yang mewakili permintaan respons di kelas mengambil alamat ini sebagai jalur induk.
Ada enam atribut, yaitu:
1. Nilai, metode;
Nilai: Menentukan alamat aktual dari permintaan, dan alamat yang ditentukan dapat dalam mode template URI (yang akan dijelaskan nanti);
Metode: Tentukan jenis metode yang diminta, dapatkan, posting, put, hapus, dll.;
2. mengkonsumsi, menghasilkan
Konsumen: Menentukan jenis pengiriman (tipe konten) yang menangani permintaan, seperti aplikasi/json, teks/html;
Menghasilkan: Menentukan jenis konten yang dikembalikan, yang hanya akan dikembalikan jika jenis (terima) di header permintaan berisi jenis yang ditentukan;
3. Params, header
Params: Menentukan bahwa permintaan harus berisi nilai parameter tertentu sebelum metode dapat diproses.
Header: Menentukan bahwa permintaan harus berisi beberapa nilai header yang ditentukan agar metode dapat menangani permintaan.
@Controller@requestMapping ("/bbtforum.do") kelas publik bbtforumController {@RequestMapping (params = "method = listboardtopic") public string listboardtopic (int topicId, pengguna pengguna) {}}@requestMapping ("/softpg/downsoftpg.do")@requestmapping (""/softpg/downsoftpg.do ")@@@@reansmapping (" "/softpg/downsoftpg.do")@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ metode = requestMethod.post) @RequestMapping (value = "/osu/produk/detail.do", params = {"odify = false"}, method = requestMethod.post)@RequestParam (Dapatkan nilai parameter permintaan)
Misalnya, alamat akses kami di browser adalah: localhost: 8080/halo? ID = 1000, dan kami mendapatkan nilai ID, misalnya:
@RestControllerPublic kelas HelloController {@RequestMapping (value = "/hello", method = requestMethod.get) Public String sayshello (@RequestParam ("id") ID integer) {return "id:"+id; }}@Pathvaribale (dapatkan data dalam url)
@RestControllerPublic Class HelloController {@RequestMapping (value = "/hello/{id}", Method = requestMethod.get) Public String sayshello (@PathVariable ("id") Integer ID) {return "id:"+id; }}@ResponseBody (tipe return JSON)
Fungsi: Anotasi ini digunakan untuk mengonversi objek yang dikembalikan dengan metode pengontrol ke dalam format yang ditentukan melalui httpmessageConverter yang sesuai dan menulisnya ke area data tubuh dari objek respons.
Waktu untuk menggunakan: Data yang dikembalikan bukan halaman dengan tag HTML, tetapi digunakan ketika data dalam beberapa format lain (seperti JSON, XML, dll.);
Meringkaskan
Di atas adalah analisis anotasi umum di Spring SpringMVC yang diperkenalkan kepada Anda oleh editor. Saya harap ini akan membantu Anda. Jika Anda memiliki pertanyaan, silakan tinggalkan saya pesan dan editor akan membalas Anda tepat waktu. Terima kasih banyak atas dukungan Anda ke situs web Wulin.com!