1. 使用springboot做一个音乐播放器软件项目【前期规划】

背景:

现在大部分音乐软件都是要冲会员才可以无限常听的。对于喜欢听音乐的小伙伴,资金又比较紧张,是那么的不友好。作为程序员的我,也是喜欢听着歌,敲着代码。

最近就想做一个音乐播放器的软件,在内网中使用。

注意:
本项目只实现播放音乐和后台管理系统。
不分享任何音乐歌曲资源。

本系统使用的技术和实现逻辑不是特别的难。
特别适合刚学编程的小伙伴学习参考。

如果有小伙伴有兴趣可以订阅此专栏 ,后续会持续更新直到音乐播放器这个软件完成。

我会尽可能详细的以文字的形式分享出来 从0到1 写出来一个音乐播放器项目。

使用到的重点技术:

后端框架: Spring Boot 2.7.18

数据库依赖:mybatis-plus 3.5.7

文件上传依赖:x-file-storage

数据库迁移依赖:flyway-core

前端:vue + Electron(可以打包成exe客户端)

数据库:mysql8.0

因核心分享 的是java编程。后续文章中 基本分享的都是java语言的代码。
对于前端的代码,在文章中就不分享了。只会分享一下页面效果。
当然项目完结后,我会把前后端项目源码打包好放到最后一篇文章中。

实现需求:

管理后台:

账号管理、专辑管理、歌手管理、歌曲管理

客户端:

首页、歌曲搜索、专辑列表、歌手列表、音乐播放、我喜欢的、个人中心、基础设置

大概核心功能会实现以上功能

后端框架搭建:
1. java环境安装 可参考下面2篇博客

java环境:
https://blog.csdn.net/Drug_/article/details/120211153

maven安装:
https://blog.csdn.net/Drug_/article/details/120693846

2. 编辑器的安装和配置(IDEA编辑器) 参考下面两篇博客
https://blog.csdn.net/Drug_/article/details/119558729
https://blog.csdn.net/Drug_/article/details/119529864

3. mysql8 数据库的安装

我这里是直接安装的windows 的集成工具:phpStudy

对于 phpStudy 这个工具 写PHP的程序员肯定不陌生。

为什么要安装这个呢,因为他在windows 下 编程开发需要一些软件 他很方便。

你把这个软件安装后 他里面可以安装 mysql redis 等 我们开发需要的软件,这样你就不需要一一 再去各大官网上下载安装了 所以我在做java 开发的时候 也会使用别的语言的软件。方便我们的开发

4. mysql 管理工具 安装:Navicat

对于这个工具,我就不多解释了,玩过数据库的小伙伴,应该基本上都用过这个软件。自行百度即可。

5. spring boot 框架搭建 打开IDEA编辑器开始创建项目

第一步:
第二步: 这些 大家自主填写即可。 java版本选 java8

创建即可。
先实现 让我们 springboot 正常启动
第一步:

我们来把我们所需要的依赖导入到我们项目里即可。

也就是 修改 我们项目下的 pom.xml文件

内容如下:我已经给大家整理好了。

xml 复制代码
<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
         xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 https://maven.apache.org/xsd/maven-4.0.0.xsd">
    <modelVersion>4.0.0</modelVersion>
    <groupId>com.jsonl</groupId>
    <artifactId>music-java</artifactId>
    <version>0.0.1-SNAPSHOT</version>
    <name>json-base</name>
    <description>json-base</description>
    <properties>
        <java.version>1.8</java.version>
        <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
        <project.reporting.outputEncoding>UTF-8</project.reporting.outputEncoding>
        <spring-boot.version>2.7.18</spring-boot.version>
    </properties>
    <dependencies>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-web</artifactId>
        </dependency>

        <dependency>
            <groupId>com.mysql</groupId>
            <artifactId>mysql-connector-j</artifactId>
            <scope>runtime</scope>
        </dependency>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-configuration-processor</artifactId>
            <optional>true</optional>
        </dependency>
        <dependency>
            <groupId>org.projectlombok</groupId>
            <artifactId>lombok</artifactId>
            <optional>true</optional>
        </dependency>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-test</artifactId>
            <scope>test</scope>
        </dependency>
<!--        mybatis + 代码生成器-->
        <dependency>
            <groupId>com.baomidou</groupId>
            <artifactId>mybatis-plus-boot-starter</artifactId>
            <version>3.5.7</version>
        </dependency>
        <dependency>
            <groupId>com.baomidou</groupId>
            <artifactId>mybatis-plus-generator</artifactId>
            <version>3.5.7</version>
        </dependency>
        <dependency>
            <groupId>org.apache.velocity</groupId>
            <artifactId>velocity-engine-core</artifactId>
            <version>2.3</version>
        </dependency>
