springboot整合系列之如何选择版本及项目搭建

news2024/11/28 10:34:49

特别说明:本次项目整合基于idea进行的,如果使用Eclipse可能会略有不同。因为我很久没用过eclipse了,所以也没有办法给出两个版本。如果不一致的地方就自行google解决吧~~

springboot整合之如何选择版本及项目搭建

springboot整合mybatis-plus+durid数据库连接池

springboot整合swagger

springboot整合mybatis代码快速生成

springboot整合之统一结果返回

springboot整合之统一异常处理

springboot整合之logback日志配置

springboot整合pagehelper分页

springboot整合本地缓存

springboot整合redis + redisson

springboot整合elasticsearch

springboot整合rabbitMq

springboot整合springSecurity(前后端不分离版本)

        做了几年开发了,最近打算把之前积累的一些知识沉淀一下,想了一下,就先从最基础的springboot的使用开始整理吧。打算把常用的一些东西整合进来。

        可能有些小伙伴对版本选择和项目的搭建还不是特别清晰,所以我就把这个单独列出来说一下,以防后面整合过程中出现未知问题。OK,接下来我们就进入正题。开始正式搭建我们的springboot项目。

一、项目初始化

首先选择“file” -->"New" -->点击"project",进行项目新建。

 进入到新建页面后我们可以通过选择Spring  Initializr 进行项目的初始化,也可以选择maven进行项目初始化。这里给出个人建议,如果是单独的就一个项目选择这个会比较方便点。

如果是子模块建议选择maven,因为选择maven会自动以来父级(这里不明白可以先不用考虑,后面会有springcloud的整合,会在那里进行详细说明。)

选择完成后点击“Next”进入下一个环节

 这里我选择了热加载和Lombok。关于这个Lombok我觉得需要特别说明一下,首先就是这个需要自己在插件市场安装一下Lombok的插件。(这个很简单,我就不做介绍了)

目前对这个插件主要有两种说法,一种是像我一样的觉得这个插件使用起来很方便,毕竟只要协商一个注解,我们自己就不用写get和set以及构造函数很多常用的又简单的代码了我觉得能够节省我们很多时间。方便,好用。还有一种就是:这个插件虽然方便了,但是在多人或者多个团队共同开发时大家都需要安装这个插件,如果不安装项目就会报错无法运行。觉得增加了额外的操作和不必要的麻烦。这个我觉得大家开发时自行斟酌吧。结合实际需求来就行。

 项目创建完成以后我们需要在setting页面配置一下自己的Maven

 配置完成以后,我们可以删除以下几个没用的目录和文件。

检查JDK版本

不知道为什么,这个之前选择了JDK8但是项目建好以后还是出现JDK不是8的问题,所以可以在这里再次统一修改一下。一共有两个地方需要修改。

 

 

 二、springboot的版本选择

关于版本选择,我的理解是:如果不是学习,那我建议最好选择稳定版本,也就是官方release版本。我的习惯是一般是再往前推一个版本。比如目前是springboot 3.0 ,但是这个springboot 3.0要求JDK17 起步,好家伙这玩意谁敢上正式。我觉得还是2.7X保险一点,所以我们这次整合基于2.7X进行。

 另外一种选择版本的方式就是如果是在微服务中需要配合微服务版本来使用。这里可以先简单提一下。这个要根据微服务的版本来定,比如说alibaba最新版本配套的springcloud版本为H版的SR12,springboot版本为2.3.12.RELEASE。所以我们在进行版本选择时一定要特别注意。

 三、修改pom文件

接下来就是pom文件修改,因为之前没有引入文本依赖,所以我们要在pom里面引入spring-boot-starter-web的依赖。整体pom文件如下

<?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>
    <!--spring-boot 依赖版本-->
    <parent>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-parent</artifactId>
        <version>2.7.3</version>
    </parent>

    <!--当前项目坐标-->
    <groupId>com.example</groupId>
    <artifactId>springboot-demo</artifactId>
    <version>0.0.1-SNAPSHOT</version>
    <name>springboot-demo</name>
    <description>springboot-demo</description>

    <!--版本依赖管理-->
    <properties>
        <java.version>8</java.version>
    </properties>


    <dependencies>

        <!--spring-boot-starter 依赖-->
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter</artifactId>
        </dependency>

        <!--spring-boot-starter-web 依赖-->
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-web</artifactId>
        </dependency>

        <!--热启动依赖-->
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-devtools</artifactId>
            <scope>runtime</scope>
            <optional>true</optional>
        </dependency>

        <!--lombok 依赖-->
        <dependency>
            <groupId>org.projectlombok</groupId>
            <artifactId>lombok</artifactId>
            <optional>true</optional>
        </dependency>

        <!--spring-boot-starter-test 依赖-->
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-test</artifactId>
            <scope>test</scope>
        </dependency>

    </dependencies>

    <build>
        <plugins>
            <plugin>
                <groupId>org.springframework.boot</groupId>
                <artifactId>spring-boot-maven-plugin</artifactId>
                <configuration>
                    <excludes>
                        <exclude>
                            <groupId>org.projectlombok</groupId>
                            <artifactId>lombok</artifactId>
                        </exclude>
                    </excludes>
                </configuration>
            </plugin>
        </plugins>
    </build>

