Deskripsi singkat
Tutorial ini terutama memperkenalkan cara memperluas konfigurasi XML Spring sehingga Spring dapat mengenali skema dan anotasi yang disesuaikan.
Fungsi yang ingin kami terapkan di sini adalah sebagai berikut: Pertama, biarkan Spring mengenali konfigurasi berikut.
<std: anotasi-endpoint />
Fungsi untuk diimplementasikan dalam konfigurasi ini adalah bahwa setelah konfigurasi, Spring dapat memindai anotasi @endPoint yang disesuaikan. Dan secara otomatis mempublikasikan layanan layanan web sesuai dengan anotasi. Fungsi ini tidak sepenuhnya diimplementasikan, dan sebagai tutorial untuk memperpanjang musim semi, ia memainkan peran dalam menarik batu giok.
Buat proyek
Pertama, Anda perlu membuat proyek Java, dan di sini Anda menggunakan Maven untuk membuat proyek QuickStart (proyek Java normal).
Konten file pom adalah sebagai berikut
<Project xmlns = "http://maven.apache.org/pom/4.0.0" xmlns: xsi = "http://www.w3.org/2001/xmlschema-instance" xsi: schemalocation = "http:/maven.romp.romp.romp. http://maven.apache.org/xsd/maven-4.0.0.xsd "> <nodelversion> 4.0.0 </ModelVersion> <GroupId> com.codestd </groupid> <ArTifactid> spring-cxf-annotation-support </stifactid> <version> 1.0.0-snapshot </version> <name> $ {Project.artifactId} </name> <crickips> Memungkinkan proyek Anda untuk mempublikasikan layanan web melalui anotasi, berdasarkan enkapsulasi Spring+CXF, tanpa intrusi API. </cripence> <rerl> https://github.com/codestd/spring-cxf-annotation-support </rerl> <sucsess> <lisense> <name> lisensi apache, versi 2.0 </name> <rurl> http://www.apache.org/licenses/license-2.0.txt </rerl> </license> </sucens> <developers> <deveverer> <name> jaune (wangchengwei) </name> <email> [email protected] </rance /Role></ROLES><TIMEZONE>GMT+8</TimeZone></develever></develever><cm><connection>htps://github.com/codestd/spring-cxf-annotation-pupport.git</connection> <dropcity> htodsupport estd/spring-cxf-annotation-support.git </develeventConnection> </cm> <properties> <junit.version> 4.12 </junit.version> <sprange.version> 4.2.4.release </spring.version> <cxf.version> 3.1.3 </cxf.version> </prope. rties> <Dependencies> <dependency> <GroupId> JUnit </groupid> <ArTifactId> junit </artifactid> <version> $ {junit.version} </version> <scope> test </seupop> </dependency> <dependency> <groupid> org.springframework </ground UPID> <ArTifactId> Spring-Context </StifactId> <Version> $ {spring.version} </version> </dependency> <dependency> <groupid> org.apache.cxf </groupid> <ArTifactid> cxf-rt-frontend-jaxws </arttifactid> <ArtifactD> $ {cxfrontend-jaxws </arttifactid> <ArTifact> $ {versi> $ {cx f.version} </version> </gandendency> <dependency> <GroupId> org.apache.cxf </groupid> <ArTifactId> cxf-rt-transports-http-jetty </arttifactid> <version> $ {cxf.version} </version> </dependency> <version> <version> $ {cxf.version} </version> </Dependency> <version> <version> groupid org.springframework </groupid> <ArTifactId> test spring </arttifactid> <version> $ {spring.version} </version> </gandendency> <dependency> <groupid> log4j </groupid> <ArTifactId> log4j </artifactid> <version> 1.2.14 </v ersion> <scope> tes </ scope> </dependency> <dependency> <groupId> org.slf4j </proupid> <ArtifactId> slf4j-log4j12 </stifactid> <version> 1.7.7 </version> <scope> test </scope> </dependency> </Project>Skema Definisi
<? Xml Version = "1.0" encoding = "utf-8" mandiri = "no"?> <xsd: schema xmlns = "http://www.codestd.com/schema/std/ws" xmlns: xsd = "http://www.w3.org/2001/xmlschema" xmlns: beans = "http://www.springframework.org/schema/beans" TargetNeSpac e = "http://www.codestd.com/schema/std/ws" elementFormDefault = "kualifikasi" attributeFormDefault = "unqualified"> <xsd: impor namespace = "http://www.springframework.org/schema/beans"/> <xsd: anotasi> <xsd: dokumentasi> <! [Cdata [dukungan namespace untuk anotasi yang disediakan oleh kerangka CXF. ]]> </xsd: Dokumentasi> </xsd: Annotation> <xsd: name elemen = "annotation-endpoint"> <xsd: complextype> <xsd: complexcontent> <xsd: extension base = "beans: diidentifikasi"> <xsd: name atribut = "xs =" xs = "xsp: string"> <xsd " Use = "Opsional"> <xsd: annotation> <xsd: dokumentasi> <! [CDATA [nama kacang. Insted of Id]]> </xsd: Dokumentasi> </xsd: Annotation> </xsd: Atribut> <xsd: Atribut Nama = "Paket" type = "xsd: string" use = "opsional"> <xsd: annotation> <xsd: dokumentasi> <! [Cdata [pakeage ke scan. ]]> </xsd: Dokumentasi> </xsd: Annotation> </xsd: Atribut> </xsd: Extension> </xsd: ComplexContent> </xsd: Complextype> </xsd: Element> </xsd: Schema>
Pengetahuan tentang Sechma tidak akan dijelaskan di sini. Teman yang tidak tahu cara menggunakannya perlu mempelajarinya terlebih dahulu. Lokasi SECHMA berada di SRC/Main/Resources/Meta-InF/Schema/STDWS-1.0.XSD.
Anotasi definisi
Paket com.codestd.spring.cxf.annotation; impor java.lang.annotation.Documented; impor java.lang.annotation.elementtype; impor java.Lang.annotation. Tujuan Eksposur Layanan dengan menambahkan {@code @endpoint} anotasi ke kelas. * <p> Perpanjang fungsi pemindaian kacang musim semi. Setelah menambahkan anotasi ini ke kacang, itu akan secara otomatis terdaftar di Container Spring. *@Author Jaune (wangchengwei)*@since 1.0.0*/ @target (elementType.type) @retention (retentionpolicy.runtime) @documentedpublic @Interface endpoint {/*** ID endpoint ini di Layanan Spring Container* @return*/String ID ();/* alamat();}Konfigurasi di Spring
Buka "jendela", "preferensi", "xml", "katalog xml". Klik "Tambah", lalu pilih XSD yang kami buat di atas di lokasi. "Tipe Kunci" Pilih Nama Namespace dan masukkan kunci ke http://www.codestd.com/schema/std/ws/stdws-1.0.xsd. Artinya, nama file TargetNeNeSpace+ yang ditentukan dalam SecHma.
Tambahkan ruang nama di musim semi dan gunakan tag sebagai berikut. Di sini kita perlu menggunakan fungsi pemindaian anotasi Spring.
<? Xml Version = "1.0" encoding = "UTF-8"?> <Beans xmlns = "http://www.springframework.org/schema/beans" xmlns: xsi = "http://www.w3.org/2001/xmlschema-in STANCE "xmlns: std =" http://www.codestd.com/schema/std/ws "xsi: schemalocation =" http: //www.springframew ork.org/schema/beansshttp://www.springframework.org/schema/beans/spring-weans-4.0.xsdhttp://www.cod estd.com/schema/std/wshttp://www.codestd.com/schema/std/ws/stdws-1.0.xsd"><std:annotation-endpoint package = "com.codestd.spring.cxf.ws"/> </tobel>
Paket yang akan dipindai didefinisikan dalam konfigurasi dan tidak bergantung pada konfigurasi dengan konteks.
Di atas adalah skema konfigurasi kustom pegas yang dapat diperluas (1) dibagikan oleh editor. Saya harap ini akan membantu semua orang.