一般都是使用搭建好的框架进行业务逻辑开发,一直不清楚整个项目是如何从零到一构建出来的。所以开一个帖子,记录一下一个springboot项目是如何构建的。
使用的工具为idea
IDEA新建项目,起名字
选择maven或者spring initializr都可以。spring initializr会在pom中自动添加一些springboot用到的jar包,此处选择maven。起好名字后,一路next即可


Module构建
从实际开发角度,构建Module不是必选项。但学习嘛,还是要知道是怎么创建的
右键项目名称 -> New -> Module

依然选择maven,起名字即可。一般命名为:XXXX-Controller,XXXX-Service等等

建好后,pom中会多出以下内容
<modules>
<module>Customer-Controller</module>
</modules>
在pom文件中引入springboot相关依赖
(放弃多模块配置)
可在此处搜索mvnrepository
首先添加parent,作为父级依赖。位置在<project></project>的下一级,与<groupId>org.example</groupId>同级,
<parent>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-parent</artifactId>
<version>2.7.0</version>
</parent>
在<parent></parent>同级新建<dependency></dependency>标签,引入web项目需要的依赖
<dependencies>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
<version>2.7.0</version>
</dependency>
</dependencies>
如果是多模块的项目,需要在每一个模块的pom文件中,添加其依赖的其他模块。例如controller依赖service,则需要在controller的pom文件中添加以下依赖信息。如果不是多模块项目,可以忽略
<dependencies>
dependency>
<groupId>org.example</groupId>
<artifactId>Customer-Service</artifactId>
<version>1.0-SNAPSHOT</version>
</dependency>
</dependencies>
添加启动入口
在java路径下新建顶级路径com.tardis,在此路径下新建文件CustomerApplication(名字随意)。新建controller,service的package。在CustomerApplication添加如下方法
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
@SpringBootApplication
public class CustomerApplication {
public static void main(String[] args) {
SpringApplication.run(CustomerApplication.class, args);
}
}
文件的层级关系如图

创建配置文件
在resource目录下,新建application.yml,application.dev.yml,application.prod.yml文件,作为总体,开发环境,生产环境的配置文件。配置文件格式为properties,yml均可,此处使用yml,看起来比较简洁清晰
层级关系如图

为了更好地演示效果,可以先写一个简单的Controller进行测试,在controller文件夹中新建class,名字随意。文件层级如图。放一个最简单的接口。

package com.tardis.controller;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestMethod;
import org.springframework.web.bind.annotation.ResponseBody;
@Controller
@RequestMapping(value = "/doctor")
public class DoctorController {
@RequestMapping(value="/meetAngle", method = { RequestMethod.GET, RequestMethod.POST })
@ResponseBody
public String meetAngle() {
return "Don't Blink!";
}
}
使用postman调用,返回结果如下
