设为首页 收藏本站
查看: 981|回复: 0

[经验分享] spring-db-mongo配置

[复制链接]

尚未签到

发表于 2016-12-2 07:31:41 | 显示全部楼层 |阅读模式
  搭建一个基于spring的mongodb处理框架,涉及到主要的类及文件有:


  • UserPopup实体类
  • UserPopupReadConverter、UserPopupWriteConverter 转换类
  • spring-mongo-config.xml 容器
  • mongo.properties 数据库配置文件
  说明:
  1、UserPopup实体类

package com.gemantic.analyse.mongodb.model;
import java.io.Serializable;

@Document(collection="userPopup")
public class UserPopup implements Serializable {
/**
*
*/
private static final long serialVersionUID = 5660357837306426368L;
public UserPopup(){
}
public UserPopup(String userCode,Long popupId,Long publishAt,Long orgType,Long createAt,Long updateAt){
this.userCode = userCode;
this.popupId = popupId;
this.publishAt = publishAt;
this.orgType = orgType;
this.createAt = createAt;
this.updateAt = updateAt;
}
public UserPopup(ObjectId id,String userCode,Long popupId,Long publishAt,Long orgType,Long createAt,Long updateAt){
this.id = id;
this.userCode = userCode;
this.popupId = popupId;
this.publishAt = publishAt;
this.orgType = orgType;
this.createAt = createAt;
this.updateAt = updateAt;
}
@Id
private ObjectId id;
/**
* 客户端登陆用户名
*
* 如果是系统公共信息设置为system,否则设置为登陆帐号
*/
@Field
private String userCode;
/**
* meeting.popup表主键
*/
@Field
private Long popupId;
/**
* 发布时间
*/
@Field
private Long publishAt;
/**
* 终端类型
*
* 0-新华08机构版,1-CCTV证券频道
*/
@Field
private Long orgType;
@Field
private Long createAt;
@Field
private Long updateAt;
public ObjectId getId() {
return id;
}
public void setId(ObjectId id) {
this.id = id;
}
public String getUserCode() {
return userCode;
}
public void setUserCode(String userCode) {
this.userCode = userCode;
}
public Long getPopupId() {
return popupId;
}
public void setPopupId(Long popupId) {
this.popupId = popupId;
}
public Long getPublishAt() {
return publishAt;
}
public void setPublishAt(Long publishAt) {
this.publishAt = publishAt;
}
public Long getOrgType() {
return orgType;
}
public void setOrgType(Long orgType) {
this.orgType = orgType;
}
public Long getCreateAt() {
return createAt;
}
public void setCreateAt(Long createAt) {
this.createAt = createAt;
}
public Long getUpdateAt() {
return updateAt;
}
public void setUpdateAt(Long updateAt) {
this.updateAt = updateAt;
}
public String toString() {
return ToStringBuilder.reflectionToString(this, ToStringStyle.MULTI_LINE_STYLE);
}
}



  •  关注注解的含义
  • 数据类型:String、Long,针对数据库中的字符和数值
  2、UserPopupReadConverter、UserPopupWriteConverter 
  目的是为了在java object到db中collection中的字段名称进行转换工作。

/**
package com.gemantic.analyse.mongodb.model.converter;
import org.bson.types.ObjectId;
/**
* @author wangkq
*
*/
public class UserPopupReadConverter implements Converter<DBObject, UserPopup> {
public UserPopup convert(DBObject source) {
UserPopup userPopup = new UserPopup((ObjectId) source.get("_id"),
(String) source.get("user_code"),
(Long) source.get("popup_id"),
(Long) source.get("publish_at"),
(Long) source.get("org_type"),
(Long) source.get("create_at"),
(Long) source.get("update_at"));
return userPopup;
}
}


/**
package com.gemantic.analyse.mongodb.model.converter;
import org.springframework.core.convert.converter.Converter;
/**
* @author wangkq
*
*/
public class UserPopupWriteConverter implements Converter<UserPopup, DBObject> {
public DBObject convert(UserPopup source) {
DBObject dbo = new BasicDBObject();
dbo.put("user_code", source.getUserCode());
dbo.put("popup_id", source.getPopupId());
dbo.put("publish_at",source.getPublishAt());
dbo.put("org_type", source.getOrgType());
dbo.put("create_at", source.getCreateAt());
dbo.put("update_at", source.getUpdateAt());
return dbo;
}
}

  3、spring-mongo-config.xml 容器

