序文
この記事の焦点は、MongoDBとスプリングをプロジェクトに統合し、実際の問題を発見し、問題を追跡し、問題を解決することです。以下ではあまり言いません。詳細な紹介を一緒に見てみましょう。
1。準備
2。特性
3。依存関係パッケージ
<Dependency> groupId> org.springframework.data </groupid> <artifactid> spring-data-mongodb </artifactid> <バージョン> 1.5.0.release </version> </depence> <dependency> <groupid> org.slf4j </groupid> slf4j-log4j12 </artifactid> slf4j-log4j12 </ <バージョン> 1.5.10 </version> </dependency>
スプリング関連の依存関係
<! - Spring Web関連の依存関係 - > <依存関係> groupId> org.springframework </groupid> <artifactid> spring-web </artifactid> <bersion> <version> <version> <version> <bersion> </dependency> <依存関係> <依存関係> <グループ<バージョン> 3.1.2.Release </version> </dependency> <! - 春のテスト依存関係 - > <依存関係> <groupid> org.springframework </groupid> <artifactid> spring-test </artifactid> <バージョン
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.autoconnectretr 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.springframework.org/schema/context http://www.springframework.org/schema/context/ http://www.springframework.org/schema/data/mongo/spring-mongo-1.0.xsd http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/bean <! - mongodbのプロパティ構成ファイルをロード - > <コンテキスト:プロパティプレイスホルダーlocation = "classodb.properties" agnore-unresolvable = "true"/> <! - mongodbの公式瓶パッケージのmongoに対応するmongoオブジェクトを定義します。 REPLICA-SETクラスターレプリカのIPアドレスとポートを設定 - > <Mongo:Mongo ID = "Mongo" Replica-set = "$ {mongo.hostport}"> <mongo:Options Connections-host = "$ {mongo.connectionSperhost}" Threads-lock-to-block-for-connection-multiplier = "$ {mongo.threadsallowedtoblockforconnectionmultiplier}" connect-timeout = "$ {mongo.connecttimeout}" max-wait-time = "$ {mongo.maxwaittime} Socket-Keep-Alive = "$ {Mongo.SocketKeepalive}" Socket-Timeout = "$ {Mongo.Sockettimeout}" Slave-OK = "$ {Mongo.slaveok} id = "mgfactory" dbname = "$ {mongo.dbname}" username = "$ {mongo.username}" password = "$ {mongo.password}" mongo-ref = "mongo" /> <bean id = "mongotemplate」 </bean> </bean>Spring-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.springframework xmlns:xsi = "http://www.w3.org/2001/xmlschema-instance" xsi:schemalocation = "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/ 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/schema/task http://www.springframework.org/schema/task/spring-task-3.1.xsd "> <aop:aspectj-autopproxy proxy-target-class =" true "/> <context:notation-config/> < base-package = "com.lutong.cps"> <context:explude-filter type = "annotation" expression = "org.springframework.controller"/> </context:component-scan> <import resource = "mongodb.xml"/> </beans>
5。コード実装
Mongodbserviceの基本的な実装
/** *ファイル名:mongodbservice.java *パッケージ:com.lutongnet.ad.service *説明:todo *著者:zhangfj *日付:2012-11-29 *バージョン:v1.0 */package com.lutong.cps.schedule.service.fj; springframework.context.support.classpathxmlapplicationcontext; Import org.springframework.data.mongodb.core.mongotemplate; Import org.springframework.data.mongodb.core.query.query; emmort org.springframeworks.service。 @author zhangfj * */ @service( "mongodbservice")パブリッククラスmongodbservice {/ * @resource(name = "mongotemplate")保護されたmongotemplate mongotemplate; ApplicationContext Context = new ClassPathXMLApplicationContext( "mongodb.xml"); mongotemplate mongotemplate =(mongotemplate)context.getbean( "mongotemplate"); // return mongotemplate.findone(query、entityclass)を直接呼び出すことができます。 }}クラスの継承useradcountservice
/** *ファイル名:useradcountservice.java *パッケージ:com.lutongnet.ad.service *説明:todo *著者:zhangfj *日付:2012-11-29 *バージョン:v1.0 */パッケージcom.lutong.cps.schedule.service.fj; org.springframework.data.mongodb.core.query.query; Import org.springframework.stereotype.service; Import com.lutong.cps.schedule.entity.useradcount; mongodbservice { / ** *単一の広告のビューの数を取得し、照会できない場合、0 * * @param adcode * @return int * / public int getuseradcount(useradcount adcode){criteria criteria = new Criteria(); Criteria.Andoperator(criteria.where( "userad")。クエリquery = new query(criteria); useradcount result = findone(query、useradcount.class); if(null!= result){return result.getTimesCount(); } return 0; }}エンティティクラスuseradcount
パッケージcom.lutong.cps.schedule.entity; import java.util.date; import org.springframework.data.annotation.persistenceconstructor; import org.springframework.data.mongodb.core.mapping.document; */@document(collection = "useradcount")public class useradcount {private int timescount; / ***ユーザーアカウント*/ private string userad;プライベート文字列ADCODE;プライベート文字列countDate; private date expireat; @persistenceconstructor public useradcount(int timescount、string userad、string adcode、string countdate、date expireat){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 expireat){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 sittimesCount(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 expireat; } public void setExpireat(date expireat){this.expireat = expireat; }}最後に、テストクラスをテストします
java.util.list; Import javax.annotation.resource; import org.junit.test; import org.junit.runner.runwith; import org.springframework.test.context.contextconfiguration; import org.springframework.test.context.context.context.context.context.context.context.context.context.context.context.context.context.contex com.acts.web.modules.mark.model.users;インポートcom.lutong.cps.schedule.service.fj.useradcountservice; @contextconfiguration({"classpath:spring-context.xml"、 "classpath:mongodb.xml"}) {@resource(name = "useradcountservice")private useradcountservice 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へのご支援ありがとうございます。