Я также думал об этой статье, прежде всего, мои навыки не очень хороши. Но мне просто нравится что -то изучать. Потому что многие друзья написали похожие до этого, и я прочитал многие из них, но объяснение не достаточно глубокое. Нет ответа на вопросы, поднятые некоторыми друзьями. Здесь я разбираюсь на основе моих текущих способностей. И, наконец, успешно бегай.
Во время теста возникла проблема:
1. org/springframework/data/mapping/context/mappingContextAware
2. SRC-Resolve: не может разрешить имя «Репозиторий: репозиторий» к (n) «определение типа»
Все вышеперечисленное вызвано несоответствием версий. Особенно вторая ошибка, которую я увидел, некоторые из решений упомянули JPA, но я не использовал JPA здесь. Позже я заменил пакет Spring-Data-Commons и не появился.
Позвольте мне сначала поговорить о моей среде развития:
Myeclipse 6.5
MongoDB 2.0.8
Весна 3.0.4
Наконец, есть следующие два (если эти две версии ошибочны, могут возникнуть различные и сложные проблемы). Здесь я дам версию, которую использовал
Spring-Data-Document
Спринг-дата-коммуны
Все версии должны быть изменены. Ниже приведен адрес загрузки JAR
http://www.springsource.org/spring-data/mongodb
http://www.springsource.org/spring-data/commons
Загруженные версии:
Spring-Data-Commons-Dist-1.4.0.m1
Spring-Data-Document-1.0.0.m2.zip
Вот фотографии моего проекта
Тогда начните наше путешествие по разработке!
Сначала создать новый файл конфигурации Application.xml
<? xml version = "1.0" Encoding = "UTF-8"?> <Beans xmlns = "http://www.springframework.org/schema/beans" xmlns: xsi = "http://www.w3.org/2001/xmlschema-instance" xmlns: context = "http://www.springframework.org/schema/context" xmlns: mongo = "http://www.springframework.org/schema/data/mongo" xsi: schemalocation = "http://www.springmema.springmema.springmema. http://www.springframework.org/schema/context/spring-context-3.0.xsd http://www.springframework.org/schema/data/mongo http://www.springframework.org/schema/data/mongo/spring-mongo-1.0.xsd http://www.springframework.org/schema/beans http://www.spramework.orgem. <mongo:mongo host="192.168.0.138" port="27017"/> <bean id="mongoTemplate"> <constructor-arg ref="mongo"/> <constructor-arg name="databaseName" value="db"/> <constructor-arg name="defaultCollectionName" value="person" /> </bean> <Bean Id = "PersonRepository"> <name = "mongotemplate" ref = "mongotemplate"> </property> </bean> <контекст: аннотация-config/> </beans>
Затем напишите интерфейс, который управляет MongoDB
/ ** * AbstractRepository.java */ package com.mongo.dao; импортировать java.util.list; Импорт com.mongo.bean.person; /** * todo * @author culan * @version todo */public interface abstractrepository {/** * * <b> Функция: </b> добавить объект * @author culan * @createdate 2012-12-12 11:41:30 */public void insert (человек); /** * * <b> Функция: </b> Найти объект по идентификатору * @author culan * @createdate 2012-12 11:41:41 */public findone (String Id); /** * * <b> Функция: </b> Запрос всех * @author culan * @createdate 2012-12-12 16:26:06 */public <ersant> findall (); Общественный список <dersonge> findbyregex (string regex); /** * * * <b> Функция: </b> Удалить указанный объект идентификатора * @author culan * @createdate 2012-12 16:26:16 */public void removeone (String id); /** * * <b> Функция: </b> удалить все * @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; Import 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 */ performpositior -personrepositior реализует Abstractrepository {private mongotemplate mongotemplate; / * (non-javadoc) * @see com.mongo.dao.abstractrepository#findall () */ @override public list <derss> findall () {// todo автоматически генерируемый метод stub return getmongotemplate (). Найти (new query (), person.class); } / * (non-javadoc) * @see com.mongo.dao.abstractrepository#findandmodify (java.lang.string) * /@override public void findandmodify (String id) {// todo Auto-Generated Method Stub // Новый запрос (Criteria.where.where ("ID"). getMongotemplate (). UpdateFirst (новый запрос (критерии. где ("id"). IS (id)), New Update (). Inc ("Age", 3)); } / * (non-javadoc) * @see com.mongo.dao.abstractrepository#findbyregex (java.lang.string) * / @override public list <dersbine> findbyregex (string regex) {// todo Auto-Generated Method STUB Pattern = Pattern.compile (regex, шаблон. Критерии критериев = новые критерии ("имя"). Regex (pattern.tostring ()); return getMongotemplate (). Найти (новый запрос (критерии), person.class); } / * (non-javadoc) * @see com.mongo.dao.abstractrepository#findone (java.lang.string) * / @override public findone (String id) {// todo автоматически сгенерированный метод (Id) } / * (non-javadoc) * @see com.mongo.dao.abstractrepository#insert (com.mongo.bean.person) * / @override public void insert (человек) {// todo Автопогенерированный метод stub getmongotemptamte (). insert (человек); } / * (non-javadoc) * @see com.mongo.dao.abstractrepository#removeall () * / @override public void removeall () {// todo автоматически сгенерированный метод списки <person> list = this.findall (); if (list! = null) {for (Person Person: list) {getMongotemplate (). Удалить (человек); }}} / * (non-javadoc) * @see com.mongo.dao.abstractrepository#removeone (java.lang.string) * / @override public void remodeone (String id) {// todo Автопогенерированный метод критерий критерий = критерии. if (критерии == null) {Query Query = новый запрос (критерии); if (Query! = null && getmongotemplate (). Findone (query, person.class)! = null) getMongotemplate (). Удалить (getMongotemplate (). Findone (Query, person.class)); }} / ** * @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 Лицо реализует serializable {/ ** * */ private static final long serialversionuid = 3617931430808763429l; Приватный идентификатор строки; Приватное название строки; частный int возраст; public Person () {super (); } public Person (идентификатор строки, имя строки, int age) {super (); this.id = id; this.name = name; this.age = возраст; } / ** * @return the id * / public String getId () {return id; } / ** * @param id Идентификатор для установки * / public void setid (string id) {this.id = id; } / ** * @return the name * / public String getName () {return name; } / ** * @param name Имя для установки * / public void setname (string name) {this.name = name; } / ** * @return the Age * / public int getage () {return Age; } / ** * @param Возраст возраст для установки * / public void setage (int age) {this.age = age; } / ** * * * @param name * @param Age * / public (String name, int age) {super (); this.name = name; this.age = возраст; } public String 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; Import org.springframework.context.support.classpathxmlapplicationContext; Импорт com.mongo.bean.person; импорт com.mongo.dao.abstractrepository; импорт com.mongo.dao.impl.personrepository; / ** * todo * @author culan * @version todo */ public class mongotest {private static log = logfactory.getlog (mongotest.class.getName ()); Частный Abstractrepository pr = null; /** * * * <b> Функция: </b> * @author culan * @createdate 2012-12-12 16:08:02 */public void init () {log.debug ("Start Start"); ApplicationContext ctx = new ClassPathxMlapplicationContext ("ApplicationContext.xml"); pr = (personRepository) ctx.getbean ("PersonRepository"); }/** * * * <b> Функция: </b> добавить * @author culan * @createdate 2012-12-12 16:11:01 */public void insert () {person p = новый человек ("curian", 27); pr.insert (p); log.debug («добавлен успешно»); }/** * * * <b> Функция: </b> объект поиска на основе входного идентификатора * @author culan * @createdate 2012-12-12 16:24:10 */public void findone () {string id = "50c83cb552c2ceb0463177d6"; Человек p = pr.findone (id); log.debug (p); }/** * * * <b> Функция: </b> запрос All * @author culan * @createdate 2012-12 16:08:54 */public void distall () {list <person> list = pr.findall (); log.debug («Результат запроса выглядит следующим образом:»); для (человек P: список) {log.debug (p.tostring ()); }}/** * * <b> Функция: </b> Метод испытания * @author culan * @createdate 2012-12-12 16:11:37 */public void start () {init (); //вставлять(); // listall (); findone (); }/** * <b> Функция: </b> Основная функция * @author culan * @createdate 2012-12 11:54:30 */public static void main (string [] args) {// todo автоматически генерируемый метод atub mongoTest t = new mongotest (); t.start (); }}Когда журнал появляется после пробега, проблем нет.
2012-12 16: 23: 59: Debug com.mongo.test.mongotest-Start Start 2012-12-12 16: 23: 59: Info org.springframework.context.support.classpathxmlapplication context-reflyshing org.springframework.context.suppplic 12 декабря 16:23:59 CST 2012]; root of context hierarchy 2012-12 16:23:59:INFO org.springframework.beans.factory.xml.XmlBeanDefinitionReader - Loading XML bean definitions from class path resource [applicationContext.xml] 2012-12-12 16:24:00:INFO org.springframework.beans.factory.support.DefaultListableBeanFactory - Предварительно инстанции синглтонов в org.springframework.beans.factory.support.default-listablebeanfactory@12a0f6c: определение бобов [Mongo, Mongotemplate, PersonRepository, org.springframework.context.annotation.internalConfigurationAnnotationProcessor, org.springframework.context.annotation.internalautowi RedannotationProcessor, org.springframework.context.annotation.internalrequiredannotationProcessor, org.springframework.context.annotation.internalcommonannotationProcessor]; Корень фабрики иерархии 2012-12-12 16: 24: 00: отладка com.mongo.test.mongotest-человек [id = 50c83cb552c2ceb0463177d6, name = cuiran, возраст = 27]
Прикрепите демонстрационный исходный код здесь: демонстрация
Выше всего содержание этой статьи. Я надеюсь, что это будет полезно для каждого обучения, и я надеюсь, что все будут поддерживать Wulin.com больше.