</project>

四、启动测试

到此为止我们的项目算是初步搭建完成了,接下来就是启动测试一下了。在框架搭建的过程中一定要做一步测异步,不要一次整合很多东西不进行测试,否则对于新手来说很容易出问题,而且你不好排除问题是哪里产生的。

 可以看到项目已经正常启动了。

五、修改yml文件

首先调整成如下设置,然后我们来解释一下为什么要这样配置。我们在开发中难免有很多环境比如开发环境、测试环境、生产环境等。所以我们可以分为多个配置文件,然后只需要设置当前使用那个文件就好了。而springboot也给我们提供了这个功能,就是spring.profiles.active 我们可以通过这个设置来确定使用那个配置文件。

其中application.yml内容如下:

server:
  port: 8080

spring:
  profiles:
    active: dev

 OK,到这一步我们的项目就算初步搭建完成了,下面几篇会慢慢的都写完。

如果感兴趣的可以关注一下~

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/91807.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

ADI Blackfin DSP处理器-BF533的开发详解52:图像处理专题-CMOS摄像头采集图像(含源码)

硬件准备 ADSP-EDU-BF533&#xff1a;BF533开发板 AD-HP530ICE&#xff1a;ADI DSP仿真器 软件准备 Visual DSP软件 硬件链接 功能介绍 板卡上设计了一个摄像头接口&#xff0c;可以连接与板卡匹配的 ADSP-EDU-CMOS 子卡板。摄像头接口采用 20PIN 插针接入&#xff0c;将插…

照片变漫画怎么做?分享这几个照片变漫画的技巧给你

大家在网上是否有看到过一些绘画博主给别人画漫画图呢&#xff1f;这些图片中的人物形象与现实中的非常相像&#xff0c;而且看起来真的很像漫画中的人物一般&#xff0c;画出来对于一些没有绘画功底的人来说是比较困难的。那么我们又该如何得到我们在漫画中的图片呢&#xff1…

四种常见排序(冒泡、选择、插入、快速排序)--- Python版

经典排序算法总结与实现 经典排序算法在面试中占有很大的比重&#xff0c;也是基础&#xff0c;为了未雨绸缪&#xff0c;这次收集整理并用Python实现了八大经典排序算法&#xff0c;包括冒泡排序&#xff0c;插入排序&#xff0c;选择排序&#xff0c;希尔排序&#xff0c;归…

Python实现批量采集美女视*频 <无水印>

前言 大家早好、午好、晚好吖 ❤ ~ 我给大家准备了一些资料&#xff0c;包括: 2022最新Python视频教程、Python电子书10个G &#xff08;涵盖基础、爬虫、数据分析、web开发、机器学习、人工智能、面试题&#xff09;、Python学习路线图等等 直接在文末名片自取即可&#x…

机器学习还能预测心血管疾病?没错,我用 Python 写出来了

全球每年约有1700万人死于心血管疾病&#xff0c;当中主要表现为心肌梗死和心力衰竭。当心脏不能泵出足够的血液来满足人体的需要时&#xff0c;就会发生心力衰竭&#xff0c;通常由糖尿病、高血压或其他心脏疾病引起。 在检测心血管疾病的早期症状时&#xff0c;机器学习就能…

nodejs+vue企业固定资产管理系统-vscode

目 录 摘 要 I 目 录 III 第一章 概述 1.1研究背景 1.2 开发意义 1.3 研究现状 1.4 研究内容 1.5 论文结构 第二章 开发技术介绍 2.5 B/S架构 3.1 可行性分析 3.1.1技术可行性 3.1.2操作可行性 3.1.3 经济可行性 3.1.4 运行可行性 3.2性能需求分析 3.4功能分析 第四章 系统设计…

轻量级的架构决策记录机制

作者&#xff1a;倪新明 ADR是一种性价比非常高的架构决策文档化实践&#xff0c;团队引入和实践成本很低&#xff0c;却能为团队带来极大收益&#xff01; 1 团队研发面临的问题 不论是在传统的IT行业&#xff0c;还是互联网行业&#xff0c;研发团队在架构决策层面或多或少…

在Arduino IDE上开发ESP32(离线安装SDK)

用过Arduino的朋友都知道&#xff0c;Arduino的整个生态强大得让你不能不服。大家所贡献出来的各种库让基于Arduino的开发虽然还没有变得无所不能&#xff0c;但也算是相当得心应手了。你所能想到的功能大体都能在网上找到对应的库和文章。可能是因为这个原因吧&#xff0c;所以…

Redis整理-未完成