<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/spring-context-3.0.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/spring-beans-3.0.xsd">
<context:component-scan base-package="com.gemantic.analyse.mongodb" />
<context:property-placeholder
location="classpath*:META-INF/mongodb/mongo.properties" />
<!--定义一个工厂,并在其中初始化服务器地址、端口号、数据库名称等信息-->
<mongo:db-factory id="mongoDbFactory"
host="${mongo.host}"
port="${mongo.port}"
dbname="${mongo.dbname}"/>
<!-- by default look for a Mongo object named 'mongo' - default name used for the converter is 'mappingConverter' -->
<!-- 关于Converter的配置 -->
<mongo:mapping-converter>
<mongo:custom-converters>
<!--定义从数据库中读记录过程中的converter处理类-->
<mongo:converter ref="readConverter" />
<mongo:converter>
<!--定义应用写入数据库过程中的converter处理类-->
<bean class="com.gemantic.analyse.mongodb.model.converter.UserPopupWriteConverter" />
</mongo:converter>
</mongo:custom-converters>
</mongo:mapping-converter>
<bean id="readConverter"
class="com.gemantic.analyse.mongodb.model.converter.UserPopupReadConverter" />
<!--定义模板,并实例化其中的成员变量-->
<bean id="mongoTemplate" class="org.springframework.data.mongodb.core.MongoTemplate">
<constructor-arg name="mongoDbFactory" ref="mongoDbFactory" />
<constructor-arg name="mongoConverter" ref="mappingConverter" />
</bean>
<!--定义一个业务manager,并实例化其中mongoTemplate成员变量。业务以后要操作数据库,则都从mongoManager这个实例进行处理-->
<bean id="mongoManager" class="com.gemantic.analyse.mongodb.util.MongoManager">
<property name="mongoTemplate">
<ref bean="mongoTemplate"/>
</property>
</bean>
</beans>
  4、mongo.properties 数据库配置文件

mongo.host=127.0.0.1
mongo.port=27017
mongo.dbname=wkqDB
mongo.username=root
mongo.password=root
mongo.connectionPperHost=10
mongo.threadsAllowedToBlockForConnectionMultiplier=4
mongo.connectTimeout=5000
mongo.maxWaitTime=5000
mongo.autoConnectRetry=true
mongo.socketKeepAlive=true
mongo.socketTimeout=500000
mongo.slaveOk=true
mongo.writeNumber=10
mongo.writeTimeout=0
mongo.writeFsync=true
mongo.connections=22
mongo.connectionThreads=22
mongo.connectionsPerHost=10
mongo.threadsMultiplier=4
  这里面的配置信息比较全面,涉及到单机、集群、时间等配置,以后慢慢研究。

运维网声明 1、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
2、本站所有主题由该帖子作者发表,该帖子作者与运维网享有帖子相关版权
3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com

所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其承担任何法律责任,如涉及侵犯版权等问题,请您及时通知我们,我们将立即处理,联系人Email:kefu@iyunv.com,QQ:1061981298 本贴地址:https://www.yunweiku.com/thread-308331-1-1.html 上篇帖子: Mongo读写分离 下篇帖子: mongo实践-通过js shell操作mongo
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

扫码加入运维网微信交流群X

扫码加入运维网微信交流群

扫描二维码加入运维网微信交流群,最新一手资源尽在官方微信交流群!快快加入我们吧...

扫描微信二维码查看详情

客服E-mail:kefu@iyunv.com 客服QQ:1061981298


QQ群⑦:运维网交流群⑦ QQ群⑧:运维网交流群⑧ k8s群:运维网kubernetes交流群


提醒:禁止发布任何违反国家法律、法规的言论与图片等内容;本站内容均来自个人观点与网络等信息,非本站认同之观点.


本站大部分资源是网友从网上搜集分享而来,其版权均归原作者及其网站所有,我们尊重他人的合法权益,如有内容侵犯您的合法权益,请及时与我们联系进行核实删除!



合作伙伴: 青云cloud

快速回复 返回顶部 返回列表