الأجزاء الأساسية
1. مقدمة إلى Fastjson
Fastjson هي مكتبة Java يمكن استخدامها لتحويل كائنات Java إلى تمثيلات JSON. يمكن استخدامه أيضًا لتحويل سلسلة JSON إلى كائن Java مكافئ. يجب أن تكون أسرع سرعة تحويل وأصبحت تقريبًا التكوين القياسي للمشاريع (عادةً ما يتم استخدام Fastjson بدلاً من Jackson عند طلب Ajax وتطوير الواجهة).
Github: https://github.com/alibaba/fastjson (التنزيل المحلي)
المميزة:
الميزات الرئيسية:
2. Fastjson API
فئة دخول FastJson API هي com.alibaba.fastjson.json. يمكن الانتهاء من عمليات التسلسل الشائعة مباشرة عن طريق الأساليب الثابتة على فئة JSON.
// parse json text as jsonobject أو jsonarray public static static compion (string text) ؛ // parse json text to Jsonobject public static jsonobject parseObject (text string) ؛ // parse json text as javabean public static final <t> t parseObject (نص سلسلة ، فئة <T> clazz) ؛ // parse json text in Jsonarray public static jsonarray parsearray (text string) ؛ // تحليل نص JSON في مجموعة Javabean Public Static Final <T> قائمة <T> parsearray (نص سلسلة ، فئة <T> clazz) ؛ . . // تحويل Javabean إلى JsonObject أو Jsonarraypublic static الكائن النهائي Tojson (كائن JavaObject) ؛
jsonarray: ما يعادل القائمة <Object>
jsonobject: ما يعادل خريطة <string ، كائن>
SerializeConfig: هو تكوين خاص لبعض عمليات التسلسل أثناء عملية التسلسل ، مثل تنسيق بعض الحقول (التاريخ ، التعداد ، إلخ)
SerializewRiter: أي ما يعادل StringBuffer
خاصية SerializerFeature:
جزء عملي
1.
<project xmlns = "http://maven.apache.org/pom/4.0.0" http://maven.apache.org/maven-v4_0_0.xsd "> <Dodeversion> 4.0.0 </modelversion> <roupiD> com.mengdee </groupid> <StifactId> platfic-springmvc-webapp </stifactid> war <name> platform-springmvc-webapp maven webapp </mame> <Url> http://maven.apache.org </url> <properties> <project.build.sourceencoding> utf-8 </project.build.sourceencoding> <log4j.version> 2.5 </log4j.version> <jstl.version> 1.2 </jstl.version> <pring.version> 4.2.3.release </spring.version> <fastjson.version> <sophy> 3.8.1 </version> <scope> اختبار </scope> </sependency> <reperency> <roupiD> javax.servlet </rougeid> <StifactId> jstl </shintifactid> <sophiD> $ {jstl.vents} </version> </emperenc <StifactId> Spring-Webmvc </shintifactid> <soph> $ {spring.version} </version> </semperency> <redence> <roupiD> org.springframework </roucid> <StifactId> spring-core </stifactid> <roupl> org.springframework </rougiD> <StifactId> spring-context </shintifactid> <الإصدار> $ {spring.version} </version> </sependency> <redency> <roupid> org.springframework </roughid> <Sring-Consx </reperency> <redency> <roupiD> org.springframework </rougiD> <StifactId> spring-jdbc </shintifactid> <sophy> $ {spring.version} </version> </rependency> <sependency> <roupiD> com.alibaba </groupid> <terifactid> <sophy> $ {fastjson.version} </version> </sependency> </rependencies> <!-باستخدام aliyun mirror-> <spositories> <ropository> <id> aliyun </id> <name> aliyun </same> <Url> http://maven.aliy.aliy/nexus/content/url> <Url> http://maven.aliy </ropository> </ropository> </ropository> </ropository> <build> <ninalName> platform-springmvc-webapp </initalname> </build> </project>2. تكوين web.xml
<! doctype web-app public "-// Sun Microsystems ، Inc.//dtd web application 2.3 // en" " <Param-value> classpath: conf/spring/spring-*. <Srevlet-Class> org.springframework.web.servlet.dispatcherservlet </servlet-class> <Init-param> <Param-name> contextConfigLocation </param-name> <Param-value> /web-inf/spring-servlet.xml </param-value> </servlet> <Servlet mapping> <Sradlet-mapping> <Sradlet-Name> Spring-MVC </rectlet-name> <Url-pattern>/</url-pattern> </servlet mapping> <lipter> <filter-name> namearencodingfilter </filter-name> <Filter-Class> org.springframework.web.filter.characterencodingfilter </filter-class> <Init-param> <param-name> الترميز </param-name> <Param-value> utf-8 </parm-value> <Param-value> true </parm-value> </ith-param> </filter> <filter-mapping> <filter-name> nameencodingfilter </filter-name> <Url-pattern>/*</shink-pitle> </filter-mapping> <Rurh-Code> 404 </error-code> <borting> /index.jsp </bition> </error-page> </bil-app>
3. تكوين servlet.xml Spring-servlet.xml
<؟ xmlns: p = "http://www.springframework.org/schema/p" XSI: Schemalocation = "http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-4.2.xsd http://www.springframework.org/mvvc http://www.springframework.org/schema/mvc/spring-mvc-4.2.xsd <السياق: مكون-المسح القاعدة package = "com.mengdee.manage.controller"/> <bean id = "viewResolver"> <property name = "prefix" value = "/"> </propert السرعة والأشياء الأخرى-> <اسم property = "viewclass" value = "org.springframework.web.servlet.view.jstlview"> </property> </bean> <!-start spring mvc endation function "stail> magner-con". <!-تكوين FastJson لاستبدال دعم Jackson الأصلي-> <bean> <property name = "propertyedMediatePes"> <list> <value> text/Html ؛ -> <value> criteMapNullValue </value> <!-سواء لإخراج حقل بقيمة فارغة ، افتراضيًا إلى false-> <!-<value> distableCircularReferEctecteCt </value> <value> value> writedateusedateThormat </value> <value> critenullStringAspty </value> إذا كان الحقل الرقمي فارغًا ، فسيكون الإخراج 0 ، وليس فارغًا <SALUES> WritenullBooleAnasfalse </value> الحقل المنطقي فارغًا ، والإخراج غير خاطئ ، وليس فارغًا <sualtenulllistsAmpty </value> حقل القائمة خالٍ ، والإخراج هو [] ، وليس NULL-> </list> </propert </mvc: يحركه التعليقات التوضيحية> </beans>
4. جافا
التعليم: التعليم (فئة التعداد)
package com.mengdee.manage.entity ؛ استيراد java.util.hashmap ؛ استيراد java.util.map ؛/** * التعليم * @Author Administrator * */public enum upplication {stiberten (alsoy ، alsoy ، inister_midder ("inistergarten" ، 1) ، lextary ("School lextary" ، 2) ، Junior_Middle (" جامعة ("الجامعة" ، 5) ، الكلية ("الكلية" ، 6) ؛ الخريطة النهائية الثابتة الخاصة <integer ، التعليم> election_map = new hashmap <integer ، upply> () ؛ static {for (التعليم التعليمي: التعليم. }} نص سلسلة خاصة ؛ مؤشر int الخاص ؛ التعليم الخاص (نص سلسلة ، int index) {this.text = text ؛ this.index = فهرس ؛ } السلسلة العامة getText () {return text ؛ } public void setText (string text) {this.text = text ؛ } public int getIndex () {return index ؛ } public void setIndex (int index) {this.index = index ؛ } التعليم الثابت العام getEnum (Integer Index) {return upply_map.get (index) ؛ }}شخص:
package com.mengdee.manage.entity ؛ استيراد java.util.arraylist ؛ استيراد java.util.date ؛ استيراد java.util.list ؛ import java.util.map ؛ import com.alibaba.fastjson.annotation.jsonfield ؛ public class {private id id ؛ اسم السلسلة الخاصة ؛ جنس البايت الخاص ؛ // الجنس 1: ذكر 2: سن القصيرة الخاصة الأنثى ؛ // راتب العمر الخاص الطويل ؛ // الراتب وزن مزدوج ؛ // وزن مستوى char الخاص ؛ // تصنيف خاص منطقي البالغ ؛ // ما إذا كان عيد ميلاد البالغين الخاص ؛ // تعليم التعليم الخاص عيد ميلاد ؛ // التأهيل التعليمي السلسلة الخاصة [] الهوايات ؛ // الهوايات قائمة خاصة <Dog> الكلاب ؛ // PET Dog Map <String ، Object> العنوان ؛ // address // استخدم التعليقات التوضيحية للتحكم في ما إذا كنت تريد تسلسل @Jsonfield (serialize = false) قائمة خاصة <Object> obj = new ArrayList <> () ؛ Public Person () {} الشخص العام (معرف طويل ، اسم سلسلة ، جنس البايت ، العمر القصير ، الراتب الطويل ، الوزن المزدوج ، مستوى char ، البالغ المنطقي ، عيد ميلاد التاريخ ، الهوايات [] ، القائمة <Gog> الكلاب ، الخريطة <string ، Object> العنوان) {super () ؛ this.id = id ؛ this.name = name ؛ this.gender = الجنس ؛ this.age = العمر ؛ هذا. this.weight = الوزن ؛ this.vel = المستوى ؛ this.adult = البالغين ؛ this.birthday = عيد ميلاد ؛ this.hobbies = الهوايات ؛ this.dogs = الكلاب ؛ this.address = العنوان ؛ } public long getId () {return id ؛ } public void setId (id long) {this.id = id ؛ } السلسلة العامة getName () {return name ؛ } public void setName (اسم السلسلة) {this.name = name ؛ } البايت العام getGender () {return الجنس ؛ } public void setgender (byte byte) {this.gender = الجنس ؛ } Public Short getage () {return Age ؛ } public void setage (العمر القصير) {this.age = Age ؛ } public long getSalary () {return salary ؛ } setSalary public void (راتب طويل) {this.salary = الراتب ؛ } public double gotweight () {return weight ؛ } public void setweight (وزن مزدوج) {this.weight = weight ؛ } public char getlevel () {return lever ؛ } public void setlevel (char level) {this.level = level ؛ } isadult boolean العامة () {return adult ؛ } public void setAdult (boolean adult) {this.adult = adul ؛ } التاريخ العام getBirthday () {return Birthday ؛ } public void setbirthday (Date Birthday) {this.birthday = عيد ميلاد ؛ }. } jsonfield (name = "edu") public void setedu (int index) {this.education = egudation.getenum (index) ؛ } @jsonfield (serialize = false) تعليم عام geteducation () {return upply ؛ } @jsonfield (serialize = false) public void setducation (express upply) {this.education = upply ؛ } السلسلة العامة [] gethobbies () {return Hobbies ؛ } public void sethobbies (String [] Hobbies) {this.hobbies = Hobbies ؛ } القائمة العامة <Dag> getDogs () {Return Dogs ؛ } public void setDogs (قائمة <Cog> الكلاب) {this.dogs = dogs ؛ } الخريطة العامة <string ، object> getAddress () {return address ؛ } public void setaddress (Map <String ، Object> address) {this.address = address ؛ }}TestController
package com.mengdee.manage.controller ؛ استيراد java.text.decimalformat ؛ استيراد java.util.arraylist ؛ استيراد java.util.date ؛ استيراد java.util.hashmap ؛ استيراد java.util.list ؛ import java.util.map ؛ import org.spramework org.springframework.web.bind.annotation.requestmapping ؛ استيراد org.springframework.web.bind.annotation.ResponseBody ؛ import com.alibaba.fastjson.json com.alibaba.fastjson.serializer.serializeConfig ؛ استيراد com.alibaba.fastjson.serializer.simpledateformatserializer com.mengdee.manage.entity.person ؛ controllerpublic class testController {private Static SerializeConfig SerializeConfig = new SerializeConfig () ؛ ثابت {serializeConfig.put (date.class ، new SimpleTofformatserializer ("Yyyy-MM-DD HH: MM: SS")) ؛ SerializeConfig.put (double.class ، مضاعفة جديدة (New DecimalFormat ("0.00"))) ؛ } @requestmapping ("/index") index public index () {return "index" ؛ } // javabean to object @requestmapping ("/json") responsebody كائن عام json () {person person = new person () ؛ person.setid (1L) ؛ person.setName ("mengdee") ؛ person.setage ((قصيرة) 18) ؛ /// * {"عيد ميلاد": فارغة ، "الوزن": 0 ، "الكلاب": فارغة ، "بالغ": خطأ ، "الهوايات": NULL ، "التعليم": null ، "id": 1 ، "المستوى": "" ، "العنوان": jouls ، العودة personjson } // javabean to string @requestmapping ("/json2") responsebody public json2 () {person person = new person () ؛ person.setid (1L) ؛ person.setName ("mengdee") ؛ person.setage ((قصيرة) 18) ؛ // إذا تم استخدام قيمة NULL ، فلا يمكن اختبارها. <value> writeMapnullValue </value> // "{" vel ": false ،" Age ": 18 ،" الجنس ": 0 ،" ID ": 1 ،" المستوى ":" "،" الاسم ":" mengdee "،" الراتب ": 0 ،" الوزن ": 0.0} إرجاع jsonstring. } @requestmapping ("/json3") responsebody كائن عام json3 () {person person = new person () ؛ person.setid (1L) ؛ person.setName ("mengdee") ؛ person.setage ((قصيرة) 18) ؛ person.setBirthday (Date ()) ؛ كائن personjson = json.tojson (شخص) ؛ // json.tojson (شخص) الإعدادات الافتراضية للمللي ثانية "عيد ميلاد": 1495073314780 ، // استخدم الرقم التسلسلي SerializeConfig لتكوين التنسيق لتواريخ // "{" عيد ميلاد ":" 2017-05-18 10:19:55 "،" الوزن ": 0.0 ،" الكبار ": خطأ ،" معرف ": 1 ،" المستوى ":" "،" العمر ": 18 ،" الاسم ":" mengdee "،" الجنس ": 0 ،" الراتب ": 0} إرجاع jsonstring. } @requestmapping ("/json4") responsebody كائن عام json4 () {person person = new person () ؛ person.setid (1L) ؛ person.setName ("mengdee") ؛ person.setage ((قصيرة) 18) ؛ person.setBirthday (Date ()) ؛ person.SetEducation (Education.University) ؛ // تعداد سلسلة [] الهوايات = {"القراءة" ، "السياحة"} ؛ person.sethobbies (الهوايات) ؛ Dog1 = New Dog (1L ، "Dog1" ، (قصيرة) 1) ؛ Dog2 = New Dog (2L ، "Dog2" ، (Short) 2) ؛ قائمة <Cog> Dogs = new ArrayList <> () ؛ Dogs.add (dog1) ؛ Dogs.add (dog2) ؛ person.setDogs (الكلاب) ؛ عنوان العنوان 1 = عنوان جديد (1L ، "منطقة شنغهاي بودونج الجديدة") ؛ العنوان 2 = عنوان جديد (2L ، "مقاطعة شنغهاي باوشان") ؛ خريطة <string ، object> addressMap = new HashMap <> () ؛ addressMap.put (address1.getId () + "" ، address1) ؛ addressMap.put (address2.getId () + "" ، address2) ؛ person.setaddress (addressMap) ؛ كائن personjson = json.tojson (شخص) ؛ العودة personjson } @requestmapping ("/json5") @Responsebody public json5 () {dog dog1 = new dog (1l ، "dog1" ، (short) 1) ؛ Dog2 = New Dog (2L ، "Dog2" ، (Short) 2) ؛ قائمة <Cog> Dogs = new ArrayList <> () ؛ Dogs.add (dog1) ؛ Dogs.add (dog2) ؛ // list <t> -> json string jsonstring = json.tojsonstring (Dogs ، false) ؛ system.out.println (jsonstring) ؛ // json -> list <t> list <Cog> parsearray = json.parsearray (jsonstring ، dog.class) ؛ ل (الكلب الكلب: parsearray) {system.out.println (الكلب) ؛ } الخريطة <string ، dog> map = new hashmap <string ، dog> () ؛ map.put ("dog1" ، New Dog (1L ، "Dog1" ، (Short) 1)) ؛ map.put ("dog2" ، New Dog (2l ، "dog2" ، (short) 2)) ؛ map.put ("dog3" ، New Dog (3L ، "Dog3" ، (Short) 3)) ؛ // map -> json string mapjsonstring = json.tojsonstring (map ، true) ؛ System.out.println (MapJsonstring) ؛ // json -> mapsuppressWarnings ("unchected") الخريطة <string ، dog> map1 = (map <string ، dog>) json.parse (mapjsonstring) ؛ لـ (مفتاح السلسلة: map1.keyset ()) {system.out.println (key + ":" + map1.get (key)) ؛ } // array -> json string [] hobbies = {"a" ، "b" ، "c"} ؛ String HobbiessTring = json.tojsonstring (الهوايات ، صواب) ؛ system.out.println (الهوايات) ؛ // json -> array jsonarray jsonarray = json.parsearray (hobbiesstring) ؛ لـ (Object o: jsonarray) {system.out.println (o) ؛ } system.out.println (jsonarray) ؛ إرجاع jsonstring. }}تكامل Swagger
الخطوة 1: تقديم التبعيات ذات الصلة
<Rependency> <roupEd> io.springfox </rougiD> <StifactId> Springfox-Swagger2 </shintifactid> <sophy> 2.6.1 </version> <scope> compile </speaced> </redencsid> <sperence> <roupend> com.fasterxml.jackson.core </groupid> <splect> 2.6.6 </version> </premency>
الخطوة 2: تكوين معلومات التباهي
SwaggerConfig.java
@configuration@enablewebmvc@enlobeswagger2public class swaggerConfig {bean public docket customDocket () {docket docket = new docket (documentationType.swagger_2) ؛ docket.apiinfo (apiinfo ()) ؛ DOCKET.Select (). APIS (requestHandlersElectors.Withmethodannotation (Apioperation.class)) ؛ DOCKET.Select (). المسارات (pathselectors.regex ("/api/.*")). build () ؛ جدول العودة } apiinfo apiinfo () {contact contact = new Contact ("Xiao Ming" ، "http://www.baidu.com" ، "[email protected]") ؛ إرجاع APIINFO جديد ("واجهة API" ، // Big Title "API Interface" ، // subtitle "0.0.1" ، // الإصدار "www.baidu.com" ، // truesofserviceurl contact ، // uputer "api interface" ، // link display text "http://www.baidu.com" }}ملاحظة: نظرًا لأن فئة SwaggerConfig تقوم بتكوين التعليقات التوضيحية ، يجب مسح هذه الفئة ، أي ، يجب تضمين الفصل في السياق: مكون المستحيل.
الخطوة 3: استخدم التعليقات التوضيحية على الفصول والأساليب والمعلمات
@controller @requestMapping ("/api/v1") @api (description = "api interface") class public class apicontroller {apiOperation (value = "user login" ، notes = "user login interface"). alfulalArgumentException.class) ، apiresponse (رمز = 10002 ، رسالة = "خطأ كلمة المرور")}) @requestmapping (value = "/user/login" ، method = requestMethod.post ، store = {"essern/json ؛ charset = utf-8 ؛ TRUE) REQUESTPARAM String اسم المستخدم ، apiParam (name = "password" ، value = "password" ، required = true) @requestparam password) {return "{'username': '" + username + "' ، 'password': '" + password + "}" ؛ } apiImplicitParams ({apiImplicitParam (paramtype = "header" ، name = "phone" ، datatype = "string" ، required = true ، value = "mobile number") ، @apiemplicitparam (paramtype = "query" ، name = namname "، datatype = 666 ") ، apiImplicitParam (paramtype =" path "، name =" platform "، datatype =" string "، required = true ، value =" platfort "، defaultValue =" pc ") ، apiImplicitparam (paramtype =" body "، name =" passwype = "shere = qualious =" egailed = " "/{platform}/user/regist" ، method = requestMethod.post ، تنتج = {"application/json ؛ charset = utf-8 ؛"}) ResponseBody public string Regist ( @requesthost string phone ، username " +" + " +". "لقب": "" + لقب + "" ، "منصة": "" + منصة + "،" كلمة المرور ":" " + كلمة المرور +"} "؛ } @requestmapping (value = "/user/list" ، method = requestMethod.get ، تنتج = {"application/json ؛ charset = utf-8 ؛ Zhangsan "+pager.getSize ()+" '}] "؛ } @requestmapping ("/docs") apiignore public string test () {return "api-docs" ؛ }}بيجر
فئة عامة Pager {apImodElProperty (value = "رقم الصفحة" ، مطلوب = صواب) صفحة int الخاصة ؛ apImodElProperty (value = "عدد لكل صفحة" ، مطلوب = صواب) حجم int الخاص ؛ pager pager () {} public int getPage () {return page ؛ } public void setPage (int page) {this.page = page ؛ } public int getSize () {size return ؛ } public void setSize (int size) {this.size = size ؛ }}التعليقات التوضيحية المشتركة:
الخطوة 4: Access /V2 /API-DOCS
تفضل بزيارة http: // localhost: 8080/project name/v2/api-docs على المتصفح ، إذا كان هناك محتوى JSON ، فهذا أمر طبيعي
الخطوة 5: تنزيل Swagger-Ui
قم بتنزيل https://github.com/swagger-api/swagger-ui من github. لاحظ أنك تحتاج إلى تحديد تنزيل v2.2.10 (https://github.com/swagger-api/swagger-ui/tree/v2.2.10 (التنزيل المحلي)). طريقة التكامل أكبر من هذا الإصدار مختلف.
طريقة التكامل: ضع جميع الملفات في Dist Directory ضمن v2.2.10 في ملفات ثابتة في مشروعك ، واستخدم الكود التالي للكتابة فوق جزء البرنامج النصي في index.html
<script type = "text/javaScript"> var baseurl = "" ؛ $ (function () {var url = window.location.search.match (/url = ([[^&] +)/) (window.swaggerTranslator) {window.swaggerTranslator.translate () ؛ (swaggerapi ، swaggerui) {if (typeof initoauth == "function") {initoauth ({clientId: "your-client-id" ، clientscret: if (window.swaggertranslator) jsoneditor: false ، apissorter: "alpha" ، defaultModelRendering: "Schema" ، showRequestheaders: false}) ؛ window.swaggerui.Api.ClientAuthorizations.Add ("الرمز المميز" ، TokenHeader) ؛ </script> الخطوة 6: الوصول إلى index.html المعدلة أعلاه
http: // localhost: 8080/اسم المشروع/ثابت/طرف ثالث/swagger-ui/index.html
ملاحظة: نظرًا لأنك ترغب في الوصول إلى الموارد الثابتة ، يرجى التأكد من الوصول إلى الموارد الثابتة باستخدام SpringMVC. إذا لم تتمكن من الوصول ، يرجى إجراء التكوين التالي:
1. أضف معالج Servlet الافتراضي إلى ملف تكوين الربيع
<!-تصفية الموارد الثابتة-> <mvc: معالج الخدمات الافتراضي/>
2. إضافة ملفات ثابتة للتصفية في web.xml
<!-تصفية الموارد الثابتة-> <Sradlet-mapping> <Sradlet-Name> افتراضي </servlet-name> <url-pattern>*.
عينة بنية رمز المشروع:
مثال كامل على عنوان تنزيل العرض التجريبي:
آخر
حول spring-servlet.xml و ApplicationContext.xml
يوفر SpringMVC ملفين تكوين اثنين
Spring-servlet.xml هو مستوى وحدة التحكم ، ونطاق عمله هو طبقة التحكم. الاسم الافتراضي هو [servlet-name] -servlet.xml
بشكل افتراضي ، يتم وضعه في دليل الويب/ الدليل. سيتم تحميل SPRINGMVC تلقائيًا ، ويمكن أيضًا تكوينه في web.xml.
<Sradlet> <Sradlet-Name> Spring-Mvc </revlet-name> <Servlet-Class> org.springframework.web.servlet.dispatcherservlet </radlet-class> <Ing-param> <param-name> contextConfigLocation </baram-name> <baram-value> </ith-param> <load-on-startup> 1 </load-on-startup> </servlet>
بشكل عام ، يتم تكوين بعض التكوينات المتعلقة بالوحدة في الربيع servlet.xml ، مثل دقة العرض ، ورسم خرائط لملفات الموارد الثابتة ، وتوحل نتائج الإرجاع ، إلخ ، إلخ.
عرض تحليل
تعيين الموارد الثابت
<mvc: موقع الموارد = "/static/" mapping = "/static/**"/> <mvc: الموارد الموقع = "/الصور/" mapping = "/static/**"/> <mvc: موقع الموارد = "/css/" mapping = "/static/** location = "/html/" mapping = "/static/**"/> <mvc: resources location = "/upload/" mapping = "/static/**"/>
org.springframework.context.support.ResourceBundleMessagesource
تحليل النتيجة
3. ApplicationContext.xml هو تكوين على مستوى النظام ، ونطاق وظيفته هو سياق النظام. يجب تكوين التهيئة في السياق في Web.xml.
<context-param> <Param-Name> contextConfigLocation </param-name> <param-value> classpath: conf/spring/spring-*
4. فيما يتعلق ApplicationContxt.xml ، يتم تقسيمه عمومًا إلى ملفات تكوين متعددة وفقًا للوظيفة ، مثل:
لخص
ما سبق هو المحتوى الكامل لهذه المقالة. آمل أن يكون لمحتوى هذه المقالة قيمة مرجعية معينة لدراسة أو عمل الجميع. إذا كان لديك أي أسئلة ، فيمكنك ترك رسالة للتواصل. شكرا لك على دعمك إلى wulin.com.