Spring整合MongoDB

简介:




版本:

spring:4.1.3.RELEASE

mongo-java-driver.version:3.4.1

spring-data-mongodb.version:1.7.0.RELEASE


配置:

1、pom.xml中添加核心依赖(两个)

+++++++++++++++++++++++++++++++++++++++++++++++++++++

1
2
3
4
5
6
7
8
9
10
11
12
                 <!-- mongo-java-dirver -->
         <dependency>
             <groupId>org.mongodb</groupId>
             <artifactId>mongo-java-driver</artifactId>
             <version> 3.4 . 1 </version>
         </dependency>
         <!-- spring-data-mongodb -->
         <dependency>
             <groupId>org.springframework.data</groupId>
             <artifactId>spring-data-mongodb</artifactId>
             <version> 1.7 . 0 .RELEASE</version>
         </dependency>

++++++++++++++++++++++++++++++++++++++++++++++++++++++

完整pom.xml文件内容如下:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
<project xmlns= "http://maven.apache.org/POM/4.0.0"  xmlns:xsi= "http://www.w3.org/2001/XMLSchema-instance"
     xsi:schemaLocation= "http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd" >
     <modelVersion> 4.0 . 0 </modelVersion>
     <groupId>com.fwmagic.mongo</groupId>
     <artifactId>fwmagic-mongo</artifactId>
     <version> 1.0 . 0 -SNAPSHOT</version>
 
     <properties>
         <junit.version> 4.12 </junit.version>
         <spring.version> 4.1 . 3 .RELEASE</spring.version>
         <fastjson.version> 1.2 . 15 </fastjson.version>
         <slf4j.version> 1.6 . 4 </slf4j.version>
         <joda-time.version> 2.5 </joda-time.version>
         <commons-lang3.version> 3.3 . 2 </commons-lang3.version>
         <commons-io.version> 1.3 . 2 </commons-io.version>
         <mongo-java-driver.version> 3.4 . 1 </mongo-java-driver.version>
         <spring-data-mongodb.version> 1.7 . 0 .RELEASE</spring-data-mongodb.version>
 
         <env>dev</env>
         <project.build.sourceEncoding>UTF- 8 </project.build.sourceEncoding>
         <maven.compiler.encoding>UTF- 8 </maven.compiler.encoding>
     </properties>
 
     <dependencies>
         <!--junit -->
         <dependency>
             <groupId>junit</groupId>
             <artifactId>junit</artifactId>
             <version>${junit.version}</version>
         </dependency>
 
         <!-- fastjson -->
         <dependency>
             <groupId>com.alibaba</groupId>
             <artifactId>fastjson</artifactId>
             <version>${fastjson.version}</version>
         </dependency>
 
         <!-- Spring -->
         <dependency>
             <groupId>org.springframework</groupId>
             <artifactId>spring-context</artifactId>
             <version>${spring.version}</version>
         </dependency>
         <dependency>
             <groupId>org.springframework</groupId>
             <artifactId>spring-context-support</artifactId>
             <version>${spring.version}</version>
         </dependency>
         <dependency>
             <groupId>org.springframework</groupId>
             <artifactId>spring-beans</artifactId>
             <version>${spring.version}</version>
         </dependency>
         <dependency>
             <groupId>org.springframework</groupId>
             <artifactId>spring-webmvc</artifactId>
             <version>${spring.version}</version>
         </dependency>
         <dependency>
             <groupId>org.springframework</groupId>
             <artifactId>spring-aspects</artifactId>
             <version>${spring.version}</version>
         </dependency>
         <dependency>
             <groupId>org.springframework</groupId>
             <artifactId>spring-test</artifactId>
             <version>${spring.version}</version>
         </dependency>
         <!-- slf4j日志 -->
         <dependency>
             <groupId>org.slf4j</groupId>
             <artifactId>slf4j-log4j12</artifactId>
             <version>${slf4j.version}</version>
         </dependency>
         <!-- Apache工具组件 -->
         <dependency>
             <groupId>org.apache.commons</groupId>
             <artifactId>commons-lang3</artifactId>
             <version>${commons-lang3.version}</version>
         </dependency>
         <dependency>
             <groupId>org.apache.commons</groupId>
             <artifactId>commons-io</artifactId>
             <version>${commons-io.version}</version>
         </dependency>
         <!-- 时间操作组件 -->
         <dependency>
             <groupId>joda-time</groupId>
             <artifactId>joda-time</artifactId>
             <version>${joda-time.version}</version>
         </dependency>
         <dependency>
             <groupId>org.apache.commons</groupId>
             <artifactId>commons-pool2</artifactId>
             <version> 2.0 </version>
         </dependency>
         <!-- mongo-java-dirver -->
         <dependency>
             <groupId>org.mongodb</groupId>
             <artifactId>mongo-java-driver</artifactId>
             <version>${mongo-java-driver.version}</version>
         </dependency>
         <!-- spring-data-mongodb -->
         <dependency>
             <groupId>org.springframework.data</groupId>
             <artifactId>spring-data-mongodb</artifactId>
             <version>${spring-data-mongodb.version}</version>
             <exclusions>
                 <exclusion>
                     <artifactId>slf4j-api</artifactId>
                     <groupId>org.slf4j</groupId>
                 </exclusion>
             </exclusions>
         </dependency>
     </dependencies>
     <build>
         <plugins>
             <!-- java编译插件 -->
             <plugin>
                 <groupId>org.apache.maven.plugins</groupId>
                 <artifactId>maven-compiler-plugin</artifactId>
                 <version> 3.2 </version>
                 <configuration>
                     <source> 1.7 </source>
                     <target> 1.7 </target>
                     <encoding>UTF- 8 </encoding>
                 </configuration>
             </plugin>
             <!-- 配置Tomcat插件 -->
             <plugin>
                 <groupId>org.apache.maven.plugins</groupId>
                 <artifactId>maven-war-plugin</artifactId>
                 <version> 2.6 </version>
                 <configuration>
                     <archiveClasses> true </archiveClasses>
                     <packagingExcludes>WEB-INF/classes/**</packagingExcludes>
                     <webResources>
                         <resource>
                             <directory>src/main/webapp/WEB-INF</directory>
                             <includes>
                                 <include>applicationContext.xml</include>
                             </includes>
                             <filtering> true </filtering>
                             <targetPath>WEB-INF</targetPath>
                         </resource>
                     </webResources>
                 </configuration>
             </plugin>
             <plugin>
                 <groupId>org.apache.maven.plugins</groupId>
                 <artifactId>maven-surefire-plugin</artifactId>
                 <version> 2.7 . 1 </version>
             </plugin>
         </plugins>
     </build>
</project>


2、mongo.properties

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
####################################################
###MongoDB configuration
####################################################
mongo.host=localhost
mongo.port= 27017
mongo.dbname=demodb
mongo.username=admin
mongo.password= 123456
#一个线程变为可用的最大阻塞数
mongo.connectionsPerHost= 8
#线程队列数,它与以上面connectionsPerHost值相乘的结果就是线程队列最大值
mongo.threadsAllowedToBlockForConnectionMultiplier= 4
#连接超时时间(毫秒) 
mongo.connectTimeout= 1500
#最大等待时间
mongo.maxWaitTime= 1500
#自动重连
mongo.autoConnectRetry= true
#scoket保持活动
mongo.socketKeepAlive=  true
#scoket超时时间
mongo.socketTimeout= 1500
#读写分离
mongo.slaveOk= true


3、applicationContext.xml

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
<?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:p= "http://www.springframework.org/schema/p"
     xmlns:context= "http://www.springframework.org/schema/context"
     xmlns:mvc= "http://www.springframework.org/schema/mvc"  xmlns:mongo= "http://www.springframework.org/schema/data/mongo"
     xsi:schemaLocation="http: //www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd
         http: //www.springframework.org/schema/mvc http://www.springframework.org/schema/mvc/spring-mvc-4.0.xsd
         http: //www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context.xsd
         http: //www.springframework.org/schema/data/mongo http://www.springframework.org/schema/data/mongo/spring-mongo.xsd">
         
     <!--配置service的包扫描,自动注入Service -->
     <context:component-scan base- package = "com.fwmagic"  />
 
     <!-- 使用spring自带的占位符替换功能 -->
     <bean
         class = "org.springframework.beans.factory.config.PropertyPlaceholderConfigurer" >
         <!-- 允许JVM参数覆盖 -->
         <property name= "systemPropertiesModeName"  value= "SYSTEM_PROPERTIES_MODE_OVERRIDE"  />
         <!-- 忽略没有找到的资源文件 -->
         <property name= "ignoreResourceNotFound"  value= "true"  />
         <!-- 配置资源文件 -->
 
         <property name= "locations" >
             <list>
                 <value>classpath:mongo.properties</value>
                 <value>classpath:log4j.properties</value>
             </list>
         </property>
     </bean>
     
         <!--credentials的配置形式是:用户名:密码@默认数据库 -->
     <mongo:mongo-client id= "mongoClient"  host= "${mongo.host}"
         port= "${mongo.port}"  credentials= "${mongo.username}:${mongo.password}@${mongo.dbname}" >
         <mongo:client-options write-concern= "SAFE"
             connections-per-host= "${mongo.connectionsPerHost}"
             threads-allowed-to-block- for -connection-multiplier= "${mongo.threadsAllowedToBlockForConnectionMultiplier}"
             connect-timeout= "${mongo.connectTimeout}"  max-wait-time= "${mongo.maxWaitTime}"
             socket-timeout= "${mongo.socketTimeout}"  />
     </mongo:mongo-client>
 
     <mongo:db-factory id= "mongoDbFactory"  dbname= "${mongo.dbname}"
         mongo-ref= "mongoClient"  />
 
     <bean id= "mongoTemplate"  class = "org.springframework.data.mongodb.core.MongoTemplate" >
         <constructor-arg name= "mongoDbFactory"  ref= "mongoDbFactory"  />
     </bean>
</beans>


单元测试:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
package  com.fwmagic.dao;
 
import  java.util.Date;
import  java.util.List;
 
import  org.junit.Test;
import  org.junit.runner.RunWith;
import  org.springframework.beans.factory.annotation.Autowired;
import  org.springframework.data.mongodb.core.MongoTemplate;
import  org.springframework.data.mongodb.core.query.Criteria;
import  org.springframework.data.mongodb.core.query.CriteriaDefinition;
import  org.springframework.data.mongodb.core.query.Query;
import  org.springframework.data.mongodb.core.query.Update;
import  org.springframework.test.context.ContextConfiguration;
import  org.springframework.test.context.junit4.SpringJUnit4ClassRunner;
 
import  com.fwmagic.pojo.Notice;
 
@RunWith (SpringJUnit4ClassRunner. class )
@ContextConfiguration ( "classpath:spring/applicationContext*.xml" )
public  class  NoticeDAOTest {
 
     @Autowired
     private  NoticeDAO dao;
     
     /**
      * 查询所有文档
      */
     @Test
     public  void  testList() {
         Query query =  new  Query();
         List<Notice> notice = dao.list(query, Notice. class );
         for  (Notice n : notice) {
             System.out.println(n);
         }
     }
 
     /**
      * 插入文档
      */
     @Test
     public  void  testInsert(){
         Notice notice =  new  Notice();
         notice.setSiteId( 7 );
         notice.setCreator( "diaochan" );
         notice.setTitle( "今天星期一" );
         notice.setUpdateTime( new  Date());
         dao.insert(notice);
     }
     
     /**
      * 更新文档
      */
     @Test
     public  void  testUpdate(){
         Criteria criteria =  new  Criteria();
         criteria.and( "creator" ).is( "zhaojun" );
         Query query =  new  Query(criteria);
         dao.update(query, Update.update( "createTime" ,  new  Date()), Notice. class );
     }
     
     /**
      * 删除一行文档
      */
     @Test
     public  void  testRemove(){
         Criteria criteria =  new  Criteria();
         criteria.and( "creator" ).is( "zhaojun" );
         Query query =  new  Query(criteria);
         dao.remove(query, Notice. class );
     }
     
     //未完待续……
}


