Предисловие
Основное внимание в этой статье - интегрировать MongoDB и Spring в проект, обнаружить проблемы на практике, отслеживать проблемы, а затем решать проблемы. Я не скажу многое ниже, давайте посмотрим на подробное введение вместе.
1. Подготовка
2. Характеристики
3. Пакет зависимости
<depervice> <groupid> org.springframework.data </groupid> <artifactid> spring-data-mongodb </artifactid> <serse> 1.5.0.Release </version> </repertive> <Dependency> <groupid> org.slf4j </Groupid> <strifactId> slf4jjj-nog4J12 </ortfactid> </Groupid> <strifactid> slf4jjjjjjifAct> </GroupD> <StifActId> slf4jjjjjifAct> </artifactId> slf4jjjj.12 <версия> 1.5.10 </version> </depertion>
Весенние зависимости
<!-Spring Webleted-зависимости-> <Dependency> <groupId> org.springframework </GroupId> <straCactId> Spring-web </artifactid> <sersion> $ {Spring.version} </version> </artifactId> <Depectibmv> <groupid> org.spramework </GroupId> <ratifactId> </artbamvcact> </artifactid> </artbamvcact>. <serse> 3.1.2.release </version> </vehysency> <!-Зависимости для тестирования весеннего теста-> <Depected> <groupId> org.springframework </GroupId> <artifactid> Spring-test </artifactid> <sersive> 4.3.1.Release </version> </зависимость>4. Интегрировать MongoDB
[Примечание: пожалуйста, обратитесь к моей статье о добавлении управления разрешениями в MongoDB: включить аутентификацию разрешений в MONGDB]
mongodb.properties
mongo.hostport = 172.16.4.166: 27017mongo.dbname = ad_api_countmongo.username = hehaitaomongo.password = hehaitao mongo.connectionsperhost = 8mongo.threadsallowedToblockforConnectionMultiplier = 4#/u8fde/u63a5/u8d85/u65f6/ u65f6/u95f4mongo.connecttimeout = 1000#/u7b49/u5f85/u65f6/u95f4mongo.maxwaittime = 1500mongo.autoconnectretret y = truemongo.socketkeepalive = true#socket/u8d85/u65f6/u65f6/u95f4mongo.sockettimeout = 1500mongo.slaveok = true
mongodb.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.1.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.org/schema/beans/springbeans-3.1.11.1.1.1.1spramework.orgema/beans/springbeans-3.1.1.spring-3.1.1.springbeans.3.1.1.spring-beansbeans.3. Загрузите файл конфигурации свойств mongodb-> <Контекст: Property-Placeholder location = "classpath: mongodb.properties" игнорировать Unresolvable = "true"/> <!-Определите объект Mongo, соответствующий монго в официальном пакете JAR из MongoDB. Реплика-набор Установите IP-адрес и порт реплики кластера-> <mongo: mongo id = "mongo" replica-set = "$ {mongo.hostport}"> <mongo: Options Connections-per-host = "$ {mongo.connectionsperhost}" threads-allowed-to-block-for-connection-multiplier="${mongo.threadsAllowedToBlockForConnectionMultiplier}" connect-timeout="${mongo.connectTimeout}" max-wait-time="${mongo.maxWaitTime}" auto-connect-retry="${mongo.autoConnectRetry}" Socket-Hape-alive = "$ {mongo.socketkeepalive}" socket-timeout = "$ {mongo.sockettimeout}" slav-ok = "$ {mongo.slaveok}" write-number = "1" write-timeout = "0" write-fsync = "true"/> </mongo: mongo> <MongoOry: db-factory: db-factory? dbname = "$ {mongo.dbname}" username = "$ {mongo.username}" password = "$ {mongo.password}" mongo-ref = "mongo"/> <bean id = "mongotemplate"> <contructor- name = "mongodbfactory" ref = "mgcactory"/> </beans> </beanceory "/> </> </beanceory"/> </beancery "/> </> </> </beancery"/> </beanceory "/> </beanceorSpring-Contex.xml
<? xml version = "1.0" Encoding = "UTF-8"?> <Beans xmlns = "http://www.springframework.org/schema/beans" xmlns: context = "http://www.springframework.org/schema/context" xmlns: tx = "http://www.springframework.org/schema/tx" xmlns: aop = "http://www.springframework.org/schema/aop" xmlns: task = "http://www.springframe. xmlns: xsi = "http://www.w3.org/2001/xmlschema-instance" xsi: schemalocation = "http://www.springframework.org/schema/beans http://www.spramework.org/schema/beans-3. http://www.springframework.org/schema/tx http://www.springframework.org/schema/context/spring-context-3.1.xsd http://www.springframework.org/schema/tx http://www.springframework.org/schema/tx/spring-tx.xsd http://www.springframework.org/schema/aop http://www.springframework.org/schema/aop http://www.springframework.org/schema/aop/spring-aop-3.1.xsd http://www.springframework.org/schema/task/spring-task-3.1.springframework.org/schema/task/spring-task-3.1. <AOP: AspectJ-autopProxy Proxy-Target-class = "true"/> <контекст: аннотация-config/> <!-сканирование всех классов в соответствии с com.lutongnet-> <Контекст: компонент-scan base-package = "com.lutong.cps"> <context: excude-filter type = "annation" = "org.splypramepramepramework. </context: component-scan> <import resource = "mongodb.xml"/> </beans>
5. Реализация кода
Основная реализация монгодбсперса
/** * Имя файла: mongodbservice.java * Пакет: com.lutongnet.ad.service * Описание: todo * Автор: zhangfj * Дата: 2012-11-29 * Версия: v1.0 *//package com.lutong.cps.schedule.service.fj; import org.spramework.cpplication. org.springframework.context.support.classpathxmlapplicationcontext; import org.springframework.data.mongodb.core.mongotemplate; импорт org.springframework.data.mongodb.core.query.query; org.springframework.serpice. zhangfj * */ @service ("mongodbservice") открытый класс mongodbservice {/ * @resource (name = "mongotemplate") защищенный mongotemplate mongotemplate; *//** * @param Query * @param EntityClass * @Return T */public <T> t FindOne (Query Query, class <t> entityclass). Classpathxmlapplication context ("mongodb.xml"); Mongotemplate mongotemplate = (mongotemplate) context.getbean ("mongotemplate"); // Вы можете напрямую вызовать return mongotemplate.findone (Query, EntityClass); }}Унаследование класса UserAdcountservice
/**! org.springframework.data.mongodb.core.query.query; import org.springframework.stepolype.service; import com.lutong.cps.schedule.entity.useradcount;/** * @author zhangfj */ @service ("useradcountservice") / ** * Получите количество просмотров одного объявления, и если оно не может быть запрошено, оно вернется 0 * * @param adcode * @return int * / public int getUserAdcount (userAdcount adcode) {критерии критериев = новые критерии (); Criteria.andoperator (Criteria.where ("userad"). Is (adcode.getUserad ()), критерии. где ("adcode"). IS (adcode.getAdcode ()), критерии. где ("coudeDate"). IS (adcode.getCountdate ())); Query Query = новый запрос (критерии); UserAdcount result = findone (Query, userAdcount.class); if (null! = result) {return result.getTimeCount (); } return 0; }}Entity Class UserAdCount
пакет com.lutong.cps.schedule.entity; import java.util.date; import org.springframework.data.annotation.persistenceconstructor; импорт org.springframework.data.mongodb.core.mapping.document;/** ** Mongo, посвященная статистическим данным по номеру obrice Ad -asaith raceauth raceauth raceauth raceauth raceauth raceauth raceauthor ** ** ** ** ** ** ** ** ** ** ** ** ** *** */@Document (collection = "userAdcount") открытый класс userAdCount {private int timescount; / *** Учетная запись пользователя*/ private String userad; Приватный строковый adcode; частные строки CountDate; Частная дата истекает; @persistenceConstructor public userAdCount (int timescount, String userAd, строковая adcode, string -countate, дата истекает) {this.TimesCount = TimesCount; this.userad = userad; this.adcode = adcode; this.countdate = countdate; this.expireat = истечение; } public userAdCount (String userAd, String AdCode, String CountAte) {this.userad = userAd; this.adcode = adcode; this.countdate = countdate; } public userAdCount (String userAd, String AdCode, String Countate, Date Expireat) {this.userad = userAd; this.adcode = adcode; this.countdate = countdate; this.expireat = истечение; } public userAdcount (string countate) {this.countdate = countdate; } public int getTimeCount () {return TimesCount; } public void cettiMescount (int timescount) {this.TimesCount = timesCount; } public String getUserad () {return userAd; } public void setUSERAD (String userAd) {this.userad = userAd; } public String getAdCode () {return adcode; } public void setAdcode (string adcode) {this.adcode = adcode; } public String getCountDate () {return CountDate; } public void setCountDate (string coundate) {this.countDate = countDate; } public date getExpiReat () {return ocireat; } public void setExpiReat (дата истекает) {this.expireat = expireat; }}Наконец, напишите тестовый класс, чтобы проверить его
Импорт java.util.list; import javax.annotation.resource; импорт org.junit.test; import org.junit.runner.runwith; импорт org.springframework.test.context.contextConfiguration; импорт org.spramework.test.context.junit4.springjunit4 com.acts.web.modules.mark.model.users; import com.lutong.cps.schedule.service.fj.useradcountservice; @ContextConfiguration ({"classPath: Spring-context.xml", "classPath: mongodb.xml"})@runwith (springjunits4class. @Resource (name = "userAdcountservice") private userAdcoundervice userAdcountservice; @Test public void testdao () {try {userAdCount userAdCount = new userAdCount ("hehaitao", "pos001", dateTime.now (). ToString ("yyyy-mm-dd")); int count = userAdcountservice .getUserAdcount (userAdCount); System.out.println (count); } catch (Exception e) {e.printstackTrace (); }}}Суммировать
Вышеуказанное - все содержание этой статьи. Я надеюсь, что содержание этой статьи имеет определенную справочную ценность для каждого обучения или работы. Если у вас есть какие -либо вопросы, вы можете оставить сообщение для общения. Спасибо за поддержку Wulin.com.