如何使用Springboot连接MongoDB数据库(连接多数据库),以及设置SSL

SpringBoot 2.x + Mongodb配置SSL 阅读详情
AI摘要

本文详细指导如何使用Springboot连接配置SSL的MongoDB,包括单数据库连接配置和多数据库操作,并演示了如何在SpringTemplate中实现。

如何使用Springboot连接MongoDB数据库(连接多数据库),以及设置SSL

业务需求,需要能连接配置了ssl连接的mongoDB。
话不多说先连接数据库吧!
本文只介绍基于Springboot中MongoTemplate的使用。
使用前需要创建Springboot的基本工程哦,这部分就不介绍啦。

首先pom文件的引用:

<dependency>
	<groupId>org.springframework.boot</groupId>
	<artifactId>spring-boot-starter-data-mongodb</artifactId>
</dependency>

接下来就是两种方式来使用MongoTemplate了。

第一种使用配置文件配置数据源,使用默认的MongoTemplate

配置yml文件(如果是别的类型的配置文件也可以只不过格式不同而已):

spring:
  data:
    mongodb:
      host: 192.168.1.191
      port: 27017
      database: test
      authentication-database: admin
      username: user
      password: 123456

大功告成!配置完了,直接使用就行了。
接下来测试一下吧!

创建一个entity

import org.springframework.data.annotation.Id;
import org.springframework.data.mongodb.core.mapping.Document;

import java.io.Serializable;

@Document(collection = "demo_collection")  //表名
public class DemoEntity implements Serializable {
    @Id //绑定每个表中的_id字段
    private Long id;

    private String title;

    private String description;

    private String by;

    private String url;

    private String corn;

    public Long getId() {
        return id;
    }

    public void setId(Long id) {
        this.id = id;
    }

    public String getTitle() {
        return title;
    }

    public void setTitle(String title) {
        this.title = title;
    }

    public String getDescription() {
        return description;
    }

    public void setDescription(String description) {
        this.description = description;
    }

    public String getBy() {
        return by;
    }

    public void setBy(String by) {
        this.by = by;
    }

    public String getUrl() {
        return url;
    }

    public void setUrl(String url) {
        this.url = url;
    }


    public String getCorn() {
        return corn;
    }

    public void setCorn(String corn) {
        this.corn = corn;
    }
}

创建DAO层接口

public interface DemoDao {
    void saveDemo(DemoEntity demoEntity);

    void removeDemoById(Long id);

    void updateDemo(DemoEntity demoEntity);

    DemoEntity findDemoById(Long id);

    List<DemoEntity> findDemos();
}
@Repository
public class DemoDaoImpl1 implements DemoDao {

    @Autowired
    private MongoTemplate mongoTemplate;

    @Override
    public void saveDemo(DemoEntity demoEntity) {
        mongoTemplate.save(demoEntity);
    }

    @Override
    public void removeDemoById(Long id) {
        Query query = new Query(Criteria.where("id").is(id));
        mongoTemplate.findAllAndRemove(query,DemoEntity.class);
    }

    @Override
    public void updateDemo(DemoEntity demoEntity) {
        Query query = new Query(Criteria.where("id").is(demoEntity.getId()));

        Update update = new Update();
        update.set("title", demoEntity.getTitle());
        update.set("description", demoEntity.getDescription());
        update.set("by", demoEntity.getBy());
        update.set("url", demoEntity.getUrl());
        update.set("corn", demoEntity.getCorn());

        mongoTemplate.updateFirst(query, update, DemoEntity.class);
    }

    @Override
    public DemoEntity findDemoById(Long id) {
        Query query = new Query(Criteria.where("id").is(id));
        DemoEntity demoEntity = mongoTemplate.findOne(query, DemoEntity.class);
        return demoEntity;
    }

    @Override
    public List<DemoEntity> findDemos() {
        return mongoTemplate.findAll(DemoEntity.class);
    }
}

