Préface
L'objectif de cet article est d'intégrer MongoDB et de monter dans le projet, de découvrir des problèmes dans la pratique, de suivre les problèmes, puis de résoudre des problèmes. Je ne dirai pas beaucoup ci-dessous, jetons un coup d'œil à l'introduction détaillée ensemble.
1. Préparation
2. Caractéristiques
3. Package de dépendance
<dependency> <proupId> org.springframework.data </proupId> <ArtifActid> printemps-data-MongoDB </ Artifactive> <Dersion> 1.5.0.release </-version> </ Dependency> <Dedency> <ProupID> org.slf4j </proupid> <ArtifActid> slf4j-Log4j12 </proufactID> <version> 1.5.10 </ version> </Dependance>
Dépendances liées au printemps
<! - Dépendances liées au Web Spring -> <dependency> <proupId> org.springframework </proupId> <Artifactid> printemps-web </ artifactId> <DERVERSE> $ {printemps.version} </ version> </dependency> <pedidency> <proupId> org.springframe </proupId> <ArtifActid> Spring-webmvc </ artifact> <version> 3.1.2.Release </ version> </ Dependency> <! - Test de printemps dépendances -> <dependency> <proupId> org.springframework </rom groupeId> <ArtifActid> printemps-test </ artifactid> <version> 4.3.1.release </DERNIERS> </Dependance>4. Intégrer MongoDB
[Remarque: veuillez vous référer à mon article sur l'ajout de gestion de l'autorisation dans MongoDB: Activer l'authentification de l'autorisation dans 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.AutoconnectRetTrectRet y = trueMongo.socketkekeve = 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.springfrraworks.ormowing =" http://www.springframe 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.springframework.org/schema/Beans/wwwreans-3. <! - Chargez le fichier de configuration des propriétés de MongoDB -> <Context: propriété-placeholder location = "classpath: mongodb.properties" ignore-unrsolvable = "true" /> <! - Définissez l'objet Mongo, correspondant au Mongo dans le paquet JAR officiel de MongoDB. Réplique-set Définissez l'adresse IP et le port de la réplique du cluster -> <Mongo: Mongo id = "Mongo" réplique-set = "$ {Mongo.hostport}"> <Mongo: Options Connections-per-Host = "$ {Mongo.ConnectionsPerHost}" Threads-Allowed-to-block-for-connection-Multiplier = "$ {Mongo.ThreadsallowedOblockForConnectionMultiplier}" Connect-Timeout = "$ {Mongo.ConnectTimeout}" Max-wait-time = " socket-keep-alive = "$ {Mongo.socketkeepalive}" socket-timeout = "$ {Mongo.Sockettimeout}" Slave-ok = "$ {Mongo.Slaveok}" Write-Number = "1" Write-Timeout = "0" Write-Fsync = "True" /> </ Mongo: Mongo> <Mongo: db-factory id = "mgfactory" dbname = "$ {Mongo.dbname}" username = "$ {Mongo.Username}" password = "$ {Mongo.Password}" Mongo-ref = "Mongo" /> <bean id = "Mongotemplate"> <constructeur-arg Name = "MongoDBFACTORY" REF = "MGFACTY </bEAN> </EANS>printemps-contrac.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.springframeworkwork.org/schema" xmlns: xsi = "http://www.w3.org/2001/xmlschema-instance" xsi: scheMalation = "http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-3.1.xsd http://www.springframework.org/schema/tx http://www.springframework.org/schema/context/spring-context-3.1.xsddd http://www.springframework.org/schema/tx http://www.springframework.org/schema/tx/spring-tx.xsd http://www.springframework.org/schema/aop http://www.springfrrawouma/aop http://www.springfrrame http://www.springframework.org/schema/aop/spring-aop-3.1.xsd http://www.springframework.org/schema/task http://www.springframework.org/schema/task/spring-task-3.1.xsd " <aop: aspectj-autopproxy proxy-target-class = "true" /> <context: annotation-config /> <! - scann toutes les classes sous com.lutongnet -> <contexte: composant-san basage-package = "com.lutong.cps"> <contexte: exclure-filter type = "annotation" expression = "org.springframework.stereType.Controller" /> </ context: Component-Scan> <Importer Resource = "MongoDB.xml" /> </ Beans>
5. Implémentation du code
Implémentation de base de MongoDBService
/ ** * Nom de fichier: MongodbService.java * Package: com.lutongnet.ad.service * Description: Todo * Auteur: Zhangfj * Date: 2012-11-29 * Version: v1.0 * / package com.lutong.cps.schedule.service.fj; import org.springframework org.springframework.context.support.classpathxmlapplicationContext; import org.springframework.data.mongodb.core.mongotemplate; import org.springframework.data.mongodb.core.query.query; import org.springframework. zhangfj * * / @ service ("mongodbservice") classe publique mongodbsservice {/ * @ ressource (name = "mongotemplate") protégée mongotemplate mongotemplate; * / / ** * @param query * @param entityclass * @return t * / public <T> t FindOne (query Query, Class <T> entité) {application) ClassPathxMlApplicationContext ("MongoDB.xml"); Mongotemplate Mongotemplate = (Mongotemplate) context.getBean ("Mongotemplate"); // Vous pouvez appeler directement Return Mongotemplate.FindOne (Query, EntityClass); }}Héritage de classe UserAdCountService
/ ** * Nom du fichier: userAdcountService.java * Package: com.lutongnet.ad.service * Description: Todo * Auteur: Zhangfj * Date: 2012-11-29 * Version: v1.0 * / package Com.lutong.cps.schedule.service.fj; import org.springframeworks org.springframework.data.mongodb.core.query.query; import org.springframework.sterreotype.service; import com.lutong.cps.schedule.entity.useradcount; / ** * @author zhangfj * * / @ service ("useradCountService") MongoDBService {/ ** * Obtenez le nombre de vues d'une seule annonce, et s'il ne peut pas être interrogé, il renverra 0 * * @param adcode * @return int * / public int getUserAdCount (userAdCount Adcode) {critères critères = nouveaux critères (); critères.andoperator (critères.where ("userAd"). IS (adcode.getUserAd ()), critères.where ("adcode"). IS (adcode.getAdcode ()), critères.where ("countdate"). est (adcode.getCountDate ())); Requête de requête = nouvelle requête (critères); UserAdCount result = findOne (query, userAdCount.class); if (null! = result) {return result.getTimesCount (); } return 0; }}Entity Class UserAdCount
package com.lutong.cps.schedule.entity; import java.util.date; import org.springframework.data.annotation.persistenceconstructor; import org.springframework.data.mongodb.core.mapping.Document; / ** * statistiques dédiées de Mongo * / @ Document (collection = "userAdCount") classe publique UserAdCount {private int timesCount; / ** * Compte utilisateur * / String privé UserAd; chaîne privée adcode; String Private CountDate; Date privée Expiration; @persistenceConstructor public userAdCount (int timesCount, string userAd, String adcode, String countDate, date exireat) {this.timesCount = TimesCount; this.UserAd = userAd; this.adcode = adcode; this.CountDate = countDate; this.expireat = expireat; } public userAdCount (String userAd, String Adcode, String countDate) {this.UserAd = userAd; this.adcode = adcode; this.CountDate = countDate; } public userAdCount (String UserAd, String Adcode, String CountDate, Date Exireat) {this.userAd = userAd; this.adcode = adcode; this.CountDate = countDate; this.expireat = expireat; } public userAdCount (String countDate) {this.CountDate = countDate; } public int getTimesCount () {return TimesCount; } public void SetttimesCount (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 countDate) {this.countDate = countDate; } public date getExpireat () {return exireat; } public void setExpireat (date exireat) {this.expireat = exireat; }}Enfin, écrivez une classe de test pour le tester
import java.util.list; import javax.annotation.resource; import org.junit.test; import org.junit.runner.runwith; import org.springframework.test.context.contextConfiguration com.acts.web.modules.mark.model.users; import com.lutong.cps.schedule.service.fj.useradCountService; @contextconfiguration ({"classpath: printemps-context.xml", "ClassPath: Mongodb.xml"}) @ runwith {@Resource (name = "userAdCountService") UserAdCountService privé 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 (); }}}Résumer
Ce qui précède est l'intégralité du contenu de cet article. J'espère que le contenu de cet article a une certaine valeur de référence pour l'étude ou le travail de chacun. Si vous avez des questions, vous pouvez laisser un message pour communiquer. Merci pour votre soutien à wulin.com.