머리말
이 기사의 초점은 MongoDB와 Spring을 프로젝트에 통합하고 실제로 문제를 발견하고 문제를 추적 한 다음 문제를 해결하는 것입니다. 아래에서 많이 말하지 않겠습니다. 자세한 소개를 함께 살펴 보겠습니다.
1. 준비
2. 특성
3. 종속성 패키지
<pectionency> <groupid> org.springframework.data </groupid> <artifactid> Spring-Data-Mongodb </artifactid> <bersion> 1.5.0.release </version> </fectionency> <groupid> org.slf4j </groupid> <artifactid> slf4j-log4j12 </artifactid> <버전> 1.5.10 </버전> </의존성>
봄 관련 종속성
<!-스프링 웹 관련 종속성-> <pectionency> <groupId> org.springframework </groupid> <artifactid> spring-web </artifactid> <bersion> $ {spring.version} </version> </fexendency> <groupId> org.springframed> <artifactid> spring-webmvcit> <버전> 3.1.2. release </version> </dependency> <!-스프링 테스트 종속성-> <pectionement> <groupid> org.springframework </groupid> <artifactid> 스프링 테스트 </artifactid> <버전> 4.3.1.Release </version> </dependency>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.autoconnectret y = truemongo.socketkeepalive = true#socket/u8d85/u65f6/u65f6/u95f4mongo.sockettimeout = 1500mongo.slaveok = true
mongodb.xml
<? xml 버전 = "1.0"alcoding = "utf-8"?> <beans xmlns = "http://www.springframework.org/schema/beans"xmlns : xsi = "http://ww.w.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://wwwww.sprampromegt. http://www.springframework.org/schema/context/spring-context-3.1.xsd http://www.springframework.org/schema/data/mongo http://www.springframework.org http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-3.1.xsd "> <!-mongodb의 속성 부동산 파일을로드합니다. 무시-불가능 = "true"/> <!-몽고의 공식 항아리 패키지에서 몽고에 해당하는 몽고 물체를 정의하십시오. 복제 세트 클러스터 복제본의 IP 주소와 포트를 설정합니다-> <mongo : mongo id = "mongo"replica-set = "$ {mongo.hostport}"> <mongo : 옵션 connection-per-host = "$ {mongo.connectionsperhost}" Threads-allowed-block-for-connection-multiplier = "$ {mongo.threadsallowedToBlockforConnectionMultiplier}"connect-timeout = "$ {mongo.connecttimeout}"max-wait-time = "$ {mongo.maxwaittime}"Auto-Connect-Retrety = "$ {mongo. 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> id = "mgfactory"dbname = "$ {mongo.dbname}"username = "$ {mongo.username}"password = "$ {mongo.password}"mongo-ref = "mongo" /<bean id = "mongoTemplate "> <constructor-arg name ="mongbfactory "rep ="mongbtory "ref"ref "> </bean> </beans>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.springfrfringwork.org/schema/task. xmlns : xsi = "http://www.w3.org/2001/xmlschema-instance"xsi : schemalocation = "http://www.springframework.org/schema/beans http://www.springframework.org/schema/schema/schema/schema/schema/schema 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 http://www.spramework.org/schema/task/spring-task-3.1.xsd " 프록시-타겟 클래스 = "true"/> <context : Annotation-Config/> <!-com.lutongnet-> <context : component-scan base-package = "com.lutong.cps"> <context : filder type = "annotation"표현 = "org.springframework.stereType.steretype.concon.concontroller. <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.sergice.fj; import org.springframework.context.applicationconcontext. org.springframework.context.support.classpathxmlapplicationcontext; import org.springframework.data.mongodb.core.mongotemplate; import org.springframework.data.mongodb.core.query.query; import org.springframework.stereotyp.service.service.service zhangfj */ @service ( "mongodbservice") 공개 클래스 mongodbservice {/ * @resource (name = "mongotemplate") 보호 된 mongotemplate mongotemplate; *//** * @param query * @param entityclass * @rereturn t */public <t> t findone (query query, class <t> enterclass). 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 */package com.lutong.cps.schedule.service.fj; import org.springframework.data.mongodb.core.core.core.core.core. org.springframework.data.mongodb.core.query.query; import org.springframework.stereotype.service; import com.lutong.cps.schedule.entity.useradcount;/** * @author zhangfj */ @service (userAdcountservice ") mmortendcountedcountedcountedcountedconcountedcountedcongervice extendcondcondcondcondcondcondcondcondcondcondcountedcondcondcondcondcounted classe. / ** * 단일 광고의보기 수를 얻고 쿼리 할 수없는 경우 0 * * @param adcode * @return int * / public int getUserAdCount (userAdCount adcode) {criteria criteria = new critire (); Criteria.andoPerator (Criteria.where ( "userAd"). is (adcode.getUserad ()), criteria.where ( "adcode"). is (adcode.getAdcode ()), criteria.where ( "countDate"). is (adcode.getCountDate ()); 쿼리 쿼리 = 새 쿼리 (기준); userAdCount result = findOne (query, userAdCount.class); if (null! = result) {return result.getTimesCount (); } 반환 0; }}엔티티 클래스 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;/*** kingo singtor statistics a ingiveration adountor Statistics of a the Singer Conge*. */@document (collection = "userAdCount") public class userAdCount {private int timescount; / *** 사용자 계정*/ 개인 문자열 userad; 개인 문자열 애드 코드; 개인 문자열 카운트 데이트; 개인 날짜 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 (문자열 userad, 문자열 adcode, 문자열 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 settimesCount (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; } 공개 날짜 getExpireat () {return expireat; } public void setExpireat (날짜 촉진) {this.expireat = expireat; }}마지막으로 테스트 클래스를 작성하여 테스트하십시오
import 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.junitc.sprringjunit4 수입 com.acts.web.modules.mark.model.users; import com.lutong.cps.schedule.service.fj.useradcountservice; @contextconfiguration ({ "classpath : spring-context.xml", "classpath : mongodb.xml"})@Runit4classrastests {@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 (예외 e) {e.printstacktrace (); }}}요약
위는이 기사의 전체 내용입니다. 이 기사의 내용에 모든 사람의 연구 나 작업에 대한 특정 참조 가치가 있기를 바랍니다. 궁금한 점이 있으면 의사 소통을 위해 메시지를 남길 수 있습니다. Wulin.com을 지원 해주셔서 감사합니다.