很简单吧!直接使用就可以,用Query 可以执行一些特殊的筛选操作。以上测试没有问题哦,直接可以用,如果不好用那就排查本地环境吧。

第二种多数据源配置

首先我们需要多数据源的基本配置信息,本文我介绍的是同一个数据库URL中创建的多个database的操作。

yml配置文件:

mongodb:
  url: mongodb://user:123456@192.168.1.191:27017/
  database:
    test: test
    test1: test1

如果需要连个多个url也是可以的只要多配置几个url就可以了。
我们还是使用上面创建的entity。

首先创建@Bean:

@Configuration
public class MongoDBConfig {

    @Value("${mongodb.url}")
    private String mongoUrl;

    @Value("${mongodb.database.test}")
    private String test;

    @Value("${mongodb.database.test1}")
    private String test1;

    @Primary
    @Bean
    public  MongoTemplate mongoTemplate() {
        return new MongoTemplate(
                new SimpleMongoClientDatabaseFactory(MongoClients.create(mongoUrl), test));
    }

    @Bean(name = "TemplateTest")//数据源1的database使用test
    public  MongoTemplate mongoTemplateTest() {
        return new MongoTemplate(
                new SimpleMongoClientDatabaseFactory(MongoClients.create(mongoUrl), test));
    }

    @Bean(name = "TemplateTest1")//数据源2的database使用test1
    public MongoTemplate mongoTemplateTest1() {
        return new MongoTemplate(
                new SimpleMongoClientDatabaseFactory(MongoClients.create(mongoUrl), test1));
    }
    // 开启事务
    @Bean
    MongoTransactionManager transactionManager(MongoDatabaseFactory factory){
        return new MongoTransactionManager(factory);
    }
}

接下来,使用:

@Repository
public class DemoDaoImpl implements DemoDao {

    @Autowired
    @Qualifier("TemplateTest")
    private MongoTemplate mongoTemplateTest;

    @Autowired
    @Qualifier("TemplateTest1")
    private MongoTemplate mongoTemplateTest1;

    @Override
    public void saveDemo(DemoEntity demoEntity) {
        mongoTemplateTest1.save(demoEntity);
    }

    @Override
    public void removeDemoById(Long id) {
        Query query = new Query(Criteria.where("id").is(id));
        mongoTemplateTest.findAllAndRemove(query,DemoEntity.class);
    }

    @Override
    public void updateDemo(DemoEntity demoEntity) {
        Query query = new Query(Criteria.where("id").is(demoEntity.getId()));

        Update update = new Update();
        update.set("title", demoEntity.getTitle());
        update.set("description", demoEntity.getDescription());
        update.set("by", demoEntity.getBy());
        update.set("url", demoEntity.getUrl());
        update.set("corn", demoEntity.getCorn());

        mongoTemplateTest.updateFirst(query, update, DemoEntity.class);
    }

    @Override
    public DemoEntity findDemoById(Long id) {
        Query query = new Query(Criteria.where("id").is(id));
        DemoEntity demoEntity = mongoTemplateTest.findOne(query, DemoEntity.class);
        return demoEntity;
    }

    @Override
    public List<DemoEntity> findDemos() {
        return mongoTemplateTest.findAll(DemoEntity.class);
    }
}

创建的Bean就是对应的数据库,如果使用多个URL那就多配置URL然后设置上就好了,很简单的。

接下来就是SSL的设置了
只要在能初始化跑过的地方加上以下代码

  		String pass = "changeit";
        System.setProperty("javax.net.ssl.trustStore", "D:\\source\\test\\sichuanAlarm\\src\\main\\resources\\rootCert");
        System.setProperty("javax.net.ssl.trustStorePassword", pass);

pass 是证书的密码,使用openssl创建证书的时候用的密码相同。
rootCert就是证书路径啦!
完美解决。

