原料
新鲜的IntelliJ IDEA、一双手、以及电脑一台。
搭建框架
新建项目
打开IDE,点击File -> New Project。在左侧的列表中的选择Maven项目,点击Next。
填写GroupId和ArtifactId
什么是GroupId和ArtifactId?大家可以参考一下google出来的定义,可以参考一下。
GroupID是项目组织唯一的标识符,实际对应JAVA的包的结构,是main目录里java的目录结构。
ArtifactID就是项目的唯一的标识符,实际对应项目的名称,就是项目根目录的名称
简单理解一下,可以理解为GroupId就是你的Github账号,而ArtifactId就是你的具体某个项目,例如这个例子的源码,SpringBootDemo,detectiveHLH/springbootdemo
detectiveHLH就是GroupId,而ArtifactId就是后面的项目名称。
所以,这里应该填写如下(仅供参考)。
GroupId: com.detectivehlh.test
ArtifactId: parent
test为项目的名称。ArtifactId代表父类,所以就写parent了。点击Next。
设置Project Name和Project Location
ProjectName就写项目的名称就好。Project Location就是项目在你本地的真实路径。填好之后,点击Next。
然后可以看到IDE已经新建好了项目。
.
├── pom.xml
├── src
│ ├── main
│ │ ├── java
│ │ └── resources
│ └── test
│ └── java
└── test.iml
然后右下角会弹出Maven projects need to be imported,选择右边的Enable Auto-Imported.然后删除src目录。
新建模块
本次项目的框架一共有四层结构,也可以说是有四个模块。分别是api、core、data、domain.我们从底层开始,自底向上开始构建模块。
domain
存放实体类
点击File -> New -> Module,在左侧的列表中选择Maven,点击Next。在ArtifactId处填 domain,一路Next。
data模块
主要是做一些对数据库的操作
点击File -> New -> Module,在左侧的列表中选择Maven,点击Next。在ArtifactId处填 data,一路Next。在模块中其实是存在相互依赖关系的。
data模块依赖domain模块的实体。所以要在data文件的配置文件中实现对domain的依赖。
打开data目录中的pom.xml文件。在下,添加如下代码。
<dependencies>
<dependency>
<groupId>com.detectivehlh.test</groupId>
<artifactId>domain</artifactId>
<version>1.0-SNAPSHOT</version>
</dependency>
</dependencies>
core模块
后端主要的业务逻辑都会在core模块中。
点击File -> New -> Module,在左侧的列表中选择Maven,点击Next。在ArtifactId处填 core,一路Next。同上,此处也需要配置依赖关系。
core模块的中的service会依赖data模块中的数据。
打开core目录下的pom.xml文件。在下,添加如下代码。
<dependencies>
<dependency>
<groupId>com.detectivehlh.test</groupId>
<artifactId>data</artifactId>
<version>1.0-SNAPSHOT</version>
</dependency>
</dependencies>
api模块
主要是存放供前端调用的接口。
点击File -> New -> Module,在左侧的列表中选择Maven,点击Next。在ArtifactId处填 api,一路Next。此处的api模块依赖core中的service服务。
打开api目录下的pom.xml文件。在下,添加如下代码。
<dependencies>
<dependency>
<groupId>com.detectivehlh.test</groupId>
<artifactId>core</artifactId>
<version>1.0-SNAPSHOT</version>
</dependency>
</dependencies>
让项目"走两步"
到此,框架算是搭建好了,下一步就是要让项目"走两步"来看看。此时的项目的目录如下。
.
├── api
│ ├── api.iml
│ ├── pom.xml
│ └── src
│ ├── main
│ │ ├── java
│ │ └── resources
│ └── test
│ └── java
├── core
│ ├── pom.xml
│ └── src
│ ├── main
│ │ ├── java
│ │ └── resources
│ └── test
│ └── java
├── data
│ ├── pom.xml
│ └── src
│ ├── main
│ │ ├── java
│ │ └── resources
│ └── test
│ └── java
├── domain
│ ├── pom.xml
│ └── src
│ ├── main
│ │ ├── java
│ │ └── resources
│ └── test
│ └── java
├── pom.xml
└── test.iml
定位到/api/src/main/java,在java目录下新建package,名字为你之前定义的groupid再加上模块名,举个例子。我这的名字就应该为com.detectivehlh.test.api,然后
在该包下新建名为Application的class。然后将代码替换成如下代码。
package com.detectivehlh.test.api;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
@SpringBootApplication
public class Application {
public static void main(String[] args) {
SpringApplication.run(Application.class, args);
}
}
此时会报错,是因为springboot的各项依赖,都还没有引入项目的dependences。打开根目录下的pom.xml文件,添加如下依赖。
<parent>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-parent</artifactId>
<version>2.0.4.RELEASE</version>
<relativePath/> <!-- lookup parent from repository -->
</parent>
然后打开api目录下的pom.xml文件。在dependencies标签中添加如下依赖。
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-autoconfigure</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
此时Application中就不会报错了。然后就可以启动项目了。打开Application这个类,在SpringBootApplication注解下有个绿色的启动键,点击即可启动项目。之后可在右上方启动。
启动之后,打开http://localhost:8080,如果页面显示
Whitelabel Error Page
This application has no explicit mapping for /error, so you are seeing this as a fallback.Tue Sep 18 19:01:11 CST 2018
There was an unexpected error (type=Not Found, status=404).
No message available
那么一个简单的springboot应用就可以启动成功了。
实现controller层
在com.detectivehlh.test.api包下,新建一个名为controller的包。然后新建名为HelloController的class。
将其全部替换为如下代码(包名根据你的项目命名自行修改)。
package com