spring data & mongodb的参考地址是[url]http://www.springsource.org/spring-data/mongodb/[/url], 可以通过[url]http://static.springsource.org/spring-data/data-mongodb/docs/current/reference/html/[/url]来查询详细的配置和代码的操作文档。当然,看文档是个很累眼睛和脑子的活, 在这里举个简单的例子说明一下SPRING 和MONGDB基本配置。
1. 通过MAVEN 建立WEBAPP项目, 在项目中配置 spring mvc
我是通过ECLIPSE来建立maven项目地, 然后通过阅读这位大虾的教程[url]http://limingnihao.iteye.com/blog/830409[/url]配置了spring MVC, 谢谢大虾的帮助!!
web.xml
我在启动TOMCAT的时候,碰到了一个问题,TOMCAT操作台报告:listenerError的错误, mongo服务不能启动。 根据网上查询的资料, 我作了以下配置:
在webapp / WEB-INF / classes 目录下,配置了 logging.properties的文件,当TOMCAT启动发生错误时, 会在TOMCAT安装目录下创建logs2目录并写下错误的提示, 可以从这个错误log中得到tomcat操作台错误的信息。
pom.xml, 以下一堆 dependency 是常用的, 可以选择使用。
2. 配置实用MONGODB
pom.xml: 在dependency中添加
在spring 的配置文件中,作如下配置
通过以上配置,可以在数据操作的源码中直接调用 mangoTemplate 来进行mangoDB的数据操作。
1. 通过MAVEN 建立WEBAPP项目, 在项目中配置 spring mvc
我是通过ECLIPSE来建立maven项目地, 然后通过阅读这位大虾的教程[url]http://limingnihao.iteye.com/blog/830409[/url]配置了spring MVC, 谢谢大虾的帮助!!
web.xml
<context-param>
<param-name>contextConfigLocation</param-name>
<param-value>
/WEB-INF/applicationContext*.xml
</param-value>
</context-param>
<listener>
<listener-class>org.springframework.web.context.ContextLoaderListener</listener-class>
</listener>
<servlet>
<servlet-name>mongo</servlet-name>
<servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
<init-param>
<param-name>contextConfigLocation</param-name>
<param-value>/WEB-INF/mongo-servlet.xml</param-value>
</init-param>
<load-on-startup>1</load-on-startup>
</servlet>
<servlet-mapping>
<servlet-name>mongo</servlet-name>
<url-pattern>*.do</url-pattern>
</servlet-mapping>
我在启动TOMCAT的时候,碰到了一个问题,TOMCAT操作台报告:listenerError的错误, mongo服务不能启动。 根据网上查询的资料, 我作了以下配置:
在webapp / WEB-INF / classes 目录下,配置了 logging.properties的文件,当TOMCAT启动发生错误时, 会在TOMCAT安装目录下创建logs2目录并写下错误的提示, 可以从这个错误log中得到tomcat操作台错误的信息。
handlers = org.apache.juli.FileHandler, java.util.logging.ConsoleHandler
############################################################
# Handler specific properties.
# Describes specific configuration info for Handlers.
############################################################
org.apache.juli.FileHandler.level = FINE
org.apache.juli.FileHandler.directory = ${catalina.base}/logs2
org.apache.juli.FileHandler.prefix = error-debug.
java.util.logging.ConsoleHandler.level = FINE
java.util.logging.ConsoleHandler.formatter = java.util.logging.SimpleFormatter
pom.xml, 以下一堆 dependency 是常用的, 可以选择使用。
<!-- spring -->
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-core</artifactId>
<version>${org.springframework.version}</version>
</dependency>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-expression</artifactId>
<version>${org.springframework.version}</version>
</dependency>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-beans</artifactId>
<version>${org.springframework.version}</version>
</dependency>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-aop</artifactId>
<version>${org.springframework.version}</version>
</dependency>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-context</artifactId>
<version>${org.springframework.version}</version>
</dependency>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-context-support</artifactId>
<version>${org.springframework.version}</version>
</dependency>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-tx</artifactId>
<version>${org.springframework.version}</version>
</dependency>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-jdbc</artifactId>
<version>${org.springframework.version}</version>
</dependency>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-orm</artifactId>
<version>${org.springframework.version}</version>
</dependency>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-oxm</artifactId>
<version>${org.springframework.version}</version>
</dependency>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-web</artifactId>
<version>${org.springframework.version}</version>
</dependency>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-webmvc</artifactId>
<version>${org.springframework.version}</version>
</dependency>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-test</artifactId>
<version>${org.springframework.version}</version>
</dependency>
<!-- jstl -->
<dependency>
<groupId>javax.servlet</groupId>
<artifactId>servlet-api</artifactId>
<version>2.5</version>
</dependency>
<!-- log4j -->
<!--
<dependency>
<groupId>log4j</groupId>
<artifactId>log4j</artifactId>
<version>1.2.14</version>
<scope>runtime</scope>
</dependency>
-->
<!-- commons for db -->
<dependency>
<groupId>commons-dbcp</groupId>
<artifactId>commons-dbcp</artifactId>
<version>1.4</version>
</dependency>
<dependency>
<groupId>commons-pool</groupId>
<artifactId>commons-pool</artifactId>
<version>1.4</version>
</dependency>
<!-- common logging -->
<dependency>
<groupId>commons-logging</groupId>
<artifactId>commons-logging-api</artifactId>
<version>1.1</version>
</dependency>
<!-- spring fileupload -->
<dependency>
<groupId>commons-fileupload</groupId>
<artifactId>commons-fileupload</artifactId>
<version>1.2.2</version>
</dependency>
<dependency>
<groupId>org.apache.commons</groupId>
<artifactId>commons-io</artifactId>
<version>1.3.2</version>
</dependency>
<!-- dom4j -->
<dependency>
<groupId>dom4j</groupId>
<artifactId>dom4j</artifactId>
<version>1.6.1</version>
</dependency>
<!-- spring tx dependency -->
<dependency>
<groupId>org.aspectj</groupId>
<artifactId>aspectjweaver</artifactId>
<version>1.7.0</version>
</dependency>
<dependency>
<groupId>aopalliance</groupId>
<artifactId>aopalliance</artifactId>
<version>1.0</version>
</dependency>
<dependency>
<groupId>cglib</groupId>
<artifactId>cglib-nodep</artifactId>
<version>2.2.2</version>
</dependency>
<!-- json lib -->
<dependency>
<groupId>net.sf.json-lib</groupId>
<artifactId>json-lib</artifactId>
<classifier>jdk15</classifier>
<version>2.4</version>
</dependency>
<dependency>
<groupId>commons-beanutils</groupId>
<artifactId>commons-beanutils</artifactId>
<version>1.8.3</version>
</dependency>
<dependency>
<groupId>commons-collections</groupId>
<artifactId>commons-collections</artifactId>
<version>3.2.1</version>
</dependency>
<dependency>
<groupId>commons-lang</groupId>
<artifactId>commons-lang</artifactId>
<version>2.6</version>
</dependency>
<dependency>
<groupId>net.sf.ezmorph</groupId>
<artifactId>ezmorph</artifactId>
<version>1.0.5</version>
</dependency>
<!-- junit -->
<dependency>
<groupId>junit</groupId>
<artifactId>junit</artifactId>
<version>3.8.1</version>
<scope>test</scope>
</dependency>
<!-- jstl -->
<dependency>
<groupId>jstl</groupId>
<artifactId>jstl</artifactId>
<version>1.2</version>
<scope>runtime</scope>
</dependency>
2. 配置实用MONGODB
pom.xml: 在dependency中添加
<dependency>
<groupId>org.springframework.data</groupId>
<artifactId>spring-data-mongodb</artifactId>
<version>1.2.0.RELEASE</version>
</dependency>
在spring 的配置文件中,作如下配置
<!-- mongoDB的配置对象, option可选择使用 -->
<bean id="mongoOptions" class="com.mongodb.MongoOptions">
<!-- 服务器是否自动重连,默认为false -->
<property name="autoConnectRetry" value="false" />
<!-- 对同一个服务器尝试重连的时间(毫秒),设为0时默认使用15秒 -->
<property name="maxAutoConnectRetryTime" value="0" />
<!-- 与每个主机的连接数,默认为10 -->
<property name="connectionsPerHost" value="10" />
<!-- 连接超时时间(毫秒),默认为10000 -->
<property name="connectTimeout" value="10000" />
<!-- 是否创建一个finalize方法,以便在客户端没有关闭DBCursor的实例时,清理掉它。默认为true -->
<property name="cursorFinalizerEnabled" value="true" />
<!-- 线程等待连接可用的最大时间(毫秒),默认为120000 -->
<property name="maxWaitTime" value="120000" />
<!-- 可等待线程倍数,默认为5.例如connectionsPerHost最大允许10个连接,则10*5=50个线程可以等待,更多的线程将直接抛异常 -->
<property name="threadsAllowedToBlockForConnectionMultiplier" value="5" />
<!-- socket读写时超时时间(毫秒),默认为0,不超时 -->
<property name="socketTimeout" value="0" />
<!-- 是socket连接在防火墙上保持活动的特性,默认为false -->
<property name="socketKeepAlive" value="false" />
<!-- 对应全局的WriteConcern.SAFE,默认为false -->
<property name="safe" value="true" />
<!-- 对应全局的WriteConcern中的w,默认为0 -->
<property name="w" value="0" />
<!-- 对应全局的WriteConcern中的wtimeout,默认为0 -->
<property name="wtimeout" value="0" />
<!-- 对应全局的WriteConcern.FSYNC_SAFE,如果为真,每次写入要等待写入磁盘,默认为false -->
<property name="fsync" value="false" />
<!-- 对应全局的WriteConcern.JOURNAL_SAFE,如果为真,每次写入要等待日志文件写入磁盘,默认为false -->
<property name="j" value="false" />
</bean>
<!-- Factory bean that creates the Mongo instance -->
<bean id="mongo" class="org.springframework.data.mongodb.core.MongoFactoryBean">
<property name="host" value="localhost" />
<property name="mongoOptions" ref="mongoOptions"/>
<!-- 设定写策略,默认为WriteConcern.SAFE,优先级高于mongoOptions中的safe -->
<property name="writeConcern" value="SAFE"/>
</bean>
<!-- MongoTemplate for connecting and quering the documents in the database -->
<bean id="mongoTemplate" class="org.springframework.data.mongodb.core.MongoTemplate">
<constructor-arg name="mongo" ref="mongo" />
<constructor-arg name="databaseName" value="test" />
</bean>
<!-- Use this post processor to translate any MongoExceptions thrown in @Repository annotated classes -->
<bean class="org.springframework.dao.annotation.PersistenceExceptionTranslationPostProcessor" />
通过以上配置,可以在数据操作的源码中直接调用 mangoTemplate 来进行mangoDB的数据操作。