四、Springboot连接mongodb Springboot连接mongodb,mongodb是一个非关系型数据库,文档型数据库,存储的内容是JSON格式的文档,文档中可以包含各种类型的数据。以上就是Springboot连接MongoDB的基本使用了,更多高级用法可以参考Spring Data MongoDB官方文档。User是实体类,Long是主键类型。 阅读详情

相关推荐

SpringBoot集成MongoDB认证失败:UncategorizedMongoDbException: error 13 (Unauthorized)排查与修复

本文详细解析了SpringBoot集成MongoDB时常见的`UncategorizedMongoDbException: error 13 (Unauthorized)`认证失败问题,从错误现象分析到服务端认证机制,再到SpringBoot的正确配置姿势,提供了全面的排查与修复方案。文章还涵盖了高级排查技巧、生产环境最佳实践以及其他认证方式,帮助开发者快速解决MongoDB认证问题。

weixin_30252709的博客 561

Spring Boot 多个MongoDB 数据源配置与实现

实现原理: Spring Boot中通过依赖spring-boot-starter-data-mongodb,来实现spring-data-mongodb的自动配置,我们最终使用MongoDB操作数据库是通过MongoTemplate类完成,他提供增删改查等方法 从上图可以看出MongoTemplate的连接配置可由MongoDbFactory 生成,从而提供了自定义连接的可能, ...

亲测,只为展现最完美的有效! 1万+

Edge浏览器IE模式失效?最新142版本隐藏按钮的3种解决方案

本文针对Edge浏览器142版本中IE模式按钮消失的问题,提供了3种实用解决方案,包括注册表修改、手动添加网站到IE模式列表和企业策略部署方案,帮助用户解决兼容性问题,确保老旧系统正常访问。

weixin_28308325的博客 505

Spring Boot怎么实现配置多个Mongodb数据源

Spring Boot怎么实现配置多个Mongodb数据源 本文需要读者对Spring Boot整合Mongodb有基本了解 目录 环境介绍 配置单个Mongodb数据源 配置多个MongoDB数据源 环境介绍 软件名称 软件版本 Spring Boot 2.5.3 Maven 3.6.3 MongoDB 4.2.5 配置单个Mongodb数据源 在application.properties配置文件中增加如下配置 spring.data.mongodb.uri: mon

Java技术栈,分享不断学习、不断超越、不断积累的历程! 2402

Ambari 3.0.0 + BigTop 3.3.0 源码编译与集群部署指南(Kylin V10 / aarch64)

仅仅是针对“应用商店目录(Applications Catalog)”的一个外围附属子模块(它不是 YARN 监控大盘,不影响 YARN UI 网页的主体使用),我们可以采用。自带的 Node 二进制是 x86_64 版本,在 ARM64(aarch64)容器上无法执行(Exit value: 126)。:Ambari Server/Agent 使用 JDK 17,BigTop 大数据组件(Hadoop/HBase/Spark 等)使用 JDK 8。,源码中包含 x86 特定的原生二进制文件。

amumu1992的博客 491

WPS接入DeepSeek,实现AI辅助功能

总的来说,借助 WPS 中宏功能与 DeepSeek 大模型的结合,文档处理、内容创作和数据分析等任务都能更加智能化、自动化。这不仅大幅提升了工作效率,也为办公场景带来了全新的智能化办公体验。

运维老生常谈 3806

使用 Spring Data MongoDB 连接到多个数据库

在本文中,我们了解了如何使用 Spring Data MongoDB 创建多个连接。我们看到了如何添加凭据以进行身份验证。最重要的是,我们已经了解了如何创建配置,其中之一必须是主 bean。最后,我们使用 Docker 和 Spring Boot 测试针对正在运行的 MongoDB 实例添加了一些测试用例.

白石的专栏 2072

STC15单片机实战项目软件开发第四讲 - 按键检测(状态机)

