Pada artikel sebelumnya, saya memperkenalkan kepada Anda metode menggunakan XSD untuk memverifikasi file konfigurasi SQLMapper MyBatis (1). Teman yang membutuhkannya bisa merujuknya.
Tulis file XSD, lalu lihat cara menggunakan file XSD untuk memverifikasinya, dan menguraikan file SQLMapper, yaitu, mengimplementasikan metode DoParSesQlMapperResourceWithSchema ().
Untuk mengimplementasikan fungsi ini, ada dua persyaratan dasar:
(1) Kompatibilitas: Perlu kompatibel dengan konfigurasi asli mybatis. Ada dua tingkat kompatibilitas. Salah satunya adalah menggunakan verifikasi DTD. Seperti yang disebutkan sebelumnya, tidak ada masalah dengan kompatibilitas saat mengikuti proses asli; Yang lainnya adalah menggunakan verifikasi XSD, tetapi juga harus kompatibel dengan konfigurasi asli mybatis. Di satu sisi, kompatibilitas ini dijamin dari file XSD yang dimodifikasi di atas, dan di sisi lain, itu juga perlu dijamin dari parsing XML.
(2) Ekstensibilitas: Tujuan modifikasi adalah untuk mengembang, jadi ekstensibilitas juga merupakan persyaratan dasar. Namun, skalabilitasnya tidak sewenang -wenang, dan juga perlu diperpanjang sesuai dengan spesifikasi, yang merupakan file XSD khusus.
Untuk memenuhi dua persyaratan dasar ini, berikut ini adalah ide saya, terutama menggambar pada namespace khusus Spring:
1. Buat EntityResolver dan baca file konfigurasi mode yang ditentukan di bawah ClassPath, seperti: "ClassPath*: **/Dysd-*-namespaces.ini"
2. Tentukan informasi meta namespace dalam file INI, seperti:
Gunakan namespace sebagai nama bagian. Skema dan parser di bawah ini mewakili file XSD dan kelas implementasi parser masing -masing dari namespace. Dengan cara ini, Anda dapat menemukan file verifikasi berdasarkan namespace XSD di XML dan memiliki entri parsing.
menjelaskan:
Konfigurasi Commons Apache Menyediakan API Membaca untuk File Format INI
Di musim semi, saya menggunakan meta-inf/spring.schemas dan meta-inf/spring.handlers untuk menyimpan file XSD dan kelas implementasi parser. Di sini saya memodifikasinya untuk menggunakan konfigurasi pusat file INI
Karena membaca file INI yang memenuhi karakter wildcard di bawah semua classpaths, itu dapat dengan mudah memperluas ruang nama lainnya. Adapun cara menggunakan XSD untuk memverifikasi di Java, saya tidak akan membahas detailnya di sini
Saya menguraikan penguraian XML menjadi tiga elemen: parsing konteksnya, parsing file. Metode doparsesqlmapperresourcewithschema () juga sangat ringkas:
Protected void doparsesqlmapperResourceWithSchema (konfigurasi konfigurasi, mapperlocation sumber daya) {isqlmapperparsercontext context = sqlmapperparsercontext baru (konfigurasi); xmlparserutils.parsexml (konteks, mapperlocation);}Antarmuka parser adalah sebagai berikut:
public interface IParser<E extends IParserContext> {public void parse(E parserContext, String location);public void parse(E parserContext, String[] locationPatterns);public void parse(E parserContext, InputStream inputStream);public void parse(E parserContext, Resource resource);}Konteks parsing dan kelas implementasi parser dibagi menjadi tiga tingkatan pada gilirannya:
(1) Konteks parsing umum:
antarmuka publik iparsercontext {public problemReporter getProblemReporter (); public eventListener GetEventListener (); Public SourceExtractor GetSourceExtractor (); Lingkungan Publik Getenvironment ();}Kelas implementasi parser pada tingkat yang sesuai terutama bertanggung jawab untuk memuat file yang diuraikan (seperti memuat wildcard string ke dalam kumpulan objek sumber daya), memastikan bahwa tidak ada parsing yang diulang dilakukan, dan memastikan eksekusi bersamaan.
(2) konteks parsing xml
antarmuka publik IxmlParserContext memperluas iparsercontext {public boolean isNamespaceaware (); Public Documentloader GetDocumentLoader (); Public EntityResolver getentityResolver (); Public Errorhandler getErrorHandler (); publik xmlparserDelegate getDelegate ();}Kelas implementasi parser di tingkat yang sesuai terutama bertanggung jawab untuk mengubah sumber daya menjadi objek dokumen dan memverifikasi selama proses konversi.
(3) konteks parsing sqlmapper
Antarmuka publik ISQLMapperParSerContext memperluas IXMLParSerContext {public configuration getConfiguration ();}Kelas implementasi parser pada tingkat yang sesuai terutama bertanggung jawab untuk menemukan parser di namespace di mana elemen root berada, dan menggunakan parser untuk mengurai dokumen.
Akhirnya, parsing didelegasikan ke kelas SchemasqlMappernamespacarser di file konfigurasi INI. Namun, karena kelas ini perlu dikonfigurasi dalam file teks, tidak nyaman untuk konstruktor dengan parameter, sehingga lebih lanjut didelegasikan ke SchemasqlMapperParserDelegate:
SCHEMASQLMAppernAmespAceparser kelas publik Inamespacarser <IsqLMapperParserContext> {@Overridepublic void init () {} @Overridepublic void parse (isqLmappersercontext Parsercontex SchemasqlmapperparserDelegate (parsercontext, dokumen, sumber daya); delegate.parse ();}@overridepublic void destory () {}}Pada titik ini, verifikasi XSD telah selesai dan portal parsing XML telah ditemukan. Parsing nyata berikutnya adalah di Schemasqlmapperparserdelegate.
Di atas adalah metode (2) untuk menggunakan XSD untuk memverifikasi file konfigurasi SQLMapper MyBatis yang diperkenalkan oleh editor kepada Anda. 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!