java 简单折腾SpringBoot + Mongodb

官方文档 + Google最靠谱系列。

 

一、部署Mongodb

(1)在linux上部署Mongodb

个人建议在linux上部署Mongodb。可以参考官方文档(只推荐这一种部署方式):

https://docs.mongodb.com/manual/tutorial/install-mongodb-on-ubuntu/

安全设置,远程访问,开机自启动,可以参考:

http://blog.topspeedsnail.com/archives/4820

用户权限,可以参考:

http://www.cnblogs.com/5ishare/p/5657148.html

个人推荐这篇,更加简单易懂:

http://www.cnblogs.com/wingjay/p/3954430.html

(2)安装Mongodb的图形界面客户端

个人建议使用robomongo,可以在官网下载:

https://robomongo.org

(3)部署Mongodb遇到的一些坑

1.只推荐官网提供的部署方式

最开始,我直接下载了官方提供的tgz压缩包,自己在虚拟机中解压部署。后来遇到了一些难以解决的问题。

举几个例子:

1.我个人没有找到把Mongodb设为系统服务的办法,导致命令行输入mongod、mongo指令时没有反应,只能到Mongodb的bin目录下进行操作。

2.因为不想每次开虚拟机都手动开一次Mongodb,所以我尝试了几种方法设置自启(包括修改profile文件、开机执行自己写的sh脚本、在init.d下设置自启脚本),结果全部都失败了。

综上,直接更新官网的apt源,自动安装mongodb-org是最省心的选择。

2.必须设置安全措施

记得前一阵子发生了针对Mongodb的袭击热潮,详见:

http://www.freebuf.com/articles/database/125127.html

被攻击的Mongodb有如下特点:默认配置(在默认情况下Mongodb没有账号密码,可被任意访问)、弱密码(root、mongodb)、把Mongodb放在公网上、没有修改Mongodb的27017默认端口(直接开Nmap扫描某一网段的27017端口,可以找到大量未修改端口的Mongodb)。

记得很久以前Redis也被这样搞过,后来Redis学聪明了(如果你要开远程链接,必须设置账户密码,账户密码是否需要一定的强度我忘记了,只记得Mysql对密码的强度有较高的要求)。很显然Mongodb并没有吸取教训(最新版本在默认情况下只允许本机访问,但是不需要账号密码)。

Mongodb的安全设置是一个很大的话题。具体解决方案可以参考官方文档:

https://docs.mongodb.com/manual/security/

3.创建数据库后,必须插入数据,才能显示数据库

使用mongo操作Mongodb时,如果需要创建数据库test,需要使用use test创建数据库。创建之后并不能马上使用show dbs看到这个test(空的数据库不显示),至少需要插入一个文档。

执行db.items.insert({“id”:”xie4ever”})之后,才能看到test数据库。

二、整合SpringBoot和Mongodb

项目结构为(重要的包和类被箭头指示):

666

(1)建立SpringBoot项目,在pom.xml中加入依赖

加入依赖:

pom.xml

(2)在resources文件夹下建立一个配置文件

建立mongodb的配置文件:

application.properties

配置只有一行。xie4ever是账号,root是密码,192.168.1.105:27017是数据库地址,test是数据库名称。

(3)使用Mongodb

1.写一个User类

User类为数据的实体。Mongodb中的数据将被映射为User对象。

User.java

2.写出dao接口、dao实体类

对Mongodb的具体操作。

UserDao.java

UserDaoImpl.java

3.写一个测试类

同时测试增删改查四种方法。你也可以逐一执行,在robomongo中可以查看执行过程。

UserDaoTest.java

至此,SpringBoot + Mongodb已经整合完毕了。可以从官方文档获取更多使用方法。

三、总结

简单的整合了SpringBoot + Mongodb。以后我将详细研究Mongodb的用法。