لقد فكرت أيضًا في هذا المقال ، أولاً وقبل كل شيء ، مهاراتي ليست جيدة. لكني أحب دراسة شيء ما. نظرًا لأن العديد من الأصدقاء كتبوا أونانًا مماثلًا قبل ذلك ، وقد قرأت الكثير منهم ، لكن التفسير ليس متعمقًا بما فيه الكفاية. لا توجد إجابة على الأسئلة التي أثارها بعض الأصدقاء. هنا أقوم بفرزها بناءً على قدراتي الحالية. وأخيرا الجري بنجاح.
حدثت مشكلة أثناء الاختبار:
1. org/springframework/data/mapping/context/mappingContextAware
2. SRC-RESORD: لا يمكن حل اسم "المستودع: مستودع" إلى "تعريف النوع"
كل ما سبق ناتج عن عدم تطابق الإصدار. خاصة الخطأ الثاني الذي رأيت فيه بعض الحلول المذكورة JPA ، لكنني لم أستخدم JPA هنا. في وقت لاحق ، استبدلت حزمة الربيع data-commons ولم تظهر.
اسمحوا لي أولاً أن أتحدث عن بيئة التطوير الخاصة بي:
myeclipse 6.5
MongoDB 2.0.8
الربيع 3.0.4
أخيرًا ، هناك ما يليان (إذا كان هذان الإصداران خاطئان ، فمن المحتمل أن تحدث مشاكل مختلفة ومعقدة). هنا سأعطي الإصدار الذي استخدمته
الربيع data-document
الربيع data-commons
يجب تغيير جميع الإصدارات. فيما يلي عنوان تنزيل الجرة
http://www.springsource.org/spring-data/mongodb
http://www.springsource.org/spring-data/commons
الإصدارات التي تم تنزيلها هي:
الربيع data-commons-dist-1.4.0.m1
الربيع data-document -1.0.0.m2.zip
إليكم صور لمشروعي
ثم ابدأ رحلة التنمية الخاصة بنا!
قم أولاً بإنشاء ملف تكوين application.xml جديد
<؟ Xmlns: Context = "http://www.springframework.org/schema/context" xmlns: mongo = "http://www.springframework.org/schema/data/mongo" XSI: schemalocation = "http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context-3.0.xsd http://www.springframeworg http://www.springframework.org/schema/data/mongo/spring-mongo-1.0.xsd http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-3.0.xsd "> <mongo: mongo host =" 192.168.0.138 "port =" 27017 "/> <bean id =" mongotmplate " name = "databasename" value = "db"/> <constructor-arg name = "defaultCollectionName" value = "person"/> </bean> <bean id = "personrepository"> <property name = "mongotemplate" ref = "mongotemplate"> </propert
ثم اكتب الواجهة التي تدير mongodb
/ ** * abstractrepository.java */ package com.mongo.dao ؛ استيراد java.util.list ؛ استيراد com.mongo.bean.person ؛ /** * TODO * Author Culan * version toDo */واجهة عامة abstractRepository {/** * * <b> الوظيفة: </b> إضافة كائن * Author culan * createdate 2012-12-12 11:41:30 */public void insert (person person) ؛ /** * * <b> الوظيفة: </b> ابحث عن كائن بواسطة ID * Author Culan * Createdate 2012-12 11:41:41 */Public Person Findone (معرف السلسلة) ؛ /** * * <b> الوظيفة: </b> Query All * Author Culan * Createdate 2012-12-12 16:26:06 */Public List <Person> findall () ؛ القائمة العامة <Person> findByRegex (سلسلة regex) ؛ /** * * <b> الوظيفة: </b> حذف كائن المعرف المحدد * Author Culan * createdate 2012-12 16:26:16 */public void removeOne (string id) ؛ /** * * <b> الوظيفة: </b> حذف All * Author Culan * Createdate 2012-12-12 16:25:40 */public void removeall () ؛ /** * ابحث عن معرف * <b> الوظيفة: </b> * Author Culan * Createdate 2012-12 16:25:51 */public void findAndModify (string id) ؛ } اكتب فئة تنفيذ الواجهة المقابلة:
/ ** * personrepository.java */ package com.mongo.dao.impl ؛ استيراد java.util.list ؛ استيراد java.util.regex.pattern ؛ استيراد org.springframework.data.document.mongodb.mongotemplate ؛ استيراد org.springframework.data.document.mongodb.query.criteria ؛ استيراد org.springframework.data.document.mongodb.query.update ؛ استيراد org.springframework.data.document.mongodb.query.update ؛ استيراد com.mongo.bean.person ؛ استيراد com.mongo.dao.abstractrepository ؛ / ** * TODO * Author Culan * version todo */ public class personrepository arsusterpository {private mongotemplate mongotemplate ؛ / * (غير javadoc) * seee com.mongo.dao.abstractrepository#findall () */ Override Public List <Person> findall () {// todo method method method clud getMongotemplate (). } / * (غير javadoc) * seee com.mongo.dao.abstractrepository#findAndModify (java.lang.string) * / @override public void findAndMode (ide) getMongotemplate (). updatefirst (استعلام جديد (معايير. } / * (non-javadoc) * seee com.mongo.dao.abstractrepository#findbyregex (java.lang.string) * / Override public list <Pirons> findByRegex (string regex) معايير المعايير = معايير جديدة ("الاسم"). regex (pattern.toString ()) ؛ إرجاع getMongotemplate (). Find (استعلام جديد (معايير) ، person.class) ؛ } / * (non-javadoc) * seee com.mongo.dao.abstractrepository#findone (java.lang.string) * / / @ @أوفر) } / * (غير javadoc) * seee com.mongo.dao.abstractrepository#insert (com.mongo.bean.person) * / Override public void insert (person) {// todo method method stub getmongotemplate (). } / * (غير javadoc) * seee com.mongo.dao.abstractrepository#removeall () * / Override public void removeall () {// todo todo method method list <Person> list = this.findall () ؛ if (list! = null) {for (الشخص الشخص: قائمة) {getMongotemplate (). إزالة (شخص) ؛ }}} / * (غير javadoc) * seee com.mongo.dao.abstractrepository#removeOne (java.lang.string) * / @override void removeOne (idr string) {// todo method method method criteria = criteria.where ("id"). if (المعايير == null) {query query = query new (المعايير) ؛ if (query! = null && getMongotemplate (). }} / ** * return the mongotemplate * / public mongotemplate getMongotemplate () {return mongotemplate ؛ } / ** * param mongotemplate the mongotemplate لتعيين * / public void setMongotemplate (mongotemplate mongotemplate) {this.mongotemplate = mongotemplate ؛ }} يتم تقديم رمز كائن الشخص المقابل هنا أيضًا
/ ** * person.java */ package com.mongo.bean ؛ استيراد java.io.serializable ؛ / ** * TODO * Author Culan * version todo */ public class profiresable {/ ** * */ private static final serialversionuid = 3617931430808763429L ؛ معرف السلسلة الخاص ؛ اسم السلسلة الخاصة ؛ عصر INT الخاص ؛ public person () {super () ؛ } الشخص العام (معرف السلسلة ، اسم السلسلة ، int age) {super () ؛ this.id = id ؛ this.name = name ؛ this.age = العمر ؛ } / ** * regurn the id * / public string getId () {return id ؛ } / ** * param id المعرف لتعيين * / public void setId (string id) {this.id = id ؛ } / ** * @RETURN Name * / public String getName () {return name ؛ } / ** * param اسم الاسم لتعيين * / public void setName (اسم السلسلة) {this.name = name ؛ } / ** * return the Age * / public int getage () {return Age ؛ } / ** * param Age the Age لتعيين * / public void setage (int age) {this.age = age ؛ } / ** * * @param name * param age * / public person (name string ، int age) {super () ؛ this.name = name ؛ this.age = العمر ؛ } السلسلة العامة toString () {return "person [id ="+id+"، name ="+name+"، Age ="+Age+"]" ؛ }} أخيرًا اكتب فئة الاختبار الخاصة بنا وابدأ الاختبار
/ ** * mongotest.java */ package com.mongo.test ؛ استيراد java.util.list ؛ استيراد org.apache.commons.logging.log ؛ استيراد org.apache.commons.logging.logfactory ؛ استيراد org.springframework.context.applicationContext ؛ استيراد org.springframework.context.support.classpathxmlapplicationContext ؛ استيراد com.mongo.bean.person ؛ استيراد com.mongo.dao.abstractrepository ؛ استيراد com.mongo.dao.impl.personRepository ؛ / ** * TODO * Author Culan * version tode */ public class mongotest {private static log = logfactory.getLog (mongotest.class.getName ()) ؛ خاص pr = null ؛ /** * * <b> الوظيفة: </b> * author culan * createdate 2012-12-12 16:08:02 */public void init () {log.debug ("start start") ؛ ApplicationContext ctx = جديد classPathxMlAppLicationContext ("ApplicationContext.xml") ؛ pr = (personrepository) ctx.getBean ("personrepository") ؛ }/** * * <b> الوظيفة: </b> إضافة * Author culan * createdate 2012-12-12 16:11:01 */public void insert () {person p = new شخص ("curian" ، 27) ؛ Pr.insert (p) ؛ log.debug ("تمت إضافة بنجاح") ؛ }/** * * <b> الدالة: </b> كائن البحث استنادًا إلى معرف الإدخال * Author Culan * createdate 2012-12-12 16:24:10 */public void findone () {string id = "50c83CB552C2CEB046317D6" ؛ الشخص p = pr.findone (id) ؛ log.debug (p) ؛ }/** * * <b> الوظيفة: </b> Query All * Author Culan * Createdate 2012-12 16:08:54 */public void listall () {list <Phone> list = pr.findall () ؛ log.debug ("نتيجة الاستعلام هي كما يلي:") ؛ لـ (person p: list) {log.debug (p.toString ()) ؛ }}/** * * <b> الوظيفة: </b> طريقة الاختبار * Author culan * createdate 2012-12-12 16:11:37 */public void start () {init () ؛ // insert () ؛ // listall () ؛ findone () ؛ }/** * <b> الوظيفة: </b> الدالة الرئيسية * Author Culan * createdate 2012-12 11:54:30 */public static void main (string [] args) {// todo method mongotest mongotest t = new mongotest () ؛ T.Start () ؛ }}عندما يظهر السجل بعد التشغيل ، لا توجد مشكلة.
2012-12 16: 23: 59: debug com.mongo.test.mongotest-ابدأ 2012-12-12 16: 23: 59: info org.springframework.context.support.classpathxmlicationcontext-regreshing org.springframework.contex تاريخ بدء التشغيل [الأربعاء 12 ديسمبر 16:23:59 CST 2012] ؛ جذر التسلسل الهرمي للسياق 2012-12 16: 23: 59: inform org.springframework.beans.factory.support.defaultListableBeanfactory - المفردات المسبقة في org.springframework.beans.factory.support.defaultlistablebeanfactory@12a0f6c: تحديد الفاصوليا [Mongo ، Mongotemplate ، personrepository ، org.springframework.context.annotation.internalConfigurationAntationProcessor ، org.springframework.context.annotation.internalautowi redannotationprocessor ، org.springframework.context.annotation.internalrequiredannotationprocessor ، org.springframework.context.annotation.internalcommonantationprocessor] ؛ جذر التسلسل الهرمي للمصنع 2012-12-12 16: 24: 00: debug com.mongo.test.mongotest-شخص [معرف = 50C83CB552C2CEB0463177D6 ، الاسم = Cuiran ، العمر = 27]
قم بإرفاق رمز المصدر التجريبي هنا: العرض التوضيحي
ما سبق هو كل محتوى هذه المقالة. آمل أن يكون ذلك مفيدًا لتعلم الجميع وآمل أن يدعم الجميع wulin.com أكثر.