NoticeDAO.java

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
package  com.fwmagic.dao;
 
import  java.util.List;
 
import  org.springframework.beans.factory.annotation.Autowired;
import  org.springframework.data.mongodb.core.MongoTemplate;
import  org.springframework.data.mongodb.core.query.Query;
import  org.springframework.data.mongodb.core.query.Update;
import  org.springframework.stereotype.Repository;
 
import  com.fwmagic.pojo.Notice;
import  com.mongodb.WriteResult;
 
@Repository
public  class  NoticeDAO  implements  BaseDAO<Notice>{
 
     @Autowired
     private  MongoTemplate mt;
     
     @Override
     public  List<Notice> list(Query query, Class<Notice> entityClass) {
         return  mt.find(query, entityClass);
     }
 
     @Override
     public  Notice findOne(Query query, Class<Notice> entityClass) {
         return  mt.findOne(query, entityClass);
     }
     
     @Override
     public  void  insert(Notice notice){
         mt.insert(notice);
     }
     
     @Override
     public  WriteResult update(Query query, Update update, Class<?> entityClass){
         return  mt.updateFirst(query, update, entityClass);
     }
     
     @Override
     public  void  remove(Query query, Class<?> entityClass){
         mt.remove(query, entityClass);
     }
}


完整demo请移步此处查看.



