Spring Boot 进阶系列(一)Hello World 项

2019-07-20  本文已影响0人  回文体文回

文章使用版本为 Spring Boot 2.1.x

对应入门系列 Spring Boot 入门系列(一) Hello World

pom 文件

<?xml version="1.0" encoding="UTF-8"?>
<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>org.schhx.springbootlearn</groupId>
    <artifactId>spring-boot-helloworld</artifactId>
    <version>0.0.1-SNAPSHOT</version>
    <packaging>jar</packaging>

    <name>spring-boot-helloworld</name>
    <description>Demo project for Spring Boot</description>

    <parent>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-parent</artifactId>
        <version>2.1.2.RELEASE</version>
        <relativePath/> <!-- lookup parent from repository -->
    </parent>

    <properties>
        <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
        <project.reporting.outputEncoding>UTF-8</project.reporting.outputEncoding>
        <java.version>1.8</java.version>
    </properties>

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

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

    <build>
        <plugins>
            <plugin>
                <groupId>org.springframework.boot</groupId>
                <artifactId>spring-boot-maven-plugin</artifactId>
            </plugin>
        </plugins>
    </build>


</project>

上面就是自动生成的 pom.xml 文件,它是一个非常典型的 Spring Boot 项目的 pom 文件,包含如下几个部分:

使用 Spring Boot 的好处

使用 Spring Boot 能大大简化我们开发的难度,这主要依赖于以下几个方面:

使用自定义 parent pom

上面我们说到 Spring Boot 项目的 parent pom 需要指定为 spring-boot-starter-parent,但是有些情况下我们必须使用其他的 parent pom 怎么办呢?比如公司有统一的 parent pom,这个时候怎么办呢?

方法一

第一种解决办法是在公司统一的 parent pom 中引入 Spring Boot,这是一个比较好的方法,这样可以使大家使用 Spring Boot 的版本一致,有利于整个公司的管理。

方法二

如果无法通过 parent pom 引入 Spring Boot,那么我们只要在 pom 文件中加入以下配置就可以了。

<dependencyManagement>
    <dependencies>
        <dependency>
            <!-- Import dependency management from Spring Boot -->
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-dependencies</artifactId>
            <version>2.1.6.RELEASE</version>
            <type>pom</type>
            <scope>import</scope>
        </dependency>
    </dependencies>
</dependencyManagement>

打包成 war

使用 Spring Boot 构建 web 项目时,默认会打包成 jar 包,这是推荐的使用方式,但是如果需要打包成 war 包,也是可以的,但是还是推荐大家打包成 jar 包。

第一步

让项目启动类继承 SpringBootServletInitializer 并重写 configure 方法。

@SpringBootApplication
public class SpringBootHelloworldApplication extends SpringBootServletInitializer {

    @Override
    protected SpringApplicationBuilder configure(SpringApplicationBuilder application) {
        return application.sources(SpringBootHelloworldApplication.class);
    }

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

第二步

在 pom 文件中加入以下配置:

<packaging>war</packaging>

第三步

去除 web 容器的依赖:

<dependencies>
    <!-- … -->
    <dependency>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-tomcat</artifactId>
        <scope>provided</scope>
    </dependency>
    <!-- … -->
</dependencies>

大家可以查看 官方文档 获取更详细的信息。

使用 Jetty

Spring Boot 默认使用 Tomcat 作为内置 web 容器,如果需要使用其他的 web 容器则可以做如下配置(以更换为 Jetty)为例:

<properties>
    <servlet-api.version>3.1.0</servlet-api.version>
</properties>
<dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-web</artifactId>
    <exclusions>
        <!-- Exclude the Tomcat dependency -->
        <exclusion>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-tomcat</artifactId>
        </exclusion>
    </exclusions>
</dependency>
<!-- Use Jetty instead -->
<dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-jetty</artifactId>
</dependency>

这里还替换了 servlet-api 的版本,是因为 Jetty 9.4 不支持 Servlet 4.0,更多信息请查看 官方文档

上一篇下一篇

猜你喜欢

热点阅读