zoukankan      html  css  js  c++  java
  • SpringMVC整合Mongodb开发 架构搭建

    系统环境:

    操作系统:  windows xp

    数 据 库:  mongodb2.0.6

    驱 动 包: Spring3.1.2 + mongodb2.7.3 + spring-data-mongodb1.0.1

    说明对于xp系统用户,在执行mongod.exe安装mongodb时 出现,无法定位程序输入点 InterlockedCompareExchange64 于动态链接库KERNEL32.dll,这是因为最新的开发分支已经不再支持xp.也就是说你的mongodb安装包不支持xp系统.V2.0.6是最新也是最后一个新版本支持xp.所以笔者使用数据库为2.0.6

    项目结构:



    配置说明:
    Web.xml文件配置spring相关与springmvc相关.

    <?xml version="1.0" encoding="UTF-8"?>
    <web-app version="2.5" 
        xmlns="http://java.sun.com/xml/ns/javaee" 
        xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
        xsi:schemaLocation="http://java.sun.com/xml/ns/javaee 
        http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd">
        
          <!-- spring配置 -->
        <context-param>
            <param-name>contextConfigLocation</param-name>
            <param-value>/WEB-INF/context/spring-context.xml</param-value>
        </context-param>
    
        <listener>
            <listener-class>org.springframework.web.context.ContextLoaderListener</listener-class>
        </listener>
    
        <!-- spring MVC配置 -->
        <servlet>  
            <servlet-name>springmvc</servlet-name>  
            <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class> 
            <init-param>
                <param-name>contextConfigLocation</param-name>               
                <param-value>/WEB-INF/context/servlet-context.xml</param-value>  <!--指定XML文件位置-->
            </init-param> 
            <load-on-startup>4</load-on-startup>
              
        </servlet>  
        <servlet-mapping>  
            <servlet-name>springmvc</servlet-name>  
            <url-pattern>/</url-pattern>  
        </servlet-mapping>
        
      <welcome-file-list>
        <welcome-file>index.jsp</welcome-file>
      </welcome-file-list>
    </web-app>

     Springmvc的配置文件servlet-context.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:util="http://www.springframework.org/schema/util"
        xmlns:p="http://www.springframework.org/schema/p"
        xmlns:aop="http://www.springframework.org/schema/aop"
        xmlns:tx="http://www.springframework.org/schema/tx"
        xmlns:mvc="http://www.springframework.org/schema/mvc"
        xmlns:context="http://www.springframework.org/schema/context"
        xsi:schemaLocation="
        http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-3.1.xsd
        http://www.springframework.org/schema/util http://www.springframework.org/schema/util/spring-util-3.1.xsd
        http://www.springframework.org/schema/tx http://www.springframework.org/schema/tx/spring-tx-3.1.xsd
        http://www.springframework.org/schema/aop http://www.springframework.org/schema/aop/spring-aop-3.1.xsd
        http://www.springframework.org/schema/mvc http://www.springframework.org/schema/mvc/spring-mvc-3.1.xsd
        http://www.springframework.org/schema/context 
        http://www.springframework.org/schema/context/spring-context-3.1.xsd">
    
        <!-- DispatcherServlet Context: defines this servlet's request-processing infrastructure -->
        
        <!-- Enables the Spring MVC @Controller programming model -->
        <mvc:annotation-driven />
    
        <context:component-scan base-package="com.pudp" />
        
        
        <!-- 配置基于Session的处理,将提交上来的locale参数进行处理 -->  
        <bean id="localeResolver" class="org.springframework.web.servlet.i18n.SessionLocaleResolver">
            <!-- 该属性可以不用配置 -->
            <property name="defaultLocale" value="ja"></property>
        </bean>  
        
        <!-- Resolves views selected for rendering by @Controllers to .jsp resources in the /WEB-INF/views directory -->
        <bean class="org.springframework.web.servlet.view.InternalResourceViewResolver">
            <property name="prefix" value="/WEB-INF/views/" />
            <property name="suffix" value=".jsp" />
        </bean>
        
        
    </beans>

    spring配置文件Spring-context.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:util="http://www.springframework.org/schema/util"
        xmlns:p="http://www.springframework.org/schema/p"
        xmlns:aop="http://www.springframework.org/schema/aop"
        xmlns:tx="http://www.springframework.org/schema/tx"
        xmlns:context="http://www.springframework.org/schema/context"
        xsi:schemaLocation="
        http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-3.1.xsd
        http://www.springframework.org/schema/util http://www.springframework.org/schema/util/spring-util-3.1.xsd
        http://www.springframework.org/schema/tx http://www.springframework.org/schema/tx/spring-tx-3.1.xsd
        http://www.springframework.org/schema/aop http://www.springframework.org/schema/aop/spring-aop-3.1.xsd
        http://www.springframework.org/schema/context 
        http://www.springframework.org/schema/context/spring-context-3.1.xsd">
        
       
       <context:annotation-config />
       <context:component-scan base-package="com.pudp" />    
       
       <!-- 导入mongodb的配置文件 -->
       <import resource="mongodb-context.xml"/>
           
    </beans>

    mongodb的配置文件mongodb-context.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/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">  
              
        <!-- 加载mongodb的属性配置文件 -->
        <context:property-placeholder location="classpath:mongodb.properties" />
        
        <!-- 定义mongo对象,对应的是mongodb官方jar包中的Mongo,replica-set设置集群副本的ip地址和端口 -->
        <mongo:mongo id="mongo" replica-set="${mongo.hostport}">
            <!-- 一些连接属性的设置 -->    
            <mongo:options
                 connections-per-host="${mongo.connectionsPerHost}"
                 threads-allowed-to-block-for-connection-multiplier="${mongo.threadsAllowedToBlockForConnectionMultiplier}"
                 connect-timeout="${mongo.connectTimeout}"
                 max-wait-time="${mongo.maxWaitTime}"
                 auto-connect-retry="${mongo.autoConnectRetry}"
                 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 dbname="database" mongo-ref="mongo" />
        
        <bean id="mongoTemplate" class="org.springframework.data.mongodb.core.MongoTemplate">
            <constructor-arg ref="mongo" />
            <constructor-arg name="databaseName" value="db_mongo" />
        </bean>
    
    </beans>

    mongodb的属性配置文件mongodb.properties

    mongo.hostport=127.0.0.1:27017
    mongo.connectionsPerHost=8
    mongo.threadsAllowedToBlockForConnectionMultiplier=4
    #连接超时时间
    mongo.connectTimeout=1000
    #等待时间
    mongo.maxWaitTime=1500
    mongo.autoConnectRetry=true
    mongo.socketKeepAlive=true
    #Socket超时时间
    mongo.socketTimeout=1500
    mongo.slaveOk=true

    编写ControllerServiceDao相关.这里我们测试以下Spring-data-mong中对Collection的实现机制我们创建不同的实体类型MemberArticle

    然后编写对应的ServiceDao实现.这里我们侧重点持久层实现


    持久层的操作实现

    ArticleDao

    package com.pudp.dao;
    
    import org.springframework.stereotype.Repository;
    
    import com.pudp.base.MongoGenDao;
    import com.pudp.model.Article;
    
    /**
     * description:
     *
     * @author <a href='mailto:dennisit@163.com'> Cn.苏若年 (En.dennisit)</a> Copy Right since 2013-10-16 
     *
     * com.pudp.dao.ArticleDao.java
     *
     */
    
    @Repository
    public class ArticleDao extends MongoGenDao<Article>{
        
        /**
         * 实现钩子方法,返回反射的类型
         * @author <a href='mailto:dennisit@163.com'>Cn.苏若年(En.dennisit)</a> Copy Right since 2013-10-13 
         *                
         * @return
         */
        @Override
        protected Class<Article> getEntityClass() {
            return Article.class;
        }
    
    }

    MemberDao

    package com.pudp.dao;
    
    import org.springframework.stereotype.Repository;
    
    import com.pudp.base.MongoGenDao;
    import com.pudp.model.Member;
    
    /**
     * description:
     *
     * @author <a href='mailto:dennisit@163.com'> Cn.苏若年 (En.dennisit)</a> Copy Right since 2013-10-13 
     *
     * com.pudp.dao.MemberDao.java
     *
     */
    @Repository
    public class MemberDao extends MongoGenDao<Member>{
    
        /**
         * 实现钩子方法,返回反射的类型
         * @author <a href='mailto:dennisit@163.com'>Cn.苏若年(En.dennisit)</a> Copy Right since 2013-10-13 
         *                
         * @return
         */
        @Override
        protected Class<Member> getEntityClass() {
            return Member.class;
        }
    }

    MongoGenDao中我们实现了对库中添加数据

    package com.pudp.base;
    
    import org.springframework.beans.factory.annotation.Autowired;
    import org.springframework.data.mongodb.core.MongoTemplate;
    
    /**
     * description:
     *
     * @author <a href='mailto:dennisit@163.com'> Cn.苏若年 (En.dennisit)</a> Copy Right since 2013-10-13 
     *
     * com.pudp.base.MongoGenDao.java
     *
     */
    
    public abstract class MongoGenDao<T> {
    
        @Autowired
        protected MongoTemplate mongoTemplate;
    
        
        /**
         * 保存一个对象
         *
         * @author <a href='mailto:dennisit@163.com'>Cn.苏若年(En.dennisit)</a> Copy Right since 2013-10-13 下午03:37:28
         *                
         * @param t
         * @return
         */
        public void save(T t){
            this.mongoTemplate.save(t);
        }    
        
        /**
         * 为属性自动注入bean服务
         *
         * @author <a href='mailto:dennisit@163.com'>Cn.pudp(En.dennisit)</a> Copy Right since 2013-10-13 下午03:21:23
         *                
         * @param mongoTemplate
         */
        public void setMongoTemplate(MongoTemplate mongoTemplate) {
            this.mongoTemplate = mongoTemplate;
        }
        
    }

    这里需要说明的是MongoTemplate对库的管理。

    MongoTemplate对库Collection的管理



    我们使用MongoTemplate操作持久层.这里如果我们没有指定CollectionName的话,会依实体类型的类名作为库中的集合名,当我们执行数据入库操作之后,从数据库中查看到如下信息.

    当然,如果我们想自己定义数据库的Collection名的化,可以在持久层Dao中指定关于Mongodb的可以Mongodb相关的内容后续将介绍SpringMVC+ Mongodb CRUD + 分页实现.

    转载请注明出处:[http://www.cnblogs.com/dennisit/p/3372568.html]

     

    ÔÚÏß½»Ì¸

  • 相关阅读:
    Azure HPC Pack Cluster添加辅助节点
    Azure HPC Pack 辅助节点模板配置
    Azure HPC Pack配置管理系列(PART6)
    Windows HPC Pack 2012 R2配置
    Azure HPC Pack 节点提升成域控制器
    Azure HPC Pack VM 节点创建和配置
    Azure HPC Pack 部署必要条件准备
    Azure HPC Pack 基础拓扑概述
    Azure VM 性能计数器配置
    Maven私仓配置
  • 原文地址:https://www.cnblogs.com/dennisit/p/3372568.html
Copyright © 2011-2022 走看看