• SpringMVC整合MongoDB开发 架构搭建


    系统环境:

    操作系统:  windows 7

    数 据 库:  mongodb2.0.6

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

    项目结构:

    配置说明:
    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;
    
    
    @Repository
    public class ArticleDao extends MongoGenDao<Article>{
        
        /**
         * 实现钩子方法,返回反射的类型
         *                
         * @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:
     *
     * com.pudp.dao.MemberDao.java
     *
     */
    @Repository
    public class MemberDao extends MongoGenDao<Member>{
    
        /**
         * 实现钩子方法,返回反射的类型
         *                
         * @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:
     */
    
    public abstract class MongoGenDao<T> {
    
        @Autowired
        protected MongoTemplate mongoTemplate;
    
        
        /**
         * 保存一个对象
         *
         *                
         * @param t
         * @return
         */
        public void save(T t){
            this.mongoTemplate.save(t);
        }    
        
        /**
         * 查询一个对象
         */
        public String getMongoValue(String key) {
            KeyValue keyValue = mongoTemplate.findOne(new Query(Criteria.where(KeyValue.KEY).is(key)), KeyValue.class);
            return keyValue == null ? null : keyValue.getValue();
        }
    /** * 为属性自动注入bean服务 * * @param mongoTemplate */ public void setMongoTemplate(MongoTemplate mongoTemplate) { this.mongoTemplate = mongoTemplate; } }

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

    MongoTemplate对库Collection的管理



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

    我们想自己定义数据库的Collection名的化,可以在持久层Dao中指定关于Mongodb的可以Mongodb相关的内容

    上一章介绍了SpringMVC+ Mongodb CRUD + 分页实现.

    转自http://www.linuxidc.com/Linux/2015-02/114229.htm

    爱生活,更爱给我带来生活的人
  • 相关阅读:
    Docker核心技术之镜像(8)
    简单的自定义函数(7)
    存储过程游标的使用(6)
    存储过程循环语句(5)
    存储过程条件语句(4)
    存储过程的参数(3)
    存储过程的变量(2)
    一个简单的存储过程(1)
    Docker加速器配置(7)
    单表、多表查询
  • 原文地址:https://www.cnblogs.com/chenyq/p/5421626.html
Copyright © 2020-2023  润新知