目录 1. Redis安装 1.1 单机 1.2 主从 1.3 哨兵 1.4 集群 1.4.1 方式一 redis-cli --cluster命令 1.4.2 方式二 cluster meet/addslots/replicate 2. Redis配置 2.1 基本参数配置 2.2 持久化配置 2.3 内存策略设置 2.4 主从配置 2.5 哨兵配置 2.6 集群配置 2.6.…

吃透这份 “ 自动化测试 ” 核心技术栈,月薪30K还不是随便叫

为了帮助大家快速回顾学习自动化测试中的知识点&#xff0c;分享一下这些年来&#xff0c;我对于技术一些归纳和总结&#xff0c;和自己对作为一名 高级测试工程师需要掌握那些技能的笔记分享&#xff0c;希望能帮助到有心在技术这条道路上一路走到黑的朋友&#xff01; 一、L…

[附源码]Python计算机毕业设计SSM基于JAVA快递配送平台(程序+LW)

项目运行 环境配置&#xff1a; Jdk1.8 Tomcat7.0 Mysql HBuilderX&#xff08;Webstorm也行&#xff09; Eclispe&#xff08;IntelliJ IDEA,Eclispe,MyEclispe,Sts都支持&#xff09;。 项目技术&#xff1a; SSM mybatis Maven Vue 等等组成&#xff0c;B/S模式 M…

语音怎么转换成文字?这几个实用方法分享给你

当我们在听一些流行的英文歌曲时&#xff0c;发现它没有附带翻译的时候&#xff0c;是不是常常听不懂歌曲的意思内容呢&#xff1f;面对这种情况应该怎么办呢&#xff1f;其实也不难&#xff0c;我们只需要利用软件来将歌曲转换成文字的格式就可以了&#xff0c;那你们知道如何…

分布式系统(交互、协作)

文章目录进程组织进程交互传染病协议反熵&#xff08;Anti-Entropy&#xff09;闲聊&#xff08;Gossiping&#xff09;P2P 路由Circular routingPastry应用层多播ESMScribe中间件通信协议RPCMOM进程协作有序组播基本组播FIFO 组播全排序组播定序者分布式协商因果序组播分布式互…

基于SSM框架的酒店管理系统

基于SSM框架的酒店管理系统开发工具(eclipse/idea/vscode等)&#xff1a; 数据库(sqlite/mysql/sqlserver等)&#xff1a; 功能模块(请用文字描述&#xff0c;至少200字)&#xff1a; 看每个等级模块&#xff1a;客白模块&#xff0c;屋工模垫&#xff0c;反怠管理员模垫 客户可…

如何实现采购管理流程的优化?

采购管理流程优化指的是一种整体方法&#xff0c;而不是个人主义的方法。它指的是利用人员、流程和技术来实现最佳价值创造的过程。采购优化的方法可以是&#xff1a;最初的范围界定&#xff0c;数据收集和分析&#xff0c;改进和实施以及跟进和监控。 理解采购管理流程优化 …

oracle学习篇(二)

oracle学习篇(二) 1添加约束 1.1 添加主键约束 1.1.1 语法 alter table 表名 add constraint 约束名 约束关键字 key(添加约束的字段);1.1.2 示例代码 alter table infos add constraint pk_stuid primary key(stuid);1.2 添加检查约束 1.2.1 语法 alter table 表名 ad…

[附源码]Node.js计算机毕业设计高校学生心理健康信息咨询系统Express

项目运行 环境配置&#xff1a; Node.js最新版 Vscode Mysql5.7 HBuilderXNavicat11Vue。 项目技术&#xff1a; Express框架 Node.js Vue 等等组成&#xff0c;B/S模式 Vscode管理前后端分离等等。 环境需要 1.运行环境&#xff1a;最好是Nodejs最新版&#xff0c;我…

numpy.pad()函数详解

目录 函数定义&#xff1a; 示例讲解&#xff1a; 示例1.1 constant&#xff1a; 示例1.2 maximum 示例1.3 constant: 示例2.1 constant&#xff1a; 示例2.2 constant&#xff1a; 函数定义&#xff1a; numpy.pad()函数用于对Numpy数组进行填充。有时需要对Numpy数组进…

Docker 项目快速部署Flask项目

前言 打造 flask gunicron nginx Mysql 环境 nginx Mysql 使用docker 快速部署 使用 supervisor 对 gunicron 做监控 环境&#xff1a;centos7 &#xff0c;python3.7 flask 篇 flask 项目就不多赘述了。这里贴一下项目的目录&#xff0c;便于解释下面的命令参数。 运行…

​Word怎么转换成PDF格式?这三种方法教你如何转换

怎么把Word文档转换成PDF文件格式呢&#xff1f;相信小伙伴们在办公过程中会习惯使用Word文档来编辑文件&#xff0c;编辑好后如果需要发送文件的话会将文档转换成PDF格式来发送&#xff0c;原因就是PDF格式独有的兼容性和稳定性能够让我们的文件格式不会错乱&#xff0c;这也是…