`
rensanning
  • 浏览: 3547965 次
  • 性别: Icon_minigender_1
  • 来自: 大连
博客专栏
Efef1dba-f7dd-3931-8a61-8e1c76c3e39f
使用Titanium Mo...
浏览量:38135
Bbab2146-6e1d-3c50-acd6-c8bae29e307d
Cordova 3.x入门...
浏览量:607263
C08766e7-8a33-3f9b-9155-654af05c3484
常用Java开源Libra...
浏览量:682257
77063fb3-0ee7-3bfa-9c72-2a0234ebf83e
搭建 CentOS 6 服...
浏览量:89320
E40e5e76-1f3b-398e-b6a6-dc9cfbb38156
Spring Boot 入...
浏览量:401815
Abe39461-b089-344f-99fa-cdfbddea0e18
基于Spring Secu...
浏览量:69685
66a41a70-fdf0-3dc9-aa31-19b7e8b24672
MQTT入门
浏览量:91692
社区版块
存档分类
最新评论

Spring Boot 入门 - 基础篇(15)- 工程部署

 
阅读更多
(1)开发阶段

一般开发过程:
1)-写代码
2)- [Run As]→[Spring Boot App]启动服务
3)-页面确认
4)-修改代码
5)-通过控制台停止服务
6)- [Run As]→[Spring Boot App]再启动服务
7)-循环3)

这样重复的停止再启动服务是麻烦的。通过 Spring Loaded 或 SpringBoot Dev Tools 都可以实现热部署,无需重新启动即可生效。

1)SpringLoaded:JVM在运行中重新加载class。
下载springloaded-1.2.5.RELEASE.jar,[Run]→[Run Configurations..] 时设置VM arguments : -javaagent:<pathTo>/springloaded-1.2.5.RELEASE.jar -noverify。这样代码修改编译后1到2秒就会被重新加载,不过控制台没有log。但不支持增加class。

2)SpringBoot DevTools:监视classpath下的文件,如果有修改就自动重启服务。

pom.xml
<dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-devtools</artifactId>
    <optional>true</optional>
</dependency>

optional=true 表示依赖不会传递。devtools只对当前项目启用,而其他依赖该项目的项目,需要时需重新引入。

启动服务会看到以下Log:
引用
14:27:20.127 [main] DEBUG org.springframework.boot.devtools.settings.DevToolsSettings - Included patterns for restart : []
14:27:20.130 [main] DEBUG org.springframework.boot.devtools.settings.DevToolsSettings - Excluded patterns for restart : [/spring-boot-starter/target/classes/, /spring-boot-autoconfigure/target/classes/, /spring-boot-starter-[\w-]+/, /spring-boot/target/classes/, /spring-boot-actuator/target/classes/, /spring-boot-devtools/target/classes/]
14:27:20.130 [main] DEBUG org.springframework.boot.devtools.restart.ChangeableUrls - Matching URLs for reloading : [file:/D:/springbootsample/MybatisDemo/target/classes/]


Eclipse开启了自动编译,在修改完Java代码保存后,后台就会看到服务自动重启了。

默认监听 classpath 下的文件变动,附加文件改变监听的话。
application.properties
引用
spring.devtools.restart.additional-paths=


Thymeleaf模板自动更新
引用
spring.thymeleaf.cache=false
spring.thymeleaf.prefix=file:///D:/springbootsample/MybatisDemo/src/main/resources/templates/


静态资源自动更新
引用
spring.resources.cache-period=0
spring.resources.static-locations=file:///D:/springbootsample/MybatisDemo/src/main/resources/static/


同时SpringBoot还启动了一个嵌入式LiveReload服务,服务器有修改是浏览器会自动刷新
引用
2017-02-16 14:27:24.153  INFO 5088 --- [  restartedMain] o.s.b.d.a.OptionalLiveReloadServer       : LiveReload server is running on port 35729


(2)部署阶段

生成可执行jar

pom.xml
  <plugin>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-maven-plugin</artifactId>
    <configuration>
        <executable>true</executable>
    </configuration>
  </plugin>

引用
$ mvn clean package
$ java -jar your-app.jar


your-app.jar/META-INF/MANIFEST.MF
引用
Main-Class: org.springframework.boot.loader.JarLauncher
Start-Class: com.rensanning.springboot.MybatisDemoApplication
Spring-Boot-Classes: BOOT-INF/classes/
Spring-Boot-Lib: BOOT-INF/lib/


生成可执行war

pom.xml
  <packaging>war</packaging>


pom.xml
  <dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-tomcat</artifactId>
    <scope>provided</scope>
  </dependency>


pom.xml
  <plugin>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-maven-plugin</artifactId>
  </plugin>


引用
$ mvn clean package


your-app.war/META-INF/MANIFEST.MF
引用
Main-Class: org.springframework.boot.loader.WarLauncher
Start-Class: com.rensanning.springboot.MybatisDemoApplication
Spring-Boot-Classes: WEB-INF/classes/
Spring-Boot-Lib: WEB-INF/lib/


避免和第三方容器冲突,嵌入式Tomcat的包会被放进WEB-INF/lib-provided,就既支持直接执行又支持放入第三方容器了。

依据Servlet 3.0标准,可以没有web.xml但需要一个WebApplicationInitializer的实现。

@SpringBootApplication
public class Application extends SpringBootServletInitializer {

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

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


引用
$ mvn clean package
$ java -jar your-app.war


但是并不建议打包成可执行的war,所以要将嵌入式Tomcat的包(WEB-INF/lib-provided)也从war包中去掉。
<dependency>
  <groupId>org.springframework.boot</groupId>
  <artifactId>spring-boot-starter-web</artifactId>
    <exclusions>
        <exclusion>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-tomcat</artifactId>
        </exclusion>
    </exclusions>
</dependency>
分享到:
评论

相关推荐

    spring-boot-study-base.zip

    总的来说,"spring-boot-study-base.zip"是一个很好的Spring Boot入门教程,它涵盖了从基础到实践的关键知识点。通过学习和实践,你可以快速掌握Spring Boot的精髓,从而在实际开发中提高效率,构建出更加健壮和灵活...

    spring boot入门的第一个项目

    本篇文章将深入探讨Spring Boot入门项目的构建过程,以及它如何与微服务和分布式系统相结合。 **1. Spring Boot基础知识** Spring Boot 的核心理念是“约定优于配置”。它通过内置的Tomcat服务器、自动配置的Spring...

    Spring boot 入门实例

    ### 二、Spring Boot入门实例步骤 #### 1. 创建项目 首先,我们需要一个支持Spring Boot的IDE,如IntelliJ IDEA。然后,通过IDE的新建项目向导,选择Spring Initializr来创建一个新的Spring Boot项目。在这个向导...

    spring boot入门篇demo+ppt

    在"spring boot入门篇demo+ppt"中,我们可以期待学习以下核心知识点: 1. **Spring Boot基础知识**:了解Spring Boot的基本概念,包括其设计目标、主要特性以及与其他Spring框架的关系。 2. **起步依赖(Starter)...

    Spring Boot 笔记1

    在本篇Spring Boot笔记中,我们将探讨Spring Boot的核心特性、如何创建一个简单的Spring Boot应用以及相关的Maven配置。Spring Boot是Spring框架的一个扩展,旨在简化Spring应用的初始搭建以及开发过程,提供了一种...

    spring boot入门ppt和代码

    接下来,我们来看 `spring boot入门篇.pptx`,这个PPT很可能是对Spring Boot基础知识的详细讲解,可能包括以下内容: 1. **Spring Boot简介**:介绍Spring Boot的诞生背景、目标以及主要特点。 2. **环境准备**:...

    Spring boot(一): 入门篇.rar_springboot

    通过阅读 "Spring boot(一): 入门篇.pdf" 和 "Spring boot(二):web综合开发.pdf",你可以深入了解 Spring Boot 的基本概念、快速上手指南以及如何进行 Web 应用的综合开发。这些资料将引导你从初识 Spring Boot 到...

    Spring Boot官方文档pdf

    - **Starters**: Spring Boot 提供了一系列的 Starter POMs,用于快速搭建项目所需的基础结构。 - **代码结构**: - **默认包**: 建议使用默认包还是自定义包结构。 - **主应用类定位**: 主类的位置对自动配置和...

    Spring Boot核心技术-笔记

    本篇笔记将介绍Spring Boot的核心概念、微服务架构、环境准备、入门案例以及相关开发工具的配置方法。 1. Spring Boot简介 Spring Boot是由Pivotal团队提供的开源框架,它使用“约定优于配置”的原则,旨在简化...

    [E文]Spring Boot 2 Recipes

    - **基础篇**:介绍 Spring Boot 的基本概念、安装和配置等基础知识。 - **进阶篇**:探讨如何利用 Spring Boot 构建复杂的应用程序,包括安全性和性能优化等方面。 - **实践篇**:提供一系列实战案例,涵盖微服务...

    spring-boot-and-all-all-all

    《Spring Boot全方位解析:从入门到精通》 Spring Boot,作为Java生态系统中的明星框架,以其“开箱即用”的特性,极大地简化了Spring应用的初始搭建以及开发过程。本篇文章将深入探讨Spring Boot的核心概念、关键...

    尚硅谷Spring Boot课堂笔记.rar

    总之,《尚硅谷Spring Boot课堂笔记》是一份全面而实用的学习材料,不仅适合初学者入门,也对有一定基础的开发者有很高的参考价值。通过深入学习和实践,开发者能够充分利用Spring Boot的优势,高效地开发和管理Java...

    SpringBoot讲义.pdf

    #### 一、Spring Boot 快速入门及基础知识 - **Spring Boot 简介**: - **定义**:Spring Boot 是 Spring 家族中的一个新成员,旨在简化 Spring 应用的初始搭建以及开发过程。 - **优势**: - 自动配置:Spring ...

    实用的 Spring Boot 学习资源库

    涵盖了 Spring Boot 的多个方面,包括基础入门、Web 开发、数据存储、缓存、日志管理、应用部署、安全控制、中间件集成以及源码解析等,几乎涉及了 Spring Boot 开发中的所有关键领域,形成了一个完整的知识体系。...

    springcloud项目基础搭建

    本篇文章将详细讲解如何进行SpringCloud项目的基础搭建,这是一个不涉及数据交互的简单示例,适合初学者入门。 首先,我们需要在本地安装Java开发环境,确保JDK版本在1.8及以上,因为SpringCloud通常与SpringBoot...

    spring快速入门与提高

    在提高篇中,你将会学习如何利用Spring Boot进行快速应用开发,它简化了Spring应用的配置,内置了Tomcat服务器,并且提供了大量的起步依赖,使得创建和部署Spring应用变得更加便捷。Spring Boot还支持Actuator,一个...

    Spring全家桶核心篇:SpringBoot快速入门 源码

    内容概要:该资源是Spring全家桶视频课程的第三部分Spring Boot的源码,其对于Spring Boot的最常用的第一个小程序、JavaConfig和常见注解、启动改变、热部署、Springboot整合Thymeleaf/freemarker/JSP、异常处理、...

    初识java,用springBoot学习java

    2. **Spring Boot入门** - **自动配置**:Spring Boot的核心特性之一,根据项目依赖自动配置相关组件。 - **起步依赖**:通过引入特定的起步依赖(Starter POMs),可以快速引入所需功能模块,如spring-boot-...

    SpringBoot.docx

    为了实现开发中的热部署,即修改代码后无需手动重启应用即可生效,需要引入 `spring-boot-devtools` 依赖。该依赖提供了自动重启应用的功能,提高了开发效率。 在 SpringBoot 中,配置文件通常是 YAML 格式(也可以...

Global site tag (gtag.js) - Google Analytics