首页 > 其他分享 >Springboot基础知识(20)- spring-boot-starter-web | 基于 Gradle 的 Springboot Web 项目

Springboot基础知识(20)- spring-boot-starter-web | 基于 Gradle 的 Springboot Web 项目

时间:2023-03-08 12:11:06浏览次数:52  
标签:web 20 SpringbootWebGradle jar boot Gradle java gradle Springboot


Spring Boot 是在 Spring 的基础上创建一款开源框架,它提供了 spring-boot-starter-web(Web 启动器) 来为 Web 开发予以支持。spring-boot-starter-web 为我们提供了嵌入的 Servlet 容器以及 SpringMVC 的依赖,并为 Spring MVC 提供了大量自动配置,可以适用于大多数 Web 开发场景。

Gradle 是一个开源自动化构建工具,它的核心基于 Groovy 的丰富而可扩展的域描述语言(DSL),而不是基于可扩展的标记语言(XML)来定义构建脚本。

Gradle 是 Android 的官方构建工具,它提供了与多种开发工具和服务器的集成,包括 Eclipse,IntelliJ,Jenkins 和Android Studio。

在 “ Springboot基础知识(08)- spring-boot-starter-web(Web启动器)” 里创建了基于 Maven 的 Springboot Web 项目,本文基于 Gradle 创建一个 Springboot Web 项目。

1. 创建 Java 项目

    1) 系统环境

        Spring Boot 版本及其环境配置要求如下表。

            Spring Boot     2.x
            JDK             8.0 及以上版本
            Gradle          7.x
            IntelliJ IDEA     14.0 以上

        本文将在 Windows 下使用 IntelliJ IDEA 和 Gradle 创建 Java 项目,在开始之前,确保已经正确搭建了 Spring 开发环境,参考 “ Spring基础知识(1)- Spring简介、Spring体系结构和开发环境配置 ”。

            Windows 版本 : Windows 10 Home (20H2)   
            IntelliJ IDEA:Community Edition for Windows 2020.1.4
            Gradle:7.0

        Gradle 的安装配置,参考 “ Maven基础知识(12)- Gradle 简介、Gradle 安装配置、创建 Java 项目 ”。本文 Gradle 7.0 的安装路径是 C:\Applications\Java\gradle-7.0,grade 工作目录 C:/Applications/Java/gradle-rep,修改 IDEA 的 Gradle 配置如下:

            IDEA 菜单 File -> Settings -> Build, Execution, Deployment -> Build Tools -> Gradle

                Gradle User Home: C:/Applications/Java/gradle-rep

                Use Gradel from: Specified location -> C:/Applications/Java/gradle-7.0 

    2) 运行 IDEA 创建项目 

        点击菜单 New 创建 Project:
        
        New Project -> Project Type: Gradle -> Additional Libraries and Frameworks: Java -> Next
        
            Name: SpringbootWebGradle
            GroupId: com.example
            ArtifactId: SpringbootWebGradle

        -> Finish

    3) 生成的项目目录结构和文件

        (1) 目录结构

            SpringbootWebGradle
                |- gradle
                |   |- wrapper
                |       |- gradle-wrapper.jar
                |       |- gradle-wrapper.properties
                |- src
                |   |- main
                |   |    |- java
                |   |    |- resources
                |   |
                |   |- test
                |        |- java
                |        |- resources
                |
                |- build.gradle
                |- settings.gradle
                |- gradlew
                |- gradlew.bat


            目录及文件说明:

                src/main/java:用于存放项目的 Java 文件;
                src/main/resources: 用于存放项目的资源文件;
                src/test/java:用于存放所有测试 Java 文件,如 JUnit 测试类;
                gradle:Gradle wrapper 的 jar 文件和配置文件;
                gradlew, gradlew.bat: Gradle wrapper 启动脚本;
                build.gradle: 构建文件;
                settings.gradle:Gradle 项目核心配置文件。

        (2) build.gradle 文件

            plugins {
                id 'java'
            }

            group 'com.example'
            version '1.0-SNAPSHOT'

            repositories {
                mavenCentral()
            }

            dependencies {
                testCompile group: 'junit', name: 'junit', version: '4.12'
            }


        (3) settings.gradle 文件

            rootProject.name = 'SpringbootWebGradle'


