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

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

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

pom 文件



    4.0.0

    org.schhx.springbootlearn
    spring-boot-helloworld
    0.0.1-SNAPSHOT
    jar

    spring-boot-helloworld
    Demo project for Spring Boot

    
        org.springframework.boot
        spring-boot-starter-parent
        2.1.2.RELEASE
         
    

    
        UTF-8
        UTF-8
        1.8
    

    
        
            org.springframework.boot
            spring-boot-starter-web
        

        
            org.springframework.boot
            spring-boot-starter-test
            test
        
    

    
        
            
                org.springframework.boot
                spring-boot-maven-plugin
            
        
    



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

  • 当前项目的 maven 配置
  • 指定 parent pom 为 spring-boot-starter-parent,这个非常重要,它帮我们管理所有依赖的版本。
  • 若干个 spring-boot-starter-xxx,这个也非常重要,它帮助我们引入所需要功能的所有依赖,并实现自动配置。
  • 打包插件 spring-boot-maven-plugin,它会把我们的 web 项目打包成一个可执行 jar 包,而不是一个 war 包。

使用 Spring Boot 的好处

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

  • 约定大于配置:Spring 本身很多地方就体现了约定大于配置,而 Spring Boot 更是把它发挥到了极致。使用约定大于配置一方面能简化我们的配置,另外一方面也能统一大家的认识,降低沟通成本。
  • 自动配置:通常我们需要实现什么功能,只要引入对应的 spring-boot-starter-xxx 就可以了,Spring Boot 会帮我们引入所有需要的 jar 包,并且自动配置好所需配置。比如我们想构建一个 web 应用,只需要引入 spring-boot-starter-web,剩下的完全可以交给 Spring Boot 自动配置。如果使用传统的 Spring MVC 的话,我们要手动引入一堆 jar 包,维护版本和依赖关系,手动配置一堆Spring MVC 相关的配置,才能把项目搭建好。
  • 自动维护依赖:引入项目所需 jar 包是一个非常繁琐的工作,除了要引入所有所需 jar 包,还要小心维护版本防止出现冲突。使用 Spring Boot 我们完全不需要关心版本以及依赖,这些 Spring Boot 会统统帮我们做好,我们只需要告诉 Spring Boot 使用哪个 spring-boot-starter-xxx 就可以了。

使用自定义 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 文件中加入以下配置就可以了。


    
        
            
            org.springframework.boot
            spring-boot-dependencies
            2.1.6.RELEASE
            pom
            import
        
    

打包成 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 文件中加入以下配置:

war

第三步

去除 web 容器的依赖:


    
    
        org.springframework.boot
        spring-boot-starter-tomcat
        provided
    
    

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

使用 Jetty

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


    3.1.0


    org.springframework.boot
    spring-boot-starter-web
    
        
        
            org.springframework.boot
            spring-boot-starter-tomcat
        
    



    org.springframework.boot
    spring-boot-starter-jetty

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

你可能感兴趣的:(Spring Boot 进阶系列(一)Hello World 项目)