美文网首页
Spring Boot开发 之 热部署

Spring Boot开发 之 热部署

作者: 诺之林 | 来源:发表于2018-12-20 11:27 被阅读46次

    本文的示例代码参考HotDeploy

    目录

    开发环境

    初始项目

    spring init -a demo -b 2.0.6.RELEASE --build gradle -dweb -l kotlin HotDeploy
    
    cd HotDeploy
    

    关于更多springboot命令行工具使用 可以参考Kotlin起步

    vim src/main/kotlin/com/example/demo/DemoController.kt
    
    package com.example.demo;
    
    import org.springframework.web.bind.annotation.GetMapping
    import org.springframework.web.bind.annotation.RestController
    
    @RestController
    class DemoController {
        @GetMapping("/demo")
        fun demo(): String {
            return "Version 1"
        }
    }
    
    • 测试
    ./gradlew bootrun
    
    curl localhost:8080/demo
    # Version 1
    

    配置Idea

    springboot-hotdeploy-01.png springboot-hotdeploy-02.png

    详细配置可以参考Intellij IDEA Java classes not auto compiling on save

    配置Gradle

    vim build.gradle
    
    dependencies {
        implementation('org.springframework.boot:spring-boot-starter-web')
        implementation('com.fasterxml.jackson.module:jackson-module-kotlin')
        implementation("org.jetbrains.kotlin:kotlin-stdlib-jdk8")
        implementation("org.jetbrains.kotlin:kotlin-reflect")
        runtimeOnly('org.springframework.boot:spring-boot-devtools')
        testImplementation('org.springframework.boot:spring-boot-starter-test')
    }
    
    • 使用Idea运行项目
    curl localhost:8080/demo
    # Version 1
    
    vim src/main/kotlin/com/example/demo/DemoController.kt
    
    package com.example.demo;
    
    import org.springframework.web.bind.annotation.GetMapping
    import org.springframework.web.bind.annotation.RestController
    
    @RestController
    class DemoController {
        @GetMapping("/demo")
        fun demo(): String {
            return "Version 2"
        }
    }
    
    • 测试
    curl localhost:8080/demo
    # Version 2
    

    生产环境

    Fully Executable

    ./gradlew build
    
    java -jar build/libs/demo-0.0.1-SNAPSHOT.jar
    
    curl localhost:8080/demo
    # Version 2
    
    vim build.gradle
    
    bootJar {
        launchScript()
    }
    
    ./gradlew build
    
    ./build/libs/demo-0.0.1-SNAPSHOT.jar
    
    curl localhost:8080/demo
    # Version 2
    

    关于Gradle的配置可以参考64. Installing Spring Boot Applications4.4.4. Making an archive fully executable

    Service

    echo "server.port=5858" >> application.properties
    
    vim demo.service
    
    [Unit]
    Description=demo
    After=syslog.target
    
    [Service]
    User=dev
    ExecStart=/home/dev/temp/demo-0.0.1-SNAPSHOT.jar --spring.config.location=/home/dev/temp/application.properties
    SuccessExitStatus=143
    
    [Install]
    WantedBy=multi-user.target
    
    sudo cp demo.service /etc/systemd/system/
    
    # flag the application to start automatically on system boot
    systemctl enable fourier.service
    
    • 测试
    sudo service demo start
    
    curl localhost:5858/demo
    # Version 2
    

    Customizing

    vim demo.conf
    
    JAVA_OPTS='-Xms512m -Xmx512m -XX:MaxPermSize=256m -XX:ReservedCodeCacheSize=256m -Dfile.encoding=UTF-8'
    RUN_ARGS=--spring.config.location=/home/dev/temp/application.properties
    
    vim demo.service
    
    [Unit]
    Description=demo
    After=syslog.target
    
    [Service]
    User=dev
    ExecStart=/home/dev/temp/demo-0.0.1-SNAPSHOT.jar
    SuccessExitStatus=143
    
    [Install]
    WantedBy=multi-user.target
    
    • 测试
    sudo service demo restart
    
    curl localhost:5858/demo
    # Version 2
    

    参考

    相关文章

      网友评论

          本文标题:Spring Boot开发 之 热部署

          本文链接:https://www.haomeiwen.com/subject/sxkkkqtx.html