2. 配置 Springboot Web

    1) 修改 build.gradle 文件

        plugins {
            id 'java'
            id 'org.springframework.boot' version '2.6.6'
            id 'io.spring.dependency-management' version '1.0.11.RELEASE'
        }

        group 'com.example'
        version '1.0-SNAPSHOT'

        repositories {
            mavenLocal()
            mavenCentral()
        }

        dependencies {
            implementation 'org.springframework.boot:spring-boot-starter-web'
            implementation 'org.springframework.boot:spring-boot-starter-tomcat'
            testImplementation 'org.springframework.boot:spring-boot-starter-test'
        }
        


        使用 spring-boot-starter-tomcat 将 tomcat 内嵌到 web 项目中,打包成 jar 后可以直接用 Java 命令行运行,不需要再部署到额外的 tomcat 服务器上。

        也可以使用 Jetty 代替 Tomcat,两者不能同时内嵌,使用 Jetty 可用如下配置代码代替 Tomcat 的配置代码:

            implementation 'org.springframework.boot:spring-boot-starter-jetty'

        IDEA 菜单 View -> Tools Window -> Gradle -> 在 “SpringbootWebGradle” 点击鼠标右键 -> Reload Gradle Project


    2) 创建 src/main/java/com/example/App.java 文件

        package com.example;

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

        @SpringBootApplication
        public class App {
            public static void main(String[] args) {
                SpringApplication.run(App.class, args);
                System.out.println("Springboot web gradle");
            }
        }


    3) 创建 src/main/java/com/example/ServletInitializer.java 文件

        package com.example;

        import org.springframework.boot.builder.SpringApplicationBuilder;
        import org.springframework.boot.web.servlet.support.SpringBootServletInitializer;

        public class ServletInitializer extends SpringBootServletInitializer {

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

        }


    4) 创建 src/main/java/com/example/controller/IndexController.java 文件

        package com.example.controller;

        import org.springframework.stereotype.Controller;
        import org.springframework.web.bind.annotation.RequestMapping;
        import org.springframework.web.bind.annotation.ResponseBody;

        @Controller
        public class IndexController {
            @ResponseBody
            @RequestMapping("/hello")
            public String hello() {
                return "Hello page";
            }
        }

        注: src/main/java/com/example/controller 目录不存在,手动创建各级目录,下同。

    5) 创建 src/main/resources/application.properties 文件

        spring.main.banner-mode=off

        # Web server
        server.display-name=SpringbootWebGradle
        server.address=localhost
        server.port=9090

    6) 运行

        (1) Run App.main()

            Open App.java, click mouse right button, select Run "App.main()"

        (2) Edit Configurations

            Click "+" add new configuration -> Select "Gradle"
                Gradle Project: SpringbootWebGradle (click button to select a project)
                Tasks: clean bootRun
                Name: SpringbootWebGradle [clean bootRun]
            -> Apply / OK

        Click Run "SpringbootWebGradle [clean bootRun]"

            ...

            Springboot web gradle        

        访问 http://localhost:9090/hello

            Hello page
            

        注:以上都是在 IDEA 英文版上的操作。jar 打包可以将 Tasks 改成 clean bootJar 或 clean jar。


