📜  Spring Boot – 包装

📅  最后修改于: 2022-05-13 01:55:20.382000             🧑  作者: Mango

Spring Boot – 包装

创建 Spring 框架是为了提供一个开源应用程序框架,以便为开发Java应用程序提供更好的基础架构支持。它是最流行的Java企业版 (Java EE) 框架之一,Spring 框架帮助开发人员使用普通的旧Java对象 (POJO) 创建高性能应用程序。但是使用 Spring 是一个繁琐的过程,因为我们必须手动管理它的配置。这里出现了 Spring-Boot,它的主要功能是自动配置,旨在简化应用程序开发过程。此外,Spring Boot 基本特性的核心是它的打包特性。

Spring Boot 应用打包的重要性

  1. Spring Boot 的打包功能有助于管理应用程序,其模块对于应用程序部署也很重要。
  2. Maven 和 Gradle 是 Spring 和 Spring Boot 支持的最常用的包管理技术。
  3. 他们都提供了各自的插件,这些插件实际上可以打包——(Spring Boot Maven 插件/Spring Boot Gradle 插件)。
  4. 它们确保所有依赖库都包含在可执行 JAR 文件中并在运行时类路径中可用。
  5. Spring Boot Maven 插件允许开发人员打包可执行的 jar 或 war 档案,同时运行应用程序。 Spring 提供嵌入式容器支持。
  6. 它还为我们提供了排除依赖项的选项,以避免在外部容器中部署时潜在的 jar 冲突。
  7. 它还有助于在不使用 jar 命令 ( Java -jar) 的情况下独立运行“jar”文件。
包装作为容器和管理器

包装作为容器和管理器

Spring Boot 中的封装类型

  1. 战争
  2. 绒球
  3. 耳朵
使用层次结构的封装方法

使用层次结构的封装方法

1. JAR 包装

  • JAR 代表Java存档。
  • 它封装了一个或多个Java类(EJB – Enterprise Java Beans)、一个清单和一个描述符(例如 – XML 文件),称为 JAR 文件。
  • 它的扩展名是'.jar'
  • 它是最底层的包装。
  • JAR 是用于打包库( Java类和元数据)和偶尔的桌面 UI 应用程序的传统打包方式。
  • 在 Spring Boot Applications 中,“jar”是部署在 Spring 的嵌入式服务器中的默认打包。
  • 在这里,JAR 封装的选择是有云意识的选择。
  • 所有Java云平台都能够运行可执行的 JAR 文件。
  • 因此,'Spring Initializr' 使 JAR 打包成为默认设置,除非您告诉它不这样做。
  • 如果您正在构建一个可执行的 JAR 文件,您必须选择以下任何一种:Thymeleaf、FreeMarker、Groovy 模板、JSP Java Server Pages、Mustache。
  • Spring Boot Maven 插件在 JAR 文件中生成一个清单文件,该文件将引导类作为可执行 JAR 的主类。
  • 使用 mvn 包构建应用程序后(右键单击项目 -> 运行方式 -> Maven Build 或 Maven Clean ),将在“目标”文件夹中创建应用程序的“.jar”文件。
  • 运行“.jar”文件后,您可以发出请求,例如 - http://localhost:8080/method mapping...
  • 由于 jar 是默认的,因此您不需要在 pom.xml ( Maven build ) 中包含包装标签。
  • 示例 – pom.xml
XML


    4.0.0
    
        org.springframework.boot
        spring-boot-starter-parent
        2.6.4
         
    
    sia
    Geeks
    0.0.1-SNAPSHOT
    Geeks
    GFG
    
        11
    
    
        
            org.springframework.boot
            spring-boot-starter
        
  
        
            org.springframework.boot
            spring-boot-starter-test
            test
        
    
  
    
        
            
                org.springframework.boot
                spring-boot-maven-plugin
            
        
    


Java
package gfg;
  
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
  
@SpringBootApplication
public class GfgWebApplication {
  
    public static void main(String[] args) {
        SpringApplication.run(GfgWebApplication.class, args);
    }
  
}


XML


    4.0.0
    
        org.springframework.boot
        spring-boot-starter-parent
        2.6.3
         
    
    sia
    GFG
    0.0.1-SNAPSHOT
    war
    GFG
    GeeksforGeeks
    
        11
    
    
        
            org.springframework.boot
            spring-boot-starter-thymeleaf
        
        
            org.springframework.boot
            spring-boot-starter-web
        
  
        
            org.springframework.boot
            spring-boot-starter-test
            test
        
        
            org.springframework.boot
            spring-boot-starter
        
        
            org.springframework.boot
            spring-boot-devtools
            runtime
            true
        
    
  
    
        
            
                org.springframework.boot
                spring-boot-maven-plugin
            
        
    
  


Java
package gfg;
  
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.boot.web.servlet.support.SpringBootServletInitializer;
  
@SpringBootApplication
public class GfGApplication extends SpringBootServletInitializer {
  
    public static void main(String[] args) {
        SpringApplication.run(GfGApplication.class, args);
    }
  
}


