前言:最近项目中需要用到mongo数据库,被项目老大安排学习mongo。在学习过程中查了很多资料,mongo的资料基本是英文的,对我来说还是一项挑战。鉴于此,将最近的成果记录下来,以供给有需要的朋友取用。 spring是很强大,在此需要感谢spring的研发团队。
废话不多说,mongo的安装与配置会另外开篇。
spring 与mongo的集成,网上的资料都是很早以前的版本。不适用现在的spring框架。
首先给出工程的目录结构
再次给出maven需要的依赖包目录:
解释一下各包:mongo-java-driver:是mongo的java驱动包,类似于java的jdbc驱动包;
spring-data-mongodb:是spring操作mongo最主要的包,其中提供了MongoTemplate类是以后操作mongo最常用的类,按我的理解,如果能将该类中的所有方法用的熟练,那就掌握了spring操作mongo。
spring-data-commons:操作提供了集成需要的配置文件中的一些xsd文件。
其他的就不解释,各位自己查资料。
包建好后,写spring的xml文件。内容如下:
<?xml version="1.0" encoding="UTF-8"?>
<!-- Bean头部 -->
<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/beans
http://www.springframework.org/schema/beans/spring-beans-3.0.xsd
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.3.xsd">
<!--配置连接参数 -->
<!--配置需要连接的mongo数据库的ip地址与端口-->
<mongo:mongo id="mongo" host="${mongo.host}" port="${mongo.port}" />
<!--配置访问的mongo的数据库名与访问的用户名与密码,如果要用权限验证就必须在mongo数据库中设置-->
<mongo:db-factory id="mongoDbFactory" dbname="${mongo.dbname}" mongo-ref="mongo" username="${mongo.username}" password="${mongo.password}" />
<bean id="mongoTemplate" class="org.springframework.data.mongodb.core.MongoTemplate">
<constructor-arg name="mongoDbFactory" ref="mongoDbFactory" />
</bean>
<!-- 启用注解方式配置bean -->
<context:annotation-config />
<!--实现autowire注入 -->
<bean class="org.springframework.beans.factory.annotation.AutowiredAnnotationBeanPostProcessor" />
<!-- 设置使用注解的类所在的包路径 -->
<context:component-scan base-package="com.dc"></context:component-scan>
</beans>
此处全部采用注解方式注入bean,本人认为注解是的bean更方便与使用。同时将连接属性全部放在公用的配置文件中,可以将带有$的替换成自己的就可以使用。
调用的测试方法:
本测试采用注入方式,首先看几个类:
PersonDao的代码:
package com.dc.city;
import javax.annotation.Resource;
import org.springframework.data.mongodb.core.MongoTemplate;
import org.springframework.stereotype.Repository;
@Repository
public class PersonDao {
@Resource
private MongoTemplate mongoTemplate;
public void createPerson(Person person) {
mongoTemplate.insert(person);
}
}
PersonSerive的代码:
package com.dc.city;
import javax.annotation.Resource;
import org.springframework.stereotype.Service;
@Service
public class PersonSerive {
@Resource
private PersonDao personDao;
public void createPerson() {
Person per = new Person();
per.setUserName("sffdsafda");
per.setUserPwd("12121212");
personDao.createPerson(per);
}
}
TestMongo的代码:
package com.dc.city;
import org.springframework.context.ApplicationContext;
import org.springframework.context.support.FileSystemXmlApplicationContext;
public class TestMongo {
public static void main(String[] args) {
ApplicationContext ac = new FileSystemXmlApplicationContext("classpath*:spring/*.xml");
PersonSerive personSerive=(PersonSerive)ac.getBean("personSerive");
personSerive.createPerson();
}
}
插入成功后,在mongo上能查询出刚插入的数据就表示环境搭建成功。