软件开发第四讲 - 按键检测(状态机) 一、工具链接 1、Keil c51 UV4 https://yunpan.360.cn/surl_yrIfYYmeRFk 2、STC-ISP下载软件 https://yunpan.360.cn/surl_yxH4CuUUvI3 二、学习板获取方式 方法1:自己设计PCB,自行打板焊接; 方法2:用群主设计的PCB,自行打板焊接; 方法3:向群主购买,淘宝链接...

硬件家园 3048

SpringBoot2开启mongodbSSL连接与连接池配置

SpringBoot2开启mongodbSSL连接与连接池配置 本文基于springboot2采用host方式配置mongodb ip连接,官方也支持uri方式连接mongodb(mongodb://ip:端口/数据库名称)。 POM.xml配置 <parent> <groupId>org.springframework.boot</groupId> ...

小JH的博客 3028

Android Termux 安装Kali Linux 或 kali Nethunter史诗级详细教程

Termux 安装kali

风云小虾米的博客 6万+

一步一步搭建S32K14x的AutoSar项目----MCAL工程创建及说明

一步一步搭建S32K14X的Autosar项目--MCAL工程创建及说明

wo580231的博客 2496

springboot 连接mongodb 属性配置 连接超时

连接URI提供了一组指令,驱动程序使用这些指令连接到MongoDB部署。它指导驱动程序如何连接到MongoDB,以及连接时的行为。本节介绍驱动程序支持的MongoDB连接和身份验证选项。您可以将连接选项作为连接URI的参数传递,以指定客户端的行为。wtimeoutMS 选项。DNS种子列表连接格式。

qq_39725872的博客 2083

逍遥模拟器改真机参数全指南:从ARM伪装到电池传感器模拟

本文提供逍遥模拟器深度伪装实战指南,重点讲解如何通过修改ARM架构、系统属性和模拟传感器数据,使其在硬件信息、电池状态等维度逼近真实设备,有效规避应用检测。文章详细介绍了使用Magisk模块、LSPosed框架进行设备指纹伪装和动态数据模拟的策略,帮助用户实现从静态信息到动态行为的全方位真机模拟。

weixin_29279101的博客 453

SpringBoot 整合 MongoDB 6 以上版本副本集及配置 SSL / TLS 协议

SpringBoot 快速整合 MongoDB 6 以上版本副本集及配置 SSL / TLS 协议认证。

weixin_43322048的博客 1792

VB摄像头监控

该VB模块可对摄像头捕获的画面进行录像等,可在创建的窗口进行控制

汉书HE8,好用的汇编代码编写工具

汉书HE8,好用的汇编代码编写工具早期编写汇编代码所用功能强大

springboot链接mongodb采用SSL方式

springboot链接mongodb采用SSL方式

liuwenjun05101的博客 1528

Camera2Demo

在Camera2 的基础上进行封装,使得Camera2一堆初始化逻辑与Activity分离,降低耦合度,完成预览拍照并保存的操作

SpringBoot整合MongoDB实现自定义连接池

依赖如下 <!--SpringBoot2.1.6版本需要这个依赖才能用@ConfigurationProperties注解--> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>sp...

qq_36989302的博客 1529

ssm框架搭建

这个是一个在idea上成功跑起来的ssm框架项目,保存在这里方便以后使用直接下载

Linux 中使用 docker-compose 部署 MongoDB 6 以上版本副本集及配置 SSL / TLS 协议

docker-compose 部署 MongoDB 6 版本以上副本集,并实现 SSL / TLS 加密认证和 Client 连接相关配置。

weixin_43322048的博客 2206

简单的mongodb的查询使用

最近接触到了 , mongodb 就去简单的看了一下他的基本使用,查询 整合进springboot的时候就不用自己去像mysql一样一定要创建一个对应的数据库, 然后才可以启动这个项目, 而是 去mongodb中自己去查找, 是否存在这个数据库, 如果没有就自己创建一个, 使用这个连接名称的nosql库 # mysql 配置 # 如果没有这个数据库 (test_mysql) , druid 连接池就会报错, 项目启动失败 spring.datasource.type=com.alibaba.druid.po

树暖 316

SpringBoot整合MongoDB

MongoDB MongoDB是 open-source NoSQL 文档数据库,它使用 JSON-like schema 而不是传统的 table-based 关系数据。 Spring Boot 提供了一些使用 MongoDB 的便利,包括spring-boot-starter-data-mongodb和spring-boot-starter-data-mongodb-reactiv...

qq_29860591的博客 382

mongodb jar包_Springboot官方例子--使用MongoDB操作数据库

继续翻译Springboot官方例子,本指南将指导您完成使用Spring Data MongoDB构建一个应用程序的过程,该应用程序将数据存储在基于文档的MongoDB数据库中,并从MongoDB中检索数据。你将学会MongoDB安装及使用方法。MongoDB 是一个基于分布式文件存储的数据库。由 C++ 语言编写,介于关系数据库和非关系数据库之间的产品,是非关系数据库当中功能最丰富,最像关系数据...

weixin_39685836的博客 401

MongoDB:入门(二)

MongoDB是一个开源的NoSQL数据库管理系统,采用文档导向的数据模型,以JSON/BSON格式存储数据。相对于传统的关系型数据库,MongoDB更灵活,适用于大数据和实时应用场景。

qq_35763697的博客 808

SpringBoot项目配置SSL后,WebSocket连接失败?手把手教你解决WSS协议问题

本文详细解析了SpringBoot项目配置SSL后WebSocket连接失败的常见问题及解决方案。从WS与WSS协议的核心差异入手,提供SSL配置要点、环境测试方案及完整排查步骤,帮助开发者快速解决WSS协议连接问题,确保实时通信功能稳定运行。

weixin_30435261的博客 508

Spring boot 配置Mongodb

Spring boot 为mongodb提供了自动配置(MongoAutoConfiguration和MongoDataAutoConfiguration),主要属性如下(前缀spring.data.mongodb): mongo 2.x的配置(不支持多个host): ...

chongqunmo9462的博客 818

MongoDB快速入门-通过docker安装MongoDB,MongoDB的基本操作,索引,执行计划,SpringBoot整合MongoDB,MongoDB认证

1、MongoDB入门 1.1、MongoDB简介 MongoDB是一个基于分布式文件存储的数据库。由C++语言编写。旨在为WEB应用提供可扩展的高性能数据存储解决方案。 MongoDB是一个介于关系数据库和非关系数据库之间的产品,是非关系数据库当中功能最丰富,最像关系数据库的,它支持的数据结构非常松散,是类似json的bson格式,因此可以存储比较复杂的数据类型。 MongoDB最大的特点是它支持的查询语言非常强大,其语法有点类似于面向对象的查询语言,几乎可以实现类似关系数据库单表查询的绝大部分功能,而且

weixin_45195665的博客 332

Spring Data Mongo(升至3.0.3配置)多数据源,SSL链接,实现无实体类映射主从读写分离

博客有个好处,就是可以在涨人气的同时当个备忘录用。 最近有个需求,有一个远程的mongo数据库,里面有好几个集合,需要每天定时增量更新到本地数据库,同时要保证数据的安全性,防止中途被抓包暴露。 实现思路就是多数据源,设置定时器,主读从写,然后使用SSL加密。然而以前mongo用的很少,就是一个简单的CRUD功能,所以一开始就遇到很多坑。 一、SpringBoot配置多数据源 首先在pom中导入依赖 <!-- mongodb --> <dependency>

燎原 2494
上一篇: linux启动的service服务无法获取当前系统的环境变量的值
下一篇: linux 安装 jdk过程
哥德巴赫一号
博客等级 码龄7年 2粉丝 4原创
评论 1
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值