XML


    4.0.0
    
        org.springframework.boot
        spring-boot-starter-parent
        2.6.3
         
    
    sia
    ParentGFG
    0.0.1-SNAPSHOT
    pom
    ParentGFG
    Multi Module Project
    
        11
    
    
        
            org.springframework.boot
            spring-boot-starter-thymeleaf
        
        
            org.springframework.boot
            spring-boot-starter-web
        
  
        
            org.springframework.boot
            spring-boot-devtools
            runtime
            true
        
        
            org.projectlombok
            lombok
            true
        
        
            org.springframework.boot
            spring-boot-starter-test
            test
        
    
  
    
        
            
                org.springframework.boot
                spring-boot-maven-plugin
                
                    
                        
                            org.projectlombok
                            lombok
                        
                    
                
            
        
    
  
    
        GFG-Module1
        GFG-Module2
    


示例 – GfgWebApplication。 Java ( 主类 - Spring Boot 应用程序的引导)

Java

package gfg;
  
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
  
@SpringBootApplication
public class GfgWebApplication {
  
    public static void main(String[] args) {
        SpringApplication.run(GfgWebApplication.class, args);
    }
  
}

2. 战争包装

  • WAR 代表 Web 存档。
  • 传统的Java Web 应用程序被打包为 WAR 文件。
  • WAR 文件非常适合部署到传统的Java应用程序服务器。
  • 一些云平台(例如 CloudFoundry)能够部署和运行 WAR 文件。
  • 您需要在 pom.xml – Maven 构建文件中包含“ war ”。
  • Web 模块包含 servlet 类、JSP 文件、HTML 文件、JavaScripts 等,它们被打包为带有 .war 扩展名的 JAR 文件。
  • 它包含一个名为 WEB-INF 的特殊目录。
  • Java servlet 容器——包括嵌入式 Tomcat 和 Jetty 容器——通常在 /WEB-INF 下的某处寻找 JSP。
  • 但是,如果您将应用程序构建为可执行 JAR 文件,则无法满足该要求。
  • 因此,在使用 WAR 打包时,您只需要在应用程序的网页中使用 JSP( Java服务器页面)。

示例 – pom.xml (Maven)

XML



    4.0.0
    
        org.springframework.boot
        spring-boot-starter-parent
        2.6.3
         
    
    sia
    GFG
    0.0.1-SNAPSHOT
    war
    GFG
    GeeksforGeeks
    
        11
    
    
        
            org.springframework.boot
            spring-boot-starter-thymeleaf
        
        
            org.springframework.boot
            spring-boot-starter-web
        
  
        
            org.springframework.boot
            spring-boot-starter-test
            test
        
        
            org.springframework.boot
            spring-boot-starter
        
        
            org.springframework.boot
            spring-boot-devtools
            runtime
            true
        
    
  
    
        
            
                org.springframework.boot
                spring-boot-maven-plugin
            
        
    
  

示例 – GfGApplication。 Java (主类 - 应用程序的引导)

Java

package gfg;
  
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.boot.web.servlet.support.SpringBootServletInitializer;
  
@SpringBootApplication
public class GfGApplication extends SpringBootServletInitializer {
  
    public static void main(String[] args) {
        SpringApplication.run(GfGApplication.class, args);
    }
  
}

使用 WAR 包装

  1. 为了构建我们的 Tomcat 可部署 WAR 应用程序,我们执行 mvn 包(右键单击项目 -> 运行方式 -> Maven Build 或 Maven Clean )。
  2. 刷新后,我们的WAR文件生成在target/________.war
  3. 将我们的 WAR 文件从 target/________.war 复制到 tomcat/webapps/
  4. 从终端导航到 tomcat/bin 文件夹并执行 - catalina.bat run(在 Windows 上), catalina.sh run(在基于 Unix 的系统上)。
  5. 进入http://localhost:8080/'.war文件名'/方法映射

3. POM 包装

  • 我们可以使用 Spring Boot 将应用程序作为多模块项目。
  • 在多模块项目中,一个应用程序被划分为多个模块,每个模块在应用程序的某些功能中扮演着重要的角色。
  • 一个模块可以被认为是一个独立的项目或子项目。
  • 这些模块还与其他模块协调。
  • 因此我们需要借助 pom 打包来管理它们。
  • pom 打包充当其他子模块的容器,这些子模块本身被打包在 jar 或 war 文件中。
  • pom 包装可以具有具有不同包装的子模块。
  • 您需要在 pom.xml 文件中包含“ pom ”。
  • 它们被声明并列在“模块”标签中。
捆绑模块

捆绑模块

示例 – pom.xml (Maven)

XML



    4.0.0
    
        org.springframework.boot
        spring-boot-starter-parent
        2.6.3
         
    
    sia
    ParentGFG
    0.0.1-SNAPSHOT
    pom
    ParentGFG
    Multi Module Project
    
        11
    
    
        
            org.springframework.boot
            spring-boot-starter-thymeleaf
        
        
            org.springframework.boot
            spring-boot-starter-web
        
  
        
            org.springframework.boot
            spring-boot-devtools
            runtime
            true
        
        
            org.projectlombok
            lombok
            true
        
        
            org.springframework.boot
            spring-boot-starter-test
            test
        
    
  
    
        
            
                org.springframework.boot
                spring-boot-maven-plugin
                
                    
                        
                            org.projectlombok
                            lombok
                        
                    
                
            
        
    
  
    
        GFG-Module1
        GFG-Module2
    

4. EAR 包装

  • EAR 代表企业档案。
  • 它的文件有一个“.ear”扩展名。
  • 它可以包含多个 EJB – Enterprise Java Beans 模块 (JAR) 和 Web 模块 (WAR)。
  • 它是一个特殊的 JAR,在 META-INF 文件夹中包含一个 application.xml 文件。