SpringBoot集成Maven工程

1.说明

通过Maven向导创建一个Maven Project,
而非Spring Boot向导创建Spring Starter Project,
然后通过手工修改的方式,
使这个Maven工程支持Spring Boot。

2.创建Maven Project

通过Eclipse的工程创建向导,
创建一个Maven Project:
File -> New -> Other... -> Maven -> Maven Project


勾选Create a simple project(skip archetype selection),
然后去掉勾选Use default Workspace location,
点击Browse...设置自己项目保存的Location:
D:\Code\Learn\SpringBoot\spring-boot-maven


点击Next下一步,
这里输入要创建的项目的名称等信息,
主要是修改Group Id,Artifact Id,Packaging,
注意Packaging设置为jar:



点击Finish完成工程创建。

3.查看pom.xml

<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
  <modelVersion>4.0.0</modelVersion>
  <groupId>com.yuwen.spring</groupId>
  <artifactId>spring-boot-maven</artifactId>
  <version>0.0.1-SNAPSHOT</version>
</project>

4.增加Spring Boot依赖管理

将Spring Boot相关依赖增加到创建好的Maven Project,
为了方便统一管理相关依赖,
先增加Spring Boot依赖管理,
有两种方式,
一种是继承父pom的方式,
另一种是通过import导入的方式。

4.1.继承父pom方式

修改pom.xml,
增加spring-boot-starter-parent作为父pom:

<parent>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-parent</artifactId>
    <version>2.3.1.RELEASE</version>
</parent>

缺点是限制了工程的父pom,
无法指定自己的父pom了。

4.2.通过import导入方式

修改pom.xml,
在dependencyManagement依赖管理中,
增加spring-boot-dependencies依赖:

<dependencyManagement>
    <dependencies>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-dependencies</artifactId>
            <version>2.3.1.RELEASE</version>
            <type>pom</type>
            <scope>import</scope>
        </dependency>
    </dependencies>
</dependencyManagement>

好处是不占用父pom,
可以指定自己的父pom,
这种方式在开发中更加常见。
但是可能会导致工程打包运行有问题,
需要添加额外的构建配置:

<build>
    <plugins>
        <plugin>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-maven-plugin</artifactId>
            <version>2.3.1.RELEASE</version>
            <executions>
                <execution>
                    <!--打包时,重新打包指定spring boot的启动类 -->
                    <id>repackage</id>
                    <goals>
                        <goal>repackage</goal>
                    </goals>
                </execution>
            </executions>
        </plugin>
    </plugins>
</build>

顺便一提,
在spring-boot-starter-parent作为父pom的时候,
帮我们配置了dependencyManagement和build,
子pom继承过来之后就能直接使用,
所有不需要重复配置了。

5.新增Spring依赖

修改pom.xml,
在dependencies依赖中,
新增Spring Boot Web服务依赖:

<dependencies>
    <dependency>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-web</artifactId>
    </dependency>
</dependencies>

6.新增配置文件

在src/main/resource目录下,
新增application.yml配置文件,
并且配置启动端口:

server:
  port: 8088

7.新增主启动类

在src/main/java目录下新增主启动类,
DemoApplication.java:

package com.yuwen.spring.demo;

import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;

@SpringBootApplication
public class DemoApplication {
    public static void main(String[] args) {
        SpringApplication.run(DemoApplication.class, args);
    }
}

注意新增注解@SpringBootApplication。

8.启动微服务

右键主启动类DemoApplication.java,
Run As ... -> Java Application
成功启动日志如下,
可以看到对外提供的服务端口是8088:


  .   ____          _            __ _ _
 /\\ / ___'_ __ _ _(_)_ __  __ _ \ \ \ \
( ( )\___ | '_ | '_| | '_ \/ _` | \ \ \ \
 \\/  ___)| |_)| | | | | || (_| |  ) ) ) )
  '  |____| .__|_| |_|_| |_\__, | / / / /
 =========|_|==============|___/=/_/_/_/
 :: Spring Boot ::        (v2.3.1.RELEASE)

2021-03-25 15:49:11.245  INFO 5656 --- [           main] com.yuwen.spring.demo.DemoApplication    : Starting DemoApplication on yuwen-asiainfo with PID 5656 (D:\Code\Learn\SpringBoot\spring-boot-maven\target\classes started by yuwen in D:\Code\Learn\SpringBoot\spring-boot-maven)
2021-03-25 15:49:11.247  INFO 5656 --- [           main] com.yuwen.spring.demo.DemoApplication    : No active profile set, falling back to default profiles: default
2021-03-25 15:49:12.562  INFO 5656 --- [           main] o.s.b.w.embedded.tomcat.TomcatWebServer  : Tomcat initialized with port(s): 8088 (http)
2021-03-25 15:49:12.572  INFO 5656 --- [           main] o.apache.catalina.core.StandardService   : Starting service [Tomcat]
2021-03-25 15:49:12.572  INFO 5656 --- [           main] org.apache.catalina.core.StandardEngine  : Starting Servlet engine: [Apache Tomcat/9.0.36]
2021-03-25 15:49:12.643  INFO 5656 --- [           main] o.a.c.c.C.[Tomcat].[localhost].[/]       : Initializing Spring embedded WebApplicationContext
2021-03-25 15:49:12.643  INFO 5656 --- [           main] w.s.c.ServletWebServerApplicationContext : Root WebApplicationContext: initialization completed in 1359 ms
2021-03-25 15:49:12.766  INFO 5656 --- [           main] o.s.s.concurrent.ThreadPoolTaskExecutor  : Initializing ExecutorService 'applicationTaskExecutor'
2021-03-25 15:49:12.897  INFO 5656 --- [           main] o.s.b.w.embedded.tomcat.TomcatWebServer  : Tomcat started on port(s): 8088 (http) with context path ''
2021-03-25 15:49:12.906  INFO 5656 --- [           main] com.yuwen.spring.demo.DemoApplication    : Started DemoApplication in 2.008 seconds (JVM running for 2.402)

9.查看微服务

浏览器输入URL:
http://localhost:8088
返回一个空白的错误页,
这是因为还没有对外提供Restful服务:


对应Restful服务的开发,
请参考SpringBoot开发Restful接口

10.其他功能

为了让SpringBoot工程更加方便开发,
下面提供一些建议配置。

10.1.添加Spring Boot开发工具

主要用于开发调试时代码自动重新部署:

<dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-devtools</artifactId>
    <scope>runtime</scope>
    <optional>true</optional>
</dependency>

10.2.添加Junit单元测试

请参考SpringBoot集成Junit单元测试

10.3.添加Log4j2日志框架

请参考SpringBoot集成Log4j2框架

推荐阅读更多精彩内容