<!--        druid  mysql连接驱动更换-->
        <dependency>
            <groupId>com.alibaba</groupId>
            <artifactId>druid-spring-boot-starter</artifactId>
            <version>1.2.23</version>
        </dependency>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-data-redis</artifactId>
        </dependency>
        <!-- redis依赖commons-pool 这个依赖一定要添加 -->
        <dependency>
            <groupId>org.apache.commons</groupId>
            <artifactId>commons-pool2</artifactId>
            <version>2.11.1</version>
        </dependency>
        <dependency>
            <groupId>org.apache.httpcomponents</groupId>
            <artifactId>httpclient</artifactId>
            <version>4.5.13</version>
        </dependency>
        <dependency>
            <groupId>com.auth0</groupId>
            <artifactId>java-jwt</artifactId>
            <version>3.8.1</version>
        </dependency>
<!--        优雅的使用api-->
        <dependency>
            <groupId>com.dtflys.forest</groupId>
            <artifactId>forest-spring-boot-starter</artifactId>
            <version>1.5.36</version>
        </dependency>

        <dependency>
            <groupId>com.alibaba</groupId>
            <artifactId>fastjson</artifactId>
            <version>2.0.49</version>
        </dependency>

        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-aop</artifactId>
        </dependency>
        <!-- Flyway 数据库迁移 依赖 他会根据spring boot版本 默认下载兼容依赖 不需要写版本号  -->
        <dependency>
            <groupId>org.flywaydb</groupId>
            <artifactId>flyway-core</artifactId>
        </dependency>
        <dependency>
            <groupId>org.flywaydb</groupId>
            <artifactId>flyway-mysql</artifactId>
        </dependency>


        <dependency>
            <groupId>org.dromara.x-file-storage</groupId>
            <artifactId>x-file-storage-spring</artifactId>
            <version>2.2.1</version>
        </dependency>
        <dependency>
            <groupId>com.aliyun.oss</groupId>
            <artifactId>aliyun-sdk-oss</artifactId>
            <version>3.16.1</version>
        </dependency>
        <dependency>
            <groupId>com.qcloud</groupId>
            <artifactId>cos_api</artifactId>
            <version>5.6.137</version>
        </dependency>


    </dependencies>
    <dependencyManagement>
        <dependencies>
            <dependency>
                <groupId>org.springframework.boot</groupId>
                <artifactId>spring-boot-dependencies</artifactId>
                <version>${spring-boot.version}</version>
                <type>pom</type>
                <scope>import</scope>
            </dependency>
        </dependencies>
    </dependencyManagement>

    <build>
        <plugins>
            <plugin>
                <groupId>org.apache.maven.plugins</groupId>
                <artifactId>maven-compiler-plugin</artifactId>
                <version>3.8.1</version>
                <configuration>
                    <source>1.8</source>
                    <target>1.8</target>
                    <encoding>UTF-8</encoding>
                </configuration>
            </plugin>
        </plugins>
    </build>

</project>

第二步: 增加配置文件信息

这里我没有用 yml 文件 用的是 properties 这种类型的配置文件

内容如下:

