这篇文章给大家聊聊关于高效Web开发:Spring与MongoDB结合应用指南,以及对应的知识点,希望对各位有所帮助,不要忘了收藏本站哦。
安装Robomongo
创建SpringMongoDB项目
运行SpringMongoDB 项目
添加请求接口
添加客户-Bean
添加数据库操作
配置数据库
概括
安装MongoDB
brew安装mongodb运行mongodb
mongod --dbpath=/Users/yuanlin/Workspace/mongodb/成功运行mongodb后,最后看到的日志应该是这样的
等待端口27017 上的连接
安装Robomongo
Robomongo 是管理mongodb 的图形化工具
下载并安装后,创建连接
spring+mongodb_01.png 连接mongodb后,创建数据库-创建集合-插入文档可以通过图形化操作完成。很简单,这里就不解释了。
如果Robomongo连接失败,请检查mongod是否运行正常,端口等配置是否正确。
创建SpringMongoDB工程
使用IntelliJ Idea创建Spring项目的详细过程可以参考之前的文章《Spring + IntelliJ Idea》
新建项目-Spring Initializr-将名称设置为SpringMongoDB,类型设置为Gradle Project
spring+mongodb_02.png - 接下来需要注意的是,在依赖配置中,勾选Web和MongoDB,如下图
spring+mongodb_03.png-其余操作与上一篇文章《Spring + IntelliJ Idea》类似,此处略过
因为是使用Gradle编译的,而Gradle已经被屏蔽了,所以你知道
运行SpringMongoDB工程
还是可以参考之前的文章《Spring + IntelliJ Idea》
不过这里需要注意的是,成功连接mongodb后的日志是这样的
[ main] org.mongodb.driver.cluster : 使用设置创建的集群requiredClusterType=UNKNOWN, serverSelectionTimeout="30000 ms", maxWaitQueueSize=500}
[localhost:27017] org.mongodb.driver.connection : 打开到localhost:27017 的连接[}]
[localhost:27017] org.mongodb.driver.cluster : 监视器线程成功连接到服务器,描述为ServerDescription{address=localhost:27017, type=STANDALONE, state=CONNECTED, ok=true, version=ServerVersion{versionList=[3, 2, 6] }, minWireVersion=0, maxWireVersion=4, maxDocumentSize=16777216, roundTripTimeNanos=742451} 如果运行项目后出现连接失败日志,请检查mongodb是否运行成功
以及端口是否被修改过,因为项目现在使用的是默认的端口和配置
这里你可能会好奇,我一行代码都没有写,没有做任何配置,数据库就已经连接成功了?
是啊,Spring就是这么一个‘傻瓜’!
添加请求接口
我们首先添加两个接口。这两个接口只返回String信息来确认连接成功,其中Method=GET
包com.example;
导入org.springframework.web.bind.annotation.RequestMapping;
导入org.springframework.web.bind.annotation.RequestMethod;
导入org.springframework.web.bind.annotation.ResponseBody;
导入org.springframework.web.bind.annotation.RestController;
@RestController
公共类MongoDBController {
@RequestMapping(值="插入", 方法=RequestMethod.GET)
@ResponseBody
公共字符串插入(){
返回“插入”;
}
@RequestMapping(值="全部", 方法=RequestMethod.GET)
@ResponseBody
公共字符串全部(){
返回“全部”;
}
}成功测试结果如下
spring+mongodb_04.pngspring+mongodb_05.png 如果对MongoDBController的代码有疑问,请参考之前的文章《Spring + IntelliJ Idea》
添加Customer Bean
为了后续的DB操作,这里我们首先创建一个Customer Bean如下
包com.example;
导入org.springframework.data.annotation.Id;
公共类客户{
@ID
私有字符串ID;
私有字符串名字;
私有字符串姓氏;
公共客户(){}
公共客户(字符串名字,字符串姓氏){
this.firstName=名字;
this.lastName=姓氏;
}
@覆盖
公共字符串toString() {
return String.format("客户[id=%s,firstName="%s",lastName="%s"]",id,firstName,lastName);
}
}代码也很简单,不废话了
添加数据库操作
铺垫了半天,终于进入正题了!
通常,这时候我们就会开始编写向数据库保存和读取数据的代码。
不过MongoDB为我们提供了更便捷的方式来实现数据库操作: MongoRepository
我们只需要定义一个继承这个接口的类,不需要实现里面的方法。
如此强大和便捷,你是不是迫不及待地想看看代码了?
包com.example;
导入java.util.List;
导入org.springframework.data.mongodb.repository.MongoRepository;
公共接口CustomerRepository 扩展MongoRepository{
客户保存(Customer客户);
列表查找全部();
}代码还是很简单的,就不用解释了。
这种只定义一个接口,框架根据定义的接口规则自动生成其实现的原理,称为:动态代理
有关动态代理的更多信息,请参阅代理设计模式
在当今的Android平台开发中,最流行的网络库Retrofit也有同样的原理。
也许你和我一样,还在担心实现:数据库操作有多容易?
如果你不相信,我们来测试一下。在请求接口中添加保存和读取数据库的代码如下
@RestController
公共类MongoDBController {
@Autowired
私有CustomerRepository 存储库;
@RequestMapping(值="插入", 方法=RequestMethod.GET)
@ResponseBody
公共字符串插入(){
repository.save(new Customer("xiao", "ming"));
返回“插入”;
}
@RequestMapping(值="全部", 方法=RequestMethod.GET)
@ResponseBody
公共字符串全部(){
for (客户客户:存储库.findAll()) {
System.out.println(客户);
}
返回“全部”;
}
}此时别忘了重新运行SpringMongoDB项目,让最新的修改生效!
接下来,在浏览器中访问“/insert”界面。没有改变吗?
别担心,这就是Robomongo 派上用场的地方。
打开Robomongo 中的测试数据库以查看数据并查找新客户。
spring+mongodb_06.png 此时,在浏览器中访问"/all"界面,发现idea的日志中打印的信息如下:
Customer[id=57b1d2dff81e0217b788d70d,firstName="xiao",lastName="ming"]这说明findAll也可以正常工作
一切都是那么简单流畅,您再也不用为服务器开发而烦恼
配置数据库
讨论到这里本来可以结束了,但是有一个问题你可能非常关心。
以上所有配置均基于默认。我们可以自定义数据库配置吗?
答案当然是肯定的
我们看一下如何配置mongodb端口以及自定义数据库名称
首先需要重新运行mongodb并配置数据库端口
mongod --dbpath=/Users/yuanlin/Workspace/mongodb --port 9090 然后根据mongodb运行时的端口号在代码中进行相应的配置
包com.example;
导入com.mongodb.Mongo;
导入org.springframework.context.annotation.Configuration;
导入org.springframework.data.mongodb.config.AbstractMongoConfiguration;
@配置
公共类MongoDBConfig 扩展AbstractMongoConfiguration {
@覆盖
公共Mongo mongo() 抛出异常{
返回新的Mongo("localhost", 9090);
}
@覆盖
受保护的字符串getDatabaseName() {
返回“SpringMongoDB”;
}
}同样,我们只需要继承AbstractMongoConfiguration即可快速实现mongodb配置
注意这里的数据库名称设置为‘SpringMongoDB’
老规则,重新运行SpringMongoDB项目使更改生效
再次成功访问“/insert”界面后,打开Robomongo即可查看数据库信息。
spring+mongodb_07.pngRobomongo连接还需要将端口号从默认值修改为9090
宾果,数据库配置成功!
小结
以上是一位iOS、Android终端开发工程师对Spring的进一步认识。
解决了Spring和DB的问题,接下来就是讨论Web开发中常用的Spring和第三方库了,敬请期待!
【高效Web开发:Spring与MongoDB结合应用指南】相关文章:
2.米颠拜石
3.王羲之临池学书
8.郑板桥轶事十则
用户评论
这个组合听起来不错啊!轻量便捷,又高效灵活。
有19位网友表示赞同!
Spring框架的强大功能和MongoDB的NoSQL优势完美结合,很期待看看实践效果。
有16位网友表示赞同!
最近想学习下Web开发,这样的stack看起来很有吸引力。
有20位网友表示赞同!
Spring已经很成熟了,再加上MongoDB,应该开发起来比较快速高效。
有13位网友表示赞同!
我关注过MongoDB很久了,一直想用它来做些项目,Spring正好能提升效率。
有10位网友表示赞同!
这样搭配感觉非常现代化,适合一些大型项目的构建。
有8位网友表示赞同!
有没有什么开源案例可以参考?
有13位网友表示赞同!
学这套技术体系确实可以拓展未来的就业方向。
有10位网友表示赞同!
之前用Spring Boot开发过项目,感觉这个框架很强大。
有9位网友表示赞同!
MongoDB的数据库结构是不是比关系型数据库更灵活?
有18位网友表示赞同!
使用Spring作为MVC框架加上MongoDB做数据存储,应该是非常强大的组合吧?
有17位网友表示赞同!
想问问MongoDB的数据模型复杂度如何操控?
有11位网友表示赞同!
web开发越来越依赖这些技术了,学习起来也越来越重要。
有7位网友表示赞同!
这种结合方式能提高应用的性能吗?
有9位网友表示赞同!
有没有什么需要注意的地方?例如数据库优化等?
有15位网友表示赞同!
会不会出现一些性能瓶颈问题?
有14位网友表示赞同!
Spring + MongoDB 适合开发什么样的类型的网站或者应用程序?
有6位网友表示赞同!
想了解下这两种技术之间的衔接方式,具体如何实现数据交互?
有17位网友表示赞同!