本文转自 兴趣e族 51CTO博客,原文链接:http://blog.51cto.com/simplelife/1932408

相关文章
|
NoSQL Java API
Spring Data MongoDB 使用
Spring Data MongoDB 使用
937 1
|
NoSQL Java MongoDB
Spring Boot与MongoDB的集成应用
Spring Boot与MongoDB的集成应用
|
NoSQL Java MongoDB
Spring 5整合MongoDB
【5月更文挑战第9天】
378 2
|
存储 NoSQL Java
使用Spring Boot和MongoDB构建NoSQL应用
使用Spring Boot和MongoDB构建NoSQL应用
|
NoSQL Java MongoDB
如何在Spring Boot应用中集成MongoDB数据库
如何在Spring Boot应用中集成MongoDB数据库
|
NoSQL Java MongoDB
如何在Spring Boot应用中集成MongoDB数据库
如何在Spring Boot应用中集成MongoDB数据库
|
NoSQL Java MongoDB
Java一分钟之-Spring Data MongoDB:MongoDB集成
【6月更文挑战第11天】Spring Data MongoDB简化Java应用与MongoDB集成,提供模板和Repository模型。本文介绍其基本用法、常见问题及解决策略。包括时间字段的UTC转换、异常处理和索引创建。通过添加相关依赖、配置MongoDB连接、定义Repository接口及使用示例,帮助开发者高效集成MongoDB到Spring Boot应用。注意避免时间差、异常处理不充分和忽视索引的问题。
647 0
|
NoSQL Java Spring
Spring4整合mongodb 2.x
https://www.cnblogs.com/yinlixin/p/5643939.html 博客分别介绍了整合mongoDB 2.X 和mongoDB 3.Xhttp://blog.csdn.net/chenpy/article/details/50458787 上面的博客参考了这篇博客http://blog.51cto.com/ylcodes01/1934662 spring4.3.7整合mongodb3.2 在此记录下在笔者项目中,Spring4.3.8和mongoDB2.6进行集成的过程(首要参考了上述博客)。
1804 0
|
NoSQL Java 数据库连接
Spring整合MongoDB
<div class="markdown_views"> <h1 id="1maven导入依赖">1、Maven导入依赖</h1> <pre class="prettyprint"><code class=" hljs xml"><span class="hljs-tag">&lt;<span class="hljs-title">project</span> <span
5448 0
|
Java Spring 容器
SpringBoot自动配置的原理是什么?
Spring Boot自动配置核心在于@EnableAutoConfiguration注解,它通过@Import导入配置选择器,加载META-INF/spring.factories中定义的自动配置类。这些类根据@Conditional系列注解判断是否生效。但Spring Boot 3.0后已弃用spring.factories,改用新格式的.imports文件进行配置。
1612 0

推荐镜像

更多