当前位置: 首页 > news >正文

【项目实战】Spring Boot项目整合Jetty、MySQL、Redis和MongoDB

本专栏将为大家总结项目实战相关的知识! 点击即可关注本专栏,获取更多知识!

文章目录

  • 前言
  • 一、配置Jetty服务器
    • 1.引入Jetty依赖库
    • 2.配置YML文件
  • 二、配置MySQL、Redis和MongoDB数据库
    • 1.引入连接池依赖
    • 2.引入数据库依赖
    • 3.配置YML文件
  • 结语


前言

一、配置Jetty服务器

默认情况下,SpringBoot集成了Tomcat服务器,但是在高并发的WebSocket环境下,Jetty比Tomcat更加适合,所以我们需要把Tomcat替换成Jetty。

1.引入Jetty依赖库

在pom.xml文件中,添加Jetty依赖库

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

除了加入Jetty的依赖,我们还需要剔除掉SpringBoot捆绑的Tomcat服务器

<dependency>
	<groupId>org.springframework.boot</groupId>
	<artifactId>spring-boot-starter-web</artifactId>
    <!--这里是新加的内容-->
	<exclusions>
		<exclusion>
			<groupId>org.springframework.boot</groupId>
      <artifactId>spring-boot-starter-tomcat</artifactId>
		</exclusion>
	</exclusions>
</dependency>

2.配置YML文件

默认情况下,SpringBoot项目的配置文件是properties文件,你要把这个文件改成yml文件。

server:
   #jetty配置
  jetty:
    threads:
      acceptors: 4
      selectors: 8
  port: 8090
  servlet:
    #启动时使用路径
    context-path: /test
    multipart:
      max-request-size: 10MB
      max-file-size: 2MB

二、配置MySQL、Redis和MongoDB数据库

因为这里我们使用到Mysql,那么我们就需要为Mysql增加线程池依赖。同时我们也需要为Redis增加Jedis的依赖。

Jedis是基于java语言的redis客户端,它集成了redis的命令操作,提供了连接池管理。

这里要注意Spring Boot 1.x 的版本默认采用的连接池技术是 Jedis,我们就不需要显式的为项目添加依赖,但是Spring Boot 2.0 以上版本默认连接池是 Lettuce,这时候我们如果采用 Jedis,需要排除 Lettuce 的依赖。

1.引入连接池依赖

因为druid连接池性能比dbcp、c3p0高很多,所以我们一般使用druid连接池。

<!-- druid连接池依赖 -->
<dependency>
	<groupId>com.alibaba</groupId>
	<artifactId>druid-spring-boot-starter</artifactId>
	<version>1.1.13</version>
</dependency>

<!-- spring data redis 组件 -->
<dependency>
	<groupId>org.springframework.boot</groupId>
	<artifactId>spring-boot-starter-data-redis</artifactId>
	<!--排除 Lettuce 的依赖-->
	<exclusions>
		<exclusion>
			<groupId>io.lettuce</groupId>
			<artifactId>lettuce-core</artifactId>
		</exclusion>
	</exclusions>
</dependency>
		
<!-- 加入jedis 依赖 -->
<dependency>
	<groupId>redis.clients</groupId>
	<artifactId>jedis</artifactId>
</dependency>

2.引入数据库依赖

如果上面你在排除 Lettuce 的依赖的步骤中已经导入了Redis依赖,这里就不需要再次导入Redis依赖了。

<!--MySQL驱动-->
<dependency>
	<groupId>mysql</groupId>
	<artifactId>mysql-connector-java</artifactId>
	<scope>runtime</scope>
</dependency>

<!--mongodb数据库-->
<dependency>
	<groupId>org.springframework.boot</groupId>
	<artifactId>spring-boot-starter-data-mongodb</artifactId>
</dependency>

<!--redis数据库-->
<dependency>
	<groupId>org.springframework.boot</groupId>
	<artifactId>spring-boot-starter-data-redis</artifactId>
</dependency>

3.配置YML文件

在配置YML文件的时候特别要注意在:后面有一个空格!

