MongoRepository 是sPRing-data 里面針對MongoDB整合提供的一個簡化與數(shù)據(jù)庫交互,spring去除dao層的代碼編寫。spring-data包還提供了針對Hadoop、solr。當(dāng)然對應(yīng)的接口名字也是不同的。spring Data能自動創(chuàng)建實體dao的實現(xiàn)類和自定義查詢,不再需要我們自己去實現(xiàn)了。公司項目是一個大型分布式 互聯(lián)網(wǎng)接口服務(wù)。整改日志操作,轉(zhuǎn)移接口壓力。生產(chǎn)環(huán)境每天大概將近4-7G的日志文件。將日志不是重要性數(shù)據(jù)轉(zhuǎn)移到MongoDB,來分減壓力。在整合過程中發(fā)現(xiàn)了spring -data MongoRepository接口目錄結(jié)構(gòu)MonitorRepository 繼承MongoRepository接口org.springframework.data.mongodb.repository.MongoRepository<T, Serializable>public interface MonitorRepository extends MongoRepository<MonitorLog, String>{ }實體類MonitorLogpackage com.sinosoft.ebusiness.mongo.model;import java.util.Date;import org.springframework.data.annotation.Id;import org.springframework.data.mongodb.core.index.Indexed;import org.springframework.data.mongodb.core.mapping.Document;/** * POJO類MonitorLog */@Document()//public class MonitorLog implements java.io.Serializable { private static final long serialVersionUID = 1L; /** 屬性序列號(SerialNo) */ @Id private String serialNo; /** 屬性用戶名(UserName) */ private String userName; /** 屬性ip地址(IPADD) */ private String ipadd; /** 屬性日志時間(LogTime) */ private Date logTime; /** 屬性應(yīng)用系統(tǒng)(AppName) */ private String appName; /**屬性交易碼(TRANSRNO)*/ private String transrNo; /** 屬性日志描述(Content) */ private String content; /** 屬性備注(Remark) */ @Indexed private String remark; /** 日志級別*/ private String logGrade; public MonitorLog(String serialNo,String userName,String ipadd, Date logTime,String appName,String transNo,String content,String remark,String logGrade){ this.appName =appName; this.content = content; this.ipadd = ipadd; this.logGrade = logGrade; this.logTime = logTime; this.remark = remark; this.transrNo = transNo; this.userName = userName; } /** * 類Gemonitorbusinesslog的默認(rèn)構(gòu)造方法 */ public MonitorLog() { this.logTime = new Date(); } /** * 屬性序列號(SerialNo)的getter方法 */ public String getSerialNo() { return this.serialNo; } /** * 屬性序列號(SerialNo)的setter方法 */ public void setSerialNo(String serialNo) { this.serialNo = serialNo; } /** * 屬性用戶名(UserName)的getter方法 */ public String getUserName() { return this.userName; } /** * 屬性用戶名(UserName)的setter方法 */ public void setUserName(String userName) { this.userName = userName; } /** * 屬性IP地址(IPADD)的getter方法 */ public String getIpadd() { return this.ipadd; } /** * 屬性IP地址(IPADD)的setter方法 */ public void setIpadd(String ipadd) { this.ipadd = ipadd; } /** * 屬性日志時間(LogTime)的getter方法 */ public Date getLogTime() { return this.logTime; } /** * 屬性日志時間(LogTime)的setter方法 */ public void setLogTime(Date logTime) { this.logTime = logTime; } /** * 屬性應(yīng)用系統(tǒng)(AppName)的getter方法 */ public String getAppName() { return this.appName; } /** * 屬性應(yīng)用系統(tǒng)(AppName)的setter方法 */ public void setAppName(String appName) { this.appName = appName; } /** * 屬性交易碼(TRANSRNO)的getter方法 */ public String getTransrNo() { return transrNo; } /** * 屬性交易碼(TRANSRNO)的setter方法 */ public void setTransrNo(String transrNo) { this.transrNo = transrNo; } /** * 屬性日志描述(Content)的getter方法 */ public String getContent() { return this.content; } /** * 屬性日志描述(Content)的setter方法 */ public void setContent(String content) { this.content = content; } /** * 屬性備注(Remark)的getter方法 */ public String getRemark() { return this.remark; } /** * 屬性備注(Remark)的setter方法 */ public void setRemark(String remark) { this.remark = remark; } public String getLogGrade() { return logGrade; } public void setLogGrade(String logGrade) { this.logGrade = logGrade; } @Override public String toString() { return "MonitorBusinessLog [serialNo=" + serialNo + ", userName=" + userName + ", ipadd=" + ipadd + ", logTime=" + logTime + ", appName=" + appName + ", transrNo=" + transrNo + ", content=" + content + ", remark=" + remark + ", logGrade=" + logGrade + "]"; } }未定義實現(xiàn)類 只是定義了一下接口 測試用例package com.sinosoft.ebusiness.basic;import java.text.SimpleDateFormat;import java.util.ArrayList;import java.util.Date;import java.util.List;import org.springframework.context.ConfigurableapplicationContext;import org.springframework.context.support.FileSystemxmlApplicationContext;import org.springframework.data.domain.Page;import org.springframework.data.mongodb.core.MongoTemplate;import com.sinosoft.ebusiness.basic.model.MonitorBusinessLog;import com.sinosoft.ebusiness.mongo.basic.MonitorRepository;import com.sinosoft.ebusiness.mongo.model.MonitorLog;import com.sinosoft.ebusiness.mongo.service.face.MonitorBasicService;public class TestServer { public static void main(String[] args) { String[] configFiles = { "classpath*:spring/applicationContext-web.xml", "classpath*:spring/applicationContext-mongo.xml", "classpath*:spring/applicationContext-basic.xml", "classpath*:spring/applicationContext-jms.xml", "classpath*:spring/applicationContext-hibernate.xml" }; ConfigurableApplicationContext appContext; appContext = new FileSystemXmlApplicationContext(configFiles); final SimpleDateFormat sdFormat = new SimpleDateFormat("yyyy-MM-dd hh:mm:ss:SSS"); //MonitorBasicService ud = (MonitorBasicService) appContext.getBean("monitorBasicService"); MonitorRepository monitorRepository = (MonitorRepository) appContext.getBean("monitorRepository"); //MongoTemplate mongo = (MongoTemplate) appContext.getBean("mongoTemplate"); long s = System.currentTimeMillis(); System.err.println(monitorRepository.findAll().size()+"============monitorRepository.count()"); System.out.println("毫秒:"+(System.currentTimeMillis() - s)); }}單純利用spring-data MongoRepository 接口 實現(xiàn)文件的查找存儲具體實現(xiàn)類可以在百度一下。我這里只是做了一個簡單書寫記錄具體技術(shù)資料可以查看一下 spring-data技術(shù)文檔點擊打開鏈接
新聞熱點
疑難解答