一、确定环境

最近公司要上个新系统,指定由我来带两个人进行开发,既然是新项目,那么项目搭建的事就落到我的头上了。现在都是使用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项目的更多相关文章

  1. 快速搭建一个restful风格的springboot项目

    1.创建一个工程. 2.引入pom.xml依赖,如下 <project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi ...

  2. IntelliJ IDEA 2017.3 搭建一个多模块的springboot项目(二)

    上一篇我成功搭建了一个项目,名叫bale-project,下面我们继续搭建子模块. 在项目名称上右键,New->Module,新建一个模块. 这次我们选择Spring Initializr 起个 ...

  3. IntelliJ IDEA 2017.3 搭建一个多模块的springboot项目(一)

    新人接触springboot,IDE使用的是IntelliJ IDEA 2017.3 ,自己摸索了很久,现在自己整理一下,里面有些操作我自己也不懂是为什么这样,只是模仿公司现有的项目,自己搭建了一个简 ...

  4. IntelliJ IDEA 2017.3 搭建一个多模块的springboot项目(三)

    你得先看完前两篇文章才可以进行第三章.这章我又新建了一个模块,起名叫project-core.建立方式与(一)里面一致,一个普通的maven模块.不需要勾选archetype的那种. 大家自己建好后, ...

  5. 一起来学Spring Cloud | 第一章 :如何搭建一个多模块的springcloud项目

    在spring cloud系列章节中,本来已经写了几个章节了,但是自己看起来有些东西写得比较杂,所以重构了一下springcloud的章节内容,新写了本章节,先教大家在工作中如何搭建一个多模块的spr ...

  6. 如何搭建一个基于nuxt.js的项目

    介绍 nuxt.js(中文官方文档)是vue.js的一个通用型应用框架,有了之前搭建vue项目的过程之后,搭建一个nuxt项目就会十分简单. 搭建步骤 1.打开命令提示符,进入到相关文件夹下: 2.使 ...

  7. 一个最小化的SpringBoot项目

    项目结构 项目基于Maven管理,注意使用了父pom <parent> <groupId>org.springframework.boot</groupId> &l ...

  8. 第一章 搭建一个通用的.net core项目框架

    项目目标部署环境:CentOS 7+ 项目技术点:.netcore2.0 + Autofac +webAPI + NHibernate5.1 + mysql5.6 + nginx 开源地址:https ...

  9. 基于Idea从零搭建一个最简单的vue项目

    一.需要了解的基本知识 node.js Node.js是一个Javascript运行环境(runtime),发布于2009年5月,由Ryan Dahl开发,实质是对Chrome V8引擎进行了封装.N ...

  10. 搭建一个ssm框架的maven项目需要配置的文件

    单独功能需要的配置文件: 1,mybatis配置文件      mybatis-config.xml2,spring配置文件        spring-context.xml  ......3,we ...

随机推荐

  1. 如何使用 vue + intro 实现后台管理系统的引导

    引言 为了让用户更好的适应新版,或更方便使用公司内部系统,可以加入新手指引功能.如果你也想在自己的网页加入用户指引,那就试试在 vue 中使用 Intro.js 吧,它能够很轻松的制作出新手指引的效果 ...

  2. Java 计算两个日期的时间间隔

    @Test public void durationTest(){ Temporal begin = LocalDateTime.of(2000,1,1,0,0); Temporal end = Lo ...

  3. 网络抓包 tcpdump 使用指南

    在网络问题的调试中,tcpdump应该说是一个必不可少的工具,和大部分linux下优秀工具一样,它的特点就是简单而强大.它是基于Unix系统的命令行式的数据包嗅探工具,可以抓取流动在网卡上的数据包. ...

  4. 机器学习(四):4层BP神经网络(只用numpy不调包)用于训练鸢尾花数据集|准确率96%

    题目: 设计四层BP网络,以g(x)=sigmoid(x)为激活函数, 神经网络结构为:[4,10,6, 3],其中,输入层为4个节点,第一个隐含层神经元个数为10个节点:第二个隐含层神经元个数为6个 ...

  5. python数据类型、变量以及编码和字符串、格式化

    1.数据类型包括整型.浮点型.字符串.布尔型. 整数如果位数太多可以用_隔开,浮点数可以用科学记数法表示,字符串要用单引号或者双引号括起来,布尔型的值只能为True和False 2.变量可以由数字.字 ...

  6. Github 添加贪吃蛇动画

    前言 我们都知道,对于Github来说,当你选择你的账户时,可以看到自己的提交记录. 于是就有大神动脑筋了,这些commit记录都是一些豆,如果弄一条蛇来,不就可以搞个贪吃蛇了吗? 有道理有道理,本文 ...

  7. Linux升级安装GCC

    各发行版本Linux中,其自带的gcc安装源版本都比较旧,我所使用CentOS 6系统中,gcc版本只有4.4.7.最近要安装几个软件要求gcc 4.8+,无奈只能手动升级gcc. 1. 下载最新版本 ...

  8. 笔记九:线程间的通信(pthread_create()和pthread_self())

    linux高级编程之线程间的通信:(pthread_create().pthread_self()) 1.线程概念        线程包含了表示进程内执行环境必须得信息,其中包括进程中标识线程的线程I ...

  9. WPF 屏幕点击的设备类型

    1.鼠标 可以通过Mouse相关的事件参数MouseButtonEventArgs中的数据,e.StylusDecice==null表示没有触摸设备,所以设备为鼠标 2.触笔 or 触摸 根据Styl ...

  10. Prism Sample 17-BasicRegionNavigation

    本例是基础的导航应用 在窗口中布局了2个按钮,一个区域 <DockPanel LastChildFill="True"> <StackPanel Orientat ...