spring:
  #MySQL数据库
  datasource:
    type: com.alibaba.druid.pool.DruidDataSource
    druid:
      driver-class-name: com.mysql.cj.jdbc.Driver
      url: jdbc:mysql://localhost:3306/数据库名?useUnicode=true&characterEncoding=UTF-8&serverTimezone=Asia/Shanghai&nullCatalogMeansCurrent=true
      username: 用户名
      password: 用户密码
      #初始连接数,默认0
      initial-size: 2
      #最大连接数,默认8
      max-active: 4
      #最小闲置数
      min-idle: 4
      ##获取连接的最大等待时间,单位毫秒
      max-wait: 60000
      #失效连接主要通过test-while-idle保证
      #如果获取到了不可用的数据库连接,一般由应用处理异常。
      test-while-idle: true
      #test-on-borrow和test-on-return在生产环境一般是不开启的,主要是性能考虑。
      test-on-borrow: false
      test-on-return: false

  #redis数据库
  redis:
    database: 0
    host: localhost
    #端口号
    port: 6379
    password: 数据库密码
    #配置jedis
    jedis:
      pool:
        # 最大连接数,默认8
        max-active: 1000
        # 最大连接阻塞等待时间,单位毫秒,默认-1ms
        max-wait: -1ms
        # 最大空闲连接,默认8
        max-idle: 16
        # 最小空闲连接,默认0
        min-idle: 8
 
  #mongodb数据库
  data:
    mongodb:
      host: localhost
      #端口号
      port: 27017
      database: 数据库名
      # 登录用户所在的数据库
      authentication-database: admin
      username: 用户名
      password: 用户密码

结语

到这里我们Spring Boot项目对Jetty、MySQL、Redis和MongoDB的整合就完成了,我们启动Spring Boot项目如果控制台没有报错就说明你成功了!

🏳️‍🌈点击可关注本专栏,学习更多知识!

相关文章:

  • Opencv项目实战:15 手势缩放图片
  • 猿创征文|11个开发者必备工具,赶快收藏
  • 零零信安-DD数据泄露报警日报【第40期】
  • 马斯克的这波神操作,让我意识到保持写代码的能力有多重要
  • Android入门第19天-Android里的RatingBar的使用
  • [会议分享]2022年欧洲计算机科学与信息技术会议(ECCSIT 2022)
  • Python --- 面向对象
  • C语言经典题目之汉诺塔问题超详解(4000字数只为能让你听懂这个题目)
  • 信号线上串接电阻的作用
  • OpenFeign的实现原理(附Feign和OpenFeign的区别)
  • 不同性质生物素叠氮试剂Biotin-azide,Biotin-PEG2/PEG3/PEG4-azide特点分享
  • 【Linux】信号
  • 网络协议:透彻解析HTTPS协议
  • 编译 mesa
  • 健身房信息管理系统(PHP+Html+MySQL)
  • 【附node操作实例】redis简明入门系列—字符串类型
  • EventListener原理
  • JavaScript异步流程控制的前世今生
  • java多线程
  • Js基础知识(一) - 变量
  • Koa2 之文件上传下载
  • MyEclipse 8.0 GA 搭建 Struts2 + Spring2 + Hibernate3 (测试)
  • Node + FFmpeg 实现Canvas动画导出视频
  • node.js
  • nodejs:开发并发布一个nodejs包
  • React Transition Group -- Transition 组件
  • react-core-image-upload 一款轻量级图片上传裁剪插件
  • SpriteKit 技巧之添加背景图片
  • Storybook 5.0正式发布:有史以来变化最大的版本\n
  • VirtualBox 安装过程中出现 Running VMs found 错误的解决过程
  • 阿里云应用高可用服务公测发布
  • 翻译--Thinking in React
  • 分享自己折腾多时的一套 vue 组件 --we-vue
  • - 概述 - 《设计模式(极简c++版)》
  • 基于组件的设计工作流与界面抽象
  • 记录一下第一次使用npm
  • 每天10道Java面试题,跟我走,offer有!
  • 区块链分支循环
  • ​​​​​​​​​​​​​​Γ函数
  • #我与Java虚拟机的故事#连载14:挑战高薪面试必看
  • ()、[]、{}、(())、[[]]命令替换
  • (10)ATF MMU转换表
  • (附源码)spring boot车辆管理系统 毕业设计 031034
  • (学习日记)2024.04.10:UCOSIII第三十八节:事件实验
  • (转载)(官方)UE4--图像编程----着色器开发
  • .bat批处理(四):路径相关%cd%和%~dp0的区别
  • .NET 反射 Reflect
  • .php结尾的域名,【php】php正则截取url中域名后的内容
  • @ 代码随想录算法训练营第8周(C语言)|Day57(动态规划)
  • @angular/cli项目构建--Dynamic.Form
  • @ModelAttribute注解使用
  • @RestControllerAdvice异常统一处理类失效原因
  • []常用AT命令解释()
  • [145] 二叉树的后序遍历 js
  • [CLR via C#]11. 事件