搭建一个属于自己的springboot项目
一、确定环境
最近公司要上个新系统,指定由我来带两个人进行开发,既然是新项目,那么项目搭建的事就落到我的头上了。现在都是使用springboot进行开发,为此我搭环境使用的是springboot,具体java环境如下,

使用springboot的版本是2.3.3.RELEASE。使用maven进行项目管理,

总结下,我使用到的环境,
JDK:JDK1.8
springboot:2.3.3.RELEASE
maven:3.8.1
好了,使用的环境就是上面这些。搭建项目框架的第一步就要确认好使用的环境,而且要和团队成员沟通好项目环境,大家的环境一致,避免开发过程中因为环境产生问题。确认环境另一个好处是在部署的时候,减少开发和部署环境不一致。这个一定要注意生产环境,务必开发和生产使用同一套环境。
二、确定项目结构
现在后端开发都是基于springboot的web项目,web项目一般都是使用MVC的模式,所以这里也采用类似的模式。在项目maven结构组成上,采用父子项目,也就是一个主项目下有多个子module,分为下面几个,
p-admin
p-web --》负责项目启动
p-facade --》控制层,写controller
p-service --》服务层,具体的业务处理
p-dao --》持久化层,负责和数据库打交道
p-common --》公共层,util类\入参、出参等
p-api --》提供给第三方的接口
大体的项目结构给出来了,下面看子项目间的依赖关系哈,
p-web依赖于p-service、p-common
p-service依赖于p-dao、p-common
p-api依赖于p-common
其他的依赖第三方的库暂时不看,下面再说。接下来就可以进行实际操作创建项目了。
三、创建项目
3.1、创建父项目(p-admin)
这里使用maven的父子项目结构,父项目是这样创建的,
在idea中file-->new-->project出现下面的界面,直接next就好,

到下面的界面,填写上项目名称p-admin,

最好点finish即可,这样项目便创建完成,创建完成后,项目文件夹下会有一些多余的删除即可,只保留pom.xml。可删除的有src文件夹等。
紧接着创建子项目。
3.2、创建子项目
在父项目p-admin文件夹下右键,new-->Module

显示的创建界面和父项目是一样的,

写上相应的子项目名称p-web、p-facade等即可。
这样父子项目结构就创建完成了,如下图

四、配置pom文件
4.1、父pom文件
创建完项目后,有个很重要的事情,那就是配置pom文件,关注pom文件总的打包方式、依赖关系两个方面。先看父项目的pom.xml
每创建一个子项目在父pom中就会多一个配置,

在父pom中有多个子module。
由于使用的springboot的环境,这里我引入一个父引用,
<parent>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-parent</artifactId>
<version>2.3.3.RELEASE</version>
</parent>
引入这个的好处是可以使用其内的依赖,看下spring-boot-starter-parent中的内容,可以看到其中还有一个父引用,

从该引用名称中知道其中定义了spring-boot的依赖,可以看到定义了很多依赖,

所以,使用了spring-boot-starter-parent的项目中,可以直接使用相关依赖,不用关心版本号。
在p-admin的pom文件中还要定义其子模块的依赖,以及p-admin使用的但不在spring-boot-starter-parent中定义的依赖,这样子模块要使用的时候也不用关心版本号。

4.2、子pom文件
看下p-facade子项目中的pom文件。

五、启动项目
前面说到p-web项目用来启动项目的,看下启动类,
package com.wcj.my;
import org.mybatis.spring.annotation.MapperScan;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
/**
* 启动类
* @date 2023/6/03 17:04
*/
@MapperScan(basePackages = "com.wcj.my.mapper")
@SpringBootApplication()
public class StartSpringbootApplication {
public static void main(String[] args) {
SpringApplication.run(StartSpringbootApplication.class,args);
}
}
这样就可以了,另外spring-boot有配置文件,application.yml或application.properties文件,这里使用application.yml文件,
server:
port: 8085
现在启动看下,

可以看到启动的线程ID是26352,在8005端口提供web服务,并且还有一个内部的线程池:applicationTaskExecutor。
这样一个项目就搭起来了。
总结下,搭建一个项目的一些必备步骤,
1、确定项目环境;
2、确定项目结构
3、项目搭建及测试;
在搭项目的过程中,每个人都会或多或少遇到一些坑,欢迎关注下方公众号交流。另源码也可以通过公众号获取。

