Windows下安装Mongodb SpringBoot集成MongoDB和Redis多数据源
全文内容:
Mongodb安装
说明:Mongodb和redis是开发中常用的中间件,Redis的安装使用比较简单就不写了,只说本地也就是Windows安装Mongodb。
SpringBoot集成MongoDB和Redis
文中还有一个彩蛋Hutool
1.下载最新稳定版
https://www.mongodb.com/what-is-mongodb
例如我下载的版本是:mongodb-win32-x86_64-enterprise-windows-64-4.2.3-signed.msi
2.安装
选择complete,完整安装(安装全部组件)。complete,完整的、完全的。
默认选项即可:
这里取消勾选:
由于我已经安装好,不能再截图,如果还有不清楚的同学可以看这里:
https://www.cnblogs.com/chy18883701161/p/11100560.html
3.确认Windows服务启动
测试:http://localhost:27017/
4.控制台
安装目录的bin目录,例如C:\Program Files\MongoDB\Server\4.2\bin 。
使用mongo启动客户端
可以查看数据库和添加管理员账户
>show dbs
>use admin
>db.createUser({user:"admin",pwd:"password",roles:["root"]})
>db.auth("admin", "password")
创建一个数据库paopaoedu,
增加一个数据库管理员,用户名密码 paopaoedu//paopaoedu
插入一条数据,查询一条数据
>use paopaoedu
>db.createUser({user: "paopaoedu", pwd: "paopaoedu", roles: [{ role: "dbOwner", db: "paopaoedu" }]})
>db.auth("paopaoedu", "paopaoedu")
>db.paopaoedu.insert({"host":" https://linuxstyle.blog.csdn.net/"})
>db.paopaoedu.find()
https://www.cnblogs.com/mengyu/p/9071371.html
5.使用图形化客户端
实际开发中一般不会用命令行,这个效率太低了,推荐的客户端是robo3t,注意一定要下1.3.1不要用低版本,不然会报错不能打开数据库列表
robo3t-1.3.1-windows-x86_64-7419c406.exe
错误一:Error: Failed to execute "listdatabases" command
这是因为没有创建超级管理员账户或者数据库管理员账户
错误二:Network error while attempting to run command 'saslStart' on host 'xxx:27017'
这是因为robo3t版本低于1.3.1
6.SpringBoot集成MongoDB和Redis
MongoDB安装好以后是要在实际项目中使用的,现在都是SpringBoot。
SpringBoot集成MongoDB真的已经很简单了。考虑到redis的使用也很简单就一并集成了。
maven:
<dependencies><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-web</artifactId></dependency><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-test</artifactId><scope>test</scope><exclusions><exclusion><groupId>org.junit.vintage</groupId><artifactId>junit-vintage-engine</artifactId></exclusion></exclusions></dependency><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-data-redis</artifactId><version>2.2.4.RELEASE</version></dependency><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-data-mongodb</artifactId></dependency><dependency><groupId>cn.hutool</groupId><artifactId>hutool-all</artifactId><version>5.1.2</version></dependency><dependency><groupId>com.alibaba</groupId><artifactId>fastjson</artifactId><version>1.2.62</version></dependency></dependencies>
说明:Hutool是一个小而全的Java工具类库,通过静态方法封装,降低相关API的学习成本,提高工作效率。hutool-all这个Util的jar非常方便,比如一些时间等常见的都被集成了。https://hutool.cn/docs/#/
Hutool包含组件
一个Java基础工具类,对文件、流、加密解密、转码、正则、线程、XML等JDK方法进行封装,组成各种Util工具类,同时提供以下组件:
模块 | 介绍 |
---|---|
hutool-aop | JDK动态代理封装,提供非IOC下的切面支持 |
hutool-bloomFilter | 布隆过滤,提供一些Hash算法的布隆过滤 |
hutool-cache | 简单缓存实现 |
hutool-core | 核心,包括Bean操作、日期、各种Util等 |
hutool-cron | 定时任务模块,提供类Crontab表达式的定时任务 |
hutool-crypto | 加密解密模块,提供对称、非对称和摘要算法封装 |
hutool-db | JDBC封装后的数据操作,基于ActiveRecord思想 |
hutool-dfa | 基于DFA模型的多关键字查找 |
hutool-extra | 扩展模块,对第三方封装(模板引擎、邮件、Servlet、二维码、Emoji、FTP、分词等) |
hutool-http | 基于HttpUrlConnection的Http客户端封装 |
hutool-log | 自动识别日志实现的日志门面 |
hutool-script | 脚本执行封装,例如Javascript |
hutool-setting | 功能更强大的Setting配置文件和Properties封装 |
hutool-system | 系统参数调用封装(JVM信息等) |
hutool-json | JSON实现 |
hutool-captcha | 图片验证码实现 |
hutool-poi | 针对POI中Excel的封装 |
hutool-socket | 基于Java的NIO和AIO的Socket封装 |
可以根据需求对每个模块单独引入,也可以通过引入hutool-all
方式引入所有模块。
配置文件:
server.port=8080# Redis数据库索引(默认为0)
spring.redis.database=0
# Redis服务器地址
spring.redis.host=你的redis主机IP
# Redis服务器连接端口
spring.redis.port=6379
# Redis服务器连接密码(默认为空)
spring.redis.password=
#连接池最大连接数(使用负值表示没有限制)
spring.redis.pool.max-active=8
# 连接池最大阻塞等待时间(使用负值表示没有限制)
spring.redis.pool.max-wait=-1
# 连接池中的最大空闲连接
spring.redis.pool.max-idle=8
# 连接池中的最小空闲连接
spring.redis.pool.min-idle=0
# 连接超时时间(毫秒)
spring.redis.timeout=300## 无密码配置
## 如果存在此库就直接连接,如果不存在此库会自动创建
#spring.data.mongodb.uri=mongodb://localhost:27017/springboot_mongodb## 有密码配置
## name:用户名 / password:密码
spring.data.mongodb.uri=mongodb://paopaoedu:paopaoedu@localhost:27017/paopaoedu
model对象:
public class User implements Serializable {private static final long serialVersionUID = -1L;private String username;private String city;private Integer age;public String getCity() {return city;}public void setCity(String city) {this.city = city;}public String getUsername() {return username;}public void setUsername(String username) {this.username = username;}public Integer getAge() {return age;}public void setAge(Integer age) {this.age = age;}}
这里为了简单只是演示就写一起,不分模块了:
@RestController
public class TestController {@Autowiredprivate RedisTemplate<String,String> redisTemplate;@Autowiredprivate MongoTemplate mongoTemplate;@RequestMapping("/")public String sayHello() {String nowtime= DateUtil.now();redisTemplate.opsForValue().set("nowtime",nowtime);String rs=redisTemplate.opsForValue().get("nowtime");User u=new User();u.setUsername("霞落满天");u.setCity("银河系");u.setAge(12);mongoTemplate.insert(u);List<User> ulist=mongoTemplate.findAll(User.class);String json = JSON.toJSONString(ulist);return "HelloWorld SpringBoot "+rs+" "+json;}
}
Redis用这个客户端:redis-desktop-manager-0.8.8.384.exe
多数据源的配置
单数据源自动读配置文件,多数据源自然需要你指定数据源,然后使用注解的方式。其实不管是redis还是mongodb还是MYSQL套路都是一样的,就是定义不同数据源,然后定义多个配置工厂的bean,要用的时候注入即可。
Redis多数据源参考:
https://blog.csdn.net/liubenlong007/article/details/86477692
这个的工程化更好一点,一个数据源一个独立的class比较好
https://blog.csdn.net/huangpeigui/article/details/90518844
mongodb多数据源参考:
https://blog.csdn.net/qq_28851503/article/details/90340642
以redis为例,下面是我修改的代码,如果需要可以按需增加连接池配置。
先定义配置文件,假设我们有2个不同的Redis:
# Redis服务器地址
spring.redis.master.host=xxx.redis.rds.aliyuncs.com
# Redis服务器连接端口
spring.redis.master.port=6379
# Redis服务器连接密码(默认为空)
spring.redis.master.password=xxx# Redis服务器地址
spring.redis.follow.host=xxx.redis.rds.aliyuncs.com
# Redis服务器连接端口
spring.redis.follow.port=6379
# Redis服务器连接密码(默认为空)
spring.redis.follow.password=xxx
maven增加依赖库:
<dependency><groupId>org.apache.commons</groupId><artifactId>commons-pool2</artifactId></dependency>
定义数据源配置文件:
@Configuration
public class RedisConfig {//master@Value("${spring.redis.master.host}")private String masterHost;@Value("${spring.redis.master.port}")private String masterPort;@Value("${spring.redis.master.password}")private String masterPassword;//salve@Value("${spring.redis.follow.host}")private String salveHost;@Value("${spring.redis.follow.port}")private String salvePort;@Value("${spring.redis.follow.password}")private String salvePassword;/*** 配置lettuce连接池** @return*/@Bean@ConfigurationProperties(prefix = "spring.redis.lettuce.pool")public GenericObjectPoolConfig redisPool() {return new GenericObjectPoolConfig<>();}/*** 配置第一个数据源的** @return*/@Bean//@ConfigurationProperties(prefix = "spring.redis")public RedisStandaloneConfiguration redisConfig1() {RedisStandaloneConfiguration rsc = new RedisStandaloneConfiguration();rsc.setHostName(masterHost);rsc.setPort(Integer.parseInt(masterPort));rsc.setPassword(masterPassword);return rsc;}/*** 配置第二个数据源** @return*/@Bean//@ConfigurationProperties(prefix = "spring.redis.follow")public RedisStandaloneConfiguration redisConfig2() {RedisStandaloneConfiguration rsc = new RedisStandaloneConfiguration();rsc.setHostName(salveHost);rsc.setPort(Integer.parseInt(salvePort));rsc.setPassword(salvePassword);return rsc;}/*** 配置第一个数据源的连接工厂* 这里注意:需要添加@Primary 指定bean的名称,目的是为了创建两个不同名称的LettuceConnectionFactory** @param config* @param redisConfig1* @return*/@Bean("factory1")@Primarypublic LettuceConnectionFactory factory(GenericObjectPoolConfig config, RedisStandaloneConfiguration redisConfig1) {LettuceClientConfiguration clientConfiguration = LettucePoolingClientConfiguration.builder().poolConfig(config).build();return new LettuceConnectionFactory(redisConfig1, clientConfiguration);}@Bean("factory2")public LettuceConnectionFactory factory2(GenericObjectPoolConfig config, RedisStandaloneConfiguration redisConfig2) {LettuceClientConfiguration clientConfiguration = LettucePoolingClientConfiguration.builder().poolConfig(config).build();return new LettuceConnectionFactory(redisConfig2, clientConfiguration);}/*** 配置第一个数据源的RedisTemplate* 注意:这里指定使用名称=factory 的 RedisConnectionFactory* 并且标识第一个数据源是默认数据源 @Primary** @param factory1* @return*/@Bean("redisTemplate1")@Primarypublic RedisTemplate<String, String> redisTemplate(@Qualifier("factory1") RedisConnectionFactory factory1) {return getStringStringRedisTemplate(factory1);}/*** 配置第一个数据源的RedisTemplate* 注意:这里指定使用名称=factory2 的 RedisConnectionFactory** @param factory2* @return*/@Bean("redisTemplate2")public RedisTemplate<String, String> redisTemplate2(@Qualifier("factory2") RedisConnectionFactory factory2) {return getStringStringRedisTemplate(factory2);}/*** 设置序列化方式 (这一步不是必须的)** @param factory2* @return*/private RedisTemplate<String, String> getStringStringRedisTemplate(RedisConnectionFactory factory2) {StringRedisTemplate template = new StringRedisTemplate(factory2);template.setKeySerializer(RedisSerializer.string());template.setValueSerializer(new FastJsonRedisSerializer<>(Object.class));template.setHashKeySerializer(RedisSerializer.string());template.setHashValueSerializer(new FastJsonRedisSerializer<>(Object.class));return template;}
使用非常简单:
@Autowired@Qualifier("redisTemplate1")private RedisTemplate redisTemplate1;@Autowired@Qualifier("redisTemplate2")private RedisTemplate redisTemplate2;
Windows下安装Mongodb SpringBoot集成MongoDB和Redis多数据源相关推荐
- MongoDB学习之在Windows下安装MongoDB
前言:这篇文章主要介绍在Windows下安装MongoDB 首先,第一步,下载Windows版本的MongoDB,其中有Windows 32位和64位的MongoDB下载,下载地址为:MongoDB下 ...
- Windows下安装MongoDB
Windows下安装MongoDB 首先下载对应版本的MongoDB进行安装,安装时我选择了E盘根目录进行安装,为了方便建议文件夹命名尽量简短如(E:\MongoDB) http://download ...
- springboot集成mongodb 连接池 多数据库源,源码demo
上一篇介绍了 springboot集成mongodb 多数据库源切换 源码demo 开发环境: windows 7 idea windows64 mongodb 如果没安装运行 点这里 navicat ...
- SpringBoot集成MongoDB
SpringBoot集成MongoDB Pom依赖 <dependency><groupId>org.springframework.boot</groupId>& ...
- springboot集成mongoDB 异常认证
springboot集成mongoDB 异常认证 参考文章: (1)springboot集成mongoDB 异常认证 (2)https://www.cnblogs.com/mh-study/p/980 ...
- python开发工具及环境配置_python_在windows下安装配置python开发环境及Ulipad开发工具...
最近开始学习Python,在网上寻找一下比较好的IDE.因为以前用C#做开发的,用Visual Studio作为IDE,鉴于用惯了VS这么强大的IDE,所以对IDE有一定的依赖性. Python的ID ...
- 在python中requests模块怎么安装_Python requests模块在Windows下安装
发现一个爬虫库太方便了,而且支持python3! 安装方法在http://docs.python-requests.org/en/latest/user/install/#install很详细 只不过 ...
- mysql5.7.25安装包,Mysql5.7.25在windows下安装
在网上看到了很多安装方法,也试了很多,md,网上资源多了也是有各种坑,这里只说在windows下安装mysql5.7.25 一.下载安装包 下载后解压到自己想要安装的目录,我的是:D:\MYSQL\ ...
- windows下安装各个版本memcache扩展
这篇文章主要介绍了windows下安装php5.2.,php5.3.,php5.4.*版本的memcache扩展,需要的朋友可以参考下 注:如使用集成环境成功率低,请自行配置php apache,表示 ...
最新文章
- HTML框架IFrame结合JS在主页面和子页面间传值
- 【安装MongoDB】CentOS7 下安装NodeJs+Express+MongoDB+Redis
- u盘添加veket linux,veket要怎样才能安在u盘上?
- postgresql数据类型
- 让vue-router渲染为指定的标签
- qt 程序windows 上发布
- 简述使用计算机对会计工作的影响,简述使用计算机对会计工作的影响。
- python 安装容易吗,Python安装的步骤操作其实是件很容易的事
- Windows Server 2003网络配置与管理 域控制器的管理
- python和java哪个好-Python和Java哪个好?有什么区别?
- 使用Hyperlegder Fabric体验区块链智能合约的乐趣----编写一个简单的BookstoreApp(上)...
- vce 题库导入_PDF 题库转VCE 文件.docx
- 令你极度舒适的Swift集合类高阶函数
- Oracle安装时先决条件检测失败
- 高等数学费马定理的证明
- 怎么把视频制作成GIF动态图?这几种制作方法很简单
- Win7计划任务命令
- python中的框架是什么_python开发框架介绍
- 作为产品经理,有必要考各种证书吗?比如:pmp,npdp
- c++之 std::tie
热门文章
- MATLAB可以打开gms文件吗,GMS文件扩展名 - 什么是.gms以及如何打开? - ReviverSoft...
- mysql pt table sync_pt-table-sync 使用介绍
- javascript的Math对象和全局函数
- 使用Python,OpenCV进行图像哈希
- 1.一步一步移植ucos到stm32f103开发版(修订版)
- 【面向对象编程】(3) 类之间的交互,依赖关系,关联关系
- c++引用与指针的区别
- 设置flashfxp选中ftp密码的时候显示出来看
- 【技巧】实现饿了么Element UI的table单击(点击)编辑单元格内容
- js判断手机浏览器屏幕方向