一般都是使用搭建好的框架进行业务逻辑开发,一直不清楚整个项目是如何从零到一构建出来的。所以开一个帖子,记录一下一个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调用,返回结果如下