搭建一个属于自己的springboot项目的更多相关文章
- 快速搭建一个restful风格的springboot项目
1.创建一个工程. 2.引入pom.xml依赖,如下 <project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi ...
- IntelliJ IDEA 2017.3 搭建一个多模块的springboot项目(二)
上一篇我成功搭建了一个项目,名叫bale-project,下面我们继续搭建子模块. 在项目名称上右键,New->Module,新建一个模块. 这次我们选择Spring Initializr 起个 ...
- IntelliJ IDEA 2017.3 搭建一个多模块的springboot项目(一)
新人接触springboot,IDE使用的是IntelliJ IDEA 2017.3 ,自己摸索了很久,现在自己整理一下,里面有些操作我自己也不懂是为什么这样,只是模仿公司现有的项目,自己搭建了一个简 ...
- IntelliJ IDEA 2017.3 搭建一个多模块的springboot项目(三)
你得先看完前两篇文章才可以进行第三章.这章我又新建了一个模块,起名叫project-core.建立方式与(一)里面一致,一个普通的maven模块.不需要勾选archetype的那种. 大家自己建好后, ...
- 一起来学Spring Cloud | 第一章 :如何搭建一个多模块的springcloud项目
在spring cloud系列章节中,本来已经写了几个章节了,但是自己看起来有些东西写得比较杂,所以重构了一下springcloud的章节内容,新写了本章节,先教大家在工作中如何搭建一个多模块的spr ...
- 如何搭建一个基于nuxt.js的项目
介绍 nuxt.js(中文官方文档)是vue.js的一个通用型应用框架,有了之前搭建vue项目的过程之后,搭建一个nuxt项目就会十分简单. 搭建步骤 1.打开命令提示符,进入到相关文件夹下: 2.使 ...
- 一个最小化的SpringBoot项目
项目结构 项目基于Maven管理,注意使用了父pom <parent> <groupId>org.springframework.boot</groupId> &l ...
- 第一章 搭建一个通用的.net core项目框架
项目目标部署环境:CentOS 7+ 项目技术点:.netcore2.0 + Autofac +webAPI + NHibernate5.1 + mysql5.6 + nginx 开源地址:https ...
- 基于Idea从零搭建一个最简单的vue项目
一.需要了解的基本知识 node.js Node.js是一个Javascript运行环境(runtime),发布于2009年5月,由Ryan Dahl开发,实质是对Chrome V8引擎进行了封装.N ...
- 搭建一个ssm框架的maven项目需要配置的文件
单独功能需要的配置文件: 1,mybatis配置文件 mybatis-config.xml2,spring配置文件 spring-context.xml ......3,we ...
随机推荐
- SpringBoot——模板引擎及原理
更多内容,前往IT-BLOG 一.模板引擎的思想 模板是为了将显示与数据分离,模板技术多种多样,但其本质都是将模板文件和数据通过模板引擎生成最终的 HTML代码. 二.SpringBoot模板引擎 S ...
- 论文解读(CosFace)《CosFace: Large Margin Cosine Loss for Deep Face Recognition》
论文信息 论文标题:CosFace: Large Margin Cosine Loss for Deep Face Recognition论文作者:H. Wang, Yitong Wang, Zhen ...
- 【ACM算法竞赛日常训练】DAY4题解与分析【树】【子序列】| 组合数学 | 动态规划
DAY4共2题: 树(组合数学) 子序列(dp,数学) 作者:Eriktse 简介:19岁,211计算机在读,现役ACM银牌选手力争以通俗易懂的方式讲解算法!️欢迎关注我,一起交流C++/Python ...
- 浅谈Array --JavaScript内置对象
Array --JavaScript内置对象 描述 可以用一个变量存储多种数据类型的Array对象,Array不是关联数组,不能使用字符串作为索引访问数组元素,需要使用非负整数的下标访问数组中的元素. ...
- 第三届材料化学与复合材料国际学术会议(MCCM 2022)
大会官网:http://www.meeting-mccm.org/ 大会时间:2022年12月16-18日 大会地点:中国-珠海 截稿日期:详情见官网(2022年10月14日) 接受/拒稿通知:投稿后 ...
- jQ的工具类方法
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8&quo ...
- JAVA基础——常用类(一)
首先认识到--String是不可以变性(final) String:字符串,使用一对""引起来表示. * 1.String声明为final的,不可被继承 * ...
- Kubernetes(k8s)实现IPv4/IPv6网络双栈
背景 如今IPv4IP地址已经使用完毕,未来全球会以IPv6地址为中心,会大力发展IPv6网络环境,由于IPv6可以实现给任何一个设备分配到公网IP,所以资源是非常丰富的. 配置hosts [root ...
- [云计算]杂谈:SaaS与PaaS的产品经理,做产品设计时有什么区别?[摘]
本文摘自: 郝雨彤@碧岸久 于 2022-09-20在社交平台中所表达的观点. 产品性质/类型 服务领域 服务对象(受众) 核心能力 SaaS 面向具体业务 (所属行业的)业务用户 很看重对业务的理解 ...
- Nordic nRF52系列/nRF5340硬件设计(一)选型及原理图设计
Nordic 的BLE系列芯片从第一代的nRF51系列,到第二代的nRF52系列,发展到目前最新的第三代的nRF5340.目前市场中使用最多的nRF52系列一共有七款芯片,它们是:nRF52805.n ...