3. 打包

    1) jar 打包

        (1) bootJar

            菜单 View -> Tool Windows -> Gradle -> SpringbootWebGradle -> Tasks -> build -> bootJar(鼠标左键双击)  

            jar 包生成在目录 build/libs 里

                SpringbootWebGradle-1.0-SNAPSHOT.jar

            注:SpringbootWebGradle-1.0-SNAPSHOT.jar 包含依赖包,可以直接运行。

        (2) jar

            菜单 View -> Tool Windows -> Gradle -> SpringbootWebGradle -> Tasks -> build -> jar(鼠标左键双击)

            jar 包生成在目录 build/libs 里

                SpringbootWebGradle-1.0-SNAPSHOT-plain.jar

            注:SpringbootWebGradle-1.0-SNAPSHOT-plain.jar 不包含依赖包,无法直接运行。

        (3) 运行

            点击 IDEA 底部 Terminal 标签页,执行如下命令。

            $ java -jar build/libs/SpringbootWebGradle-1.0-SNAPSHOT.jar

                ...

                Springboot web gradle    

            访问 http://localhost:9090/hello,页面显示:

                Hello page

    2) war 打包

        (1) 修改 build.gradle

            plugins {
                id 'java'
                id 'org.springframework.boot' version '2.6.6'
                id 'io.spring.dependency-management' version '1.0.11.RELEASE'
                id 'war'
            }

            war {
                archiveFileName = 'SpringbootWebGradle.war'
                //archiveName = 'SpringbootWebGradle.war'
            }

            ...


            注:添加 war 插件,使用 archiveFileName 指定输出的包名,archiveName 已不推荐使用(废弃)。

            IDEA 菜单 View -> Tools Window -> Gradle -> 在 “SpringbootWebGradle” 点击鼠标右键 -> Reload Gradle Project
        
        (2) war

            菜单 View -> Tool Windows -> Gradle -> SpringbootWebGradle -> Tasks -> build -> war(鼠标左键双击)

            war 包生成在目录 build/libs 里

                SpringbootWebGradle.war

        (3) 运行

            把 SpringbootWebGradle.war 复制到独立运行的 Tomcat 下 webapp 目录,默认设置的 Tomcat 运行在 8080 端口。

            Tomcat 会自动解压 SpringbootWebGradle.war,在 webapp 下产生 SpringbootWebGradle 目录,访问 http://localhost:8080/SpringbootWebGradle/hello ,页面显示:

                Hello page


标签:web,20,SpringbootWebGradle,jar,boot,Gradle,java,gradle,Springboot
From: https://www.cnblogs.com/tkuang/p/17191589.html

相关文章

  • [NISACTF 2022]popchains
    [NISACTF2022]popchains源代码<?phpecho'HappyNewYear~MAKEAWISH<br>';if(isset($_GET['wish'])){@unserialize($_GET['wish']);}else{$a=newRo......
  • 迅为3A5000_7A2000开发板龙芯全国产处理器LoongArch架构核心主板应用到很多
    iTOP-3A5000开发板采用全国产龙芯3A5000处理器,基于龙芯自主指令系统(LoongArch)的LA464微结构,并进一步提升频率,降低功耗,优化性能。在与龙芯3A4000处理器保持引脚兼容的基础......
  • A. Amateur Chess Players【GDUT 2022 grade Qualifying # 2】
    A.AmateurChessPlayers原题链接题意Atthebeginning,CuberQQ,whohasthewhitepieces,andQuberCC,whohastheblackpieces,placesomeoftheirpiec......
  • springboot redis 发布与订阅
    发布与订阅Redis的发布与订阅功能可以让客户端通过广播方式,将消息(message)同时发送给可能存在的多个客户端,并且发送消息的客户端不需要知道接收消息的客户端的具体信息。......
  • QOJ5256 [CERC2022] H. Insertions 题解
    题面题意:给定字符串\(S,T,P\),求将\(T\)插入进\(S\)之后\(P\)最多的出现次数。输出:最多的出现次数;达到这个最多出现次数的插入位置数量;达到这个最多出现次数......
  • MYSQL性能优化的最佳20+条经验
    MYSQL性能优化的最佳20+条经验 2009年11月27日  陈皓 评论 169条评论  254,080人阅读今天,数据库的操作越来越成为整个应用的性能瓶颈了,这点对于Web应用尤其......
  • 【题解】[Ynoi2010] y-fast trie
    题目分析:显然可以对于所有的\(x\)对\(C\)取模后处理。那么就是两种情况:\(x+y\geC\)\(x+y<C\)对于第一种情况直接找最大的两个数就好了,关键就是第二种情......
  • CobaltStrike WebServer 4.4 特征分析
    WebServer特征本文简单介绍了CobaltStike4.4版本的一些特征以及缓解措施。webserver处理逻辑漏洞请求状态码异常正常的服务器对于uri的开头不为/的情况,一般都会产生4......
  • JavaMail 邮件发送,有意思的附件名乱码 → 客户端正常,web端乱码
    开心一刻昨晚,媳妇很感伤的看着我媳妇:以后岁数大了,我要走你前面去了,你再找个老伴我:我不想找媳妇:你找一个,不用替我守着,以后你说你头疼发烧,也得有个给你......
  • web.xml 配置
    <!DOCTYPEweb-appPUBLIC"-//SunMicrosystems,Inc.//DTDWebApplication2.3//EN""http://java.sun.com/dtd/web-app_2_3.dtd"><web-app><display-name>Archetype......