xml 复制代码
server.port=18023
spring.application.name=link-music
spring.profiles.active=dev
#请求限制
spring.servlet.multipart.max-file-size=100MB
spring.servlet.multipart.max-request-size=500MB
#===========================数据库==========================================
spring.datasource.type=com.alibaba.druid.pool.DruidDataSource
spring.datasource.driver-class-name=com.mysql.cj.jdbc.Driver
spring.datasource.url=jdbc:mysql://127.0.0.1:3306/link_music?useUnicode=true&characterEncoding=utf8&serverTimezone=GMT%2B8
spring.datasource.username=root
spring.datasource.password=root
# 以下 Druid的配置 虽然编辑器没提示 但是经过测试 是生效的
# Druid  数据源初始化时创建的连接数
spring.datasource.druid.initial-size=10
#数据源允许的最大活跃连接数
spring.datasource.druid.max-active=100
#数据源维护的最小空闲连接数
spring.datasource.druid.min-idle=3
#当没有可用连接时,获取连接的最大等待时间
spring.datasource.druid.max-wait=5000
#是否在连接池中缓存预编译的语句
spring.datasource.druid.pool-prepared-statements=true
#每个连接可以缓存的最大预编译语句数
spring.datasource.druid.max-pool-prepared-statement-per-connection-size=100
# 配置 AOP 监控的目标模式
#spring.datasource.druid.aop-patterns=com.jsonl.*
#不用这个
#mybatis-plus.configuration.log-impl=org.apache.ibatis.logging.stdout.StdOutImpl
mybatis-plus.configuration.log-impl=org.apache.ibatis.logging.slf4j.Slf4jImpl
#============================redis=========================================
#spring.redis.host=127.0.0.1
#spring.redis.port=6379
#spring.redis.database=32
#spring.redis.password=123456
# Redis Lettuce 客户端配置
#spring.redis.lettuce.pool.max-active=500
#spring.redis.lettuce.pool.max-wait=10
#spring.redis.lettuce.pool.max-idle=8
#spring.redis.lettuce.pool.min-idle=2
#============================flyway=========================================
#是否启用flyway
spring.flyway.enabled=true
# 禁止清理数据库表
# clean 操作是 Flyway 的一个功能,可以清空数据库中的所有对象(比如表、视图、存储过程等),
#以便进行全新的数据库迁移。在开发和测试阶段,这可能是有用的,因为它可以确保每次都从一个干净的数据库状态开始运行。
#但在生产环境中,执行 clean 操作可能会导致数据丢失,因此通常需要禁用它
spring.flyway.clean-disabled=true
# 如果数据库不是空表,需要设置成 true,当迁移数据库存在但没有元数据的表时,自动执行基准迁移
#当数据库中不存在迁移历史记录表时,Flyway 会自动创建该表,并将当前已经存在的数据库对象标记为已迁移状态。
#当数据库中存在迁移历史记录表,但版本号低于最新的迁移脚本版本时,
#Flyway 也会自动创建一个基线版本,从而将现有的数据库对象标记为已迁移状态,并开始应用最新的迁移脚本。
#这样做的目的是确保在已有数据库上使用 Flyway 进行迁移时,无论数据库是否已经有迁移历史记录,
#都能够正确地进行迁移操作。这在初始化应用程序时特别有用,因为它允许你在部署应用程序到新环境时,
# 自动初始化数据库并应用最新的迁移脚本。
spring.flyway.baseline-on-migrate=true
spring.flyway.encoding=UTF-8
# 迁移sql脚本文件存放路径,默认db/migration
# 如果配置完这个路径,也手动创建了这个目录  启动服务 一直报错 这个目录找不到
# 可在目录里创建一个 .keep的空文本文件,以确保该目录在应用程序启动期间被编译并可用,以避免错误。
spring.flyway.locations=classpath:db/migration
# 迁移sql脚本文件名称的前缀,默认V 前缀标识,默认值 V 表示 Versioned, R 表示 Repeatable, U 表示 Undo
# Flyway 将 SQL 文件分为 Versioned 、Repeatable 和 Undo 三种:
# Versioned 用于版本升级, 每个版本有唯一的版本号并只能执行一次.
# Repeatable 可重复执行, 当 Flyway检测到 Repeatable 类型的 SQL 脚本的 checksum 有变动,
# Flyway 就会重新应用该脚本. 它并不用于版本更新, 这类的 migration 总是在 Versioned 执行之后才被执行。
# Undo 用于撤销具有相同版本的版本化迁移带来的影响。但是该回滚过于粗暴,过于机械化,一般不推荐使用。
#  一般建议使用 Versioned 模式来解决
spring.flyway.sql-migration-prefix=V
# 迁移sql脚本文件名称的分隔符,默认2个下划线__
spring.flyway.sql-migration-separator=__
# 迁移sql脚本文件名称的后缀
spring.flyway.sql-migration-suffixes=.sql
# 迁移时是否进行校验,默认true
spring.flyway.validate-on-migrate=true
# 可把这个参数设置 为true 是否可以无序执行  他默认是false 严格按照 顺序执行
spring.flyway.out-of-order=true
#开始执行基准迁移时对现有的schema的版本打标签,默认值为1
#spring.flyway.baseline-version=1
#===========================优雅的使用api依赖配置==========================================
# 连接池最大连接数
forest.max-connections=200
# 连接超时时间,单位为毫秒
forest.connect-timeout=5000
# 数据读取超时时间,单位为毫秒
forest.read-timeout=5000
# api依赖里的 关闭所有日志
forest.log-enabled=false
forest.log-request=false
forest.log-response-status=false
forest.log-response-content=false

第三步:创建一个启动类文件 我们启动项目 看看是否能正常启动。如果可以正常启动,那我们前期的准备工作就算完成。

好了。今天就分享到这里,后续开发会支持更新。。。

相关推荐
HelloZheQ11 分钟前
Java 项目中引入阿里云 OSS SDK
java·数据库·阿里云
Code花园32 分钟前
Bash语言的文件操作
开发语言·后端·golang
-Bin40 分钟前
client-go中watch机制的一些陷阱
开发语言·后端·golang
EviaHp41 分钟前
递归构建树菜单节点
java·spring boot·后端·maven·idea
半桶水专家42 分钟前
Go语言中变量的作用域详解
开发语言·后端·golang
HappyAcmen1 小时前
关于Java适配器模式的面试题目及其答案
java·面试·适配器模式
love静思冥想1 小时前
自动化执行 SQL 脚本解决方案
java·数据库·sql·自动化
Miraitowa_cheems1 小时前
【JavaEE】Spring Web MVC
java·spring boot·java-ee
机构师1 小时前
<rust>在rust中,实现32位浮点数与16进制之间的转换
开发语言·后端·rust
iamlzjoco2 小时前
idea报错Malformed \uxxxx encoding.报错解决
java·ide·intellij-idea