[翻译]SpringBoot系列-Spring Boot 参考2

本文翻译自:http://docs.spring.io/spring-boot/docs/2.0.0.M2/reference/htmlsingle/

20.3 动态载入

spring-boot-devtools模块包含了嵌入式的动态重载服务器,在资源更新时能触发浏览器刷新。动态载入浏览器对chrome,firefox和safari是可用的。

如果你在启动应用时不想启动动态载入服务器,可以设定spring.devtools.livereload.enabledfalse

注意:你一次只能运行一个动态载入服务器。在你的应用启动之前,确认没有其他的动态载入服务器在运行。如果你在IDE中启动了多个程序,只有第一次启动的那个服务器是正常的。

20.4 全局设定

你可以在$HOME文件夹中添加名为.spring-boot-devtools.propeties的文件,来配置全局设定(注意文件的名称前缀为".")。任何添加到这个文件的属性都会作用于在你的开发环境的springboot程序。比如,配置重启触发文件,你可以添加:

*~/.spring-boot-devtools.properties. *

spring.devtools.reload.trigger-file=.reloadtrigger

20.5 远程应用

springboot开发工具不仅仅能在本地开发。你还能使用一些远程应用的特征。远程支持是可选的,需要确认devtools包含在打包插件中。

<build>
    <plugins>
        <plugin>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-maven-plugin</artifactId>
            <configuration>
                <excludeDevtools>false</excludeDevtools>
            </configuration>
        </plugin>
    </plugins>
</build>

然后你需要设定spring.devtools.remote.secret属性,比如:

spring.devtools.remote.secret=mysecret

注意:远程使用spring-boot-devtools是个冒险的决定,你应该绝对禁止在生产环境中使用。

远程devtools支持分为两部分,一部分是可连接的服务器端,一部分是在你的IDE中运行的客户端。如果spring.devtools.remote.secret被设定,那么服务器组件自动变为可用。客户端组件需要手动加入。

20.5.1运行远端客户端程序

远端客户端程序被设计在运行在你的IDE中。你需要使用相同的classpath来运行org.springframework.boot.devtools.RemoteSpringApplication,以作为你连接的远端项目。
零配置参数的应用程序应该是一个可以连接的远端URL。

比如,如果你使用Eclipse或者STS,你的项目名称叫my-app,你部署在云端,你应该做如下的工作:

  • Run菜单中选择Run Configuration...
  • 创建一个新的Java Application来启动配置
  • 浏览my-app项目
  • 使用org.springframework.boot.devtools.RemoteSpringApplication作为main类
  • 添加https://myapp.cfapps.ioProgram arguments(或者任何你的远程URL)

一个运行的远程客户端会像如下一样的展示:

  .   ____          _                                              __ _ _
 /\\ / ___'_ __ _ _(_)_ __  __ _          ___               _      \ \ \ \
( ( )\___ | '_ | '_| | '_ \/ _` |        | _ \___ _ __  ___| |_ ___ \ \ \ \
 \\/  ___)| |_)| | | | | || (_| []::::::[]   / -_) '  \/ _ \  _/ -_) ) ) ) )
  '  |____| .__|_| |_|_| |_\__, |        |_|_\___|_|_|_\___/\__\___|/ / / /
 =========|_|==============|___/===================================/_/_/_/
 :: Spring Boot Remote :: 2.0.0.M2

2015-06-10 18:25:06.632  INFO 14938 --- [           main] o.s.b.devtools.RemoteSpringApplication   : Starting RemoteSpringApplication on pwmbp with PID 14938 (/Users/pwebb/projects/spring-boot/code/spring-boot-devtools/target/classes started by pwebb in /Users/pwebb/projects/spring-boot/code/spring-boot-samples/spring-boot-sample-devtools)
2015-06-10 18:25:06.671  INFO 14938 --- [           main] s.c.a.AnnotationConfigApplicationContext : Refreshing org.springframework.context.annotation.AnnotationConfigApplicationContext@2a17b7b6: startup date [Wed Jun 10 18:25:06 PDT 2015]; root of context hierarchy
2015-06-10 18:25:07.043  WARN 14938 --- [           main] o.s.b.d.r.c.RemoteClientConfiguration    : The connection to http://localhost:8080 is insecure. You should use a URL starting with 'https://'.
2015-06-10 18:25:07.074  INFO 14938 --- [           main] o.s.b.d.a.OptionalLiveReloadServer       : LiveReload server is running on port 35729
2015-06-10 18:25:07.130  INFO 14938 --- [           main] o.s.b.devtools.RemoteSpringApplication   : Started RemoteSpringApplication in 0.74 seconds (JVM running for 1.105)

注意:因为远程客户端使用与实际应用程序相同的类路径,所以能直接读取到应用的属性。这也是spring.devtools.remote.secret属性读取,和通过服务器安全验证的原因。

推荐使用https://作为连接协议,这样连接是加密的,密码也不会被截获。

如果你需要使用代理来进入远程应用,配置spring.devtools.remote.proxy.hostspring.devtools.remote.proxy.port属性。

20.5.2 远程更新

远程客户端会像本地重启服务一样监控你的应用路径中的改变。任何更新资源的操作都会被推到远程应用上,然后触发重启。假如你使用云服务功能,而没有使用本地服务,这可能会非常有用。普通远程更新和重启会比全量重新构建和部署周期快很多。

注意:文件只有在远程客户端运行的情况下被监控。如果你在启动远程客户端之前改变文件,那么他不会被推送到远程服务器中。

20.5.3 远程debug隧道

当远程应用出现问题,java远程debug十分有用。不幸的是,当你的应用没有部署在你的数据中心,那么他不是经常可以远程debug。加入你使用像docker这种基于软件技术的容器,那么远程debug也会十分困难。

为了帮助解决限制,devtools支持通过http远程debug。远程客户端在8000端口提供了一个本地服务器,你能通过这个端口远程debug。一个连接被建立后,通过httpdebug远程应用。加入你想使用不同的端口,你能使用spring.devtools.remote.debug.local-port属性。

你要确认你的远程应用通过远程debug的方式启动。通常可以通过JAVA_OPTS实现。比如:在云服务器上添加你的manifest.yml:

---
    env:
        JAVA_OPTS: "-Xdebug -Xrunjdwp:server=y,transport=dt_socket,suspend=n"

注意:不需要在-Xrunjdwp中设置address=NNNN。如果没有配置,那么java将会随机分配一个端口。

通过因特网debug远程服务器会很慢,你也许需要增加你的IDE的超时时间。比如,在Eclipse中,你选择Preferences...中的Java -> Debug,改变Debugger timeout (ms) 为一个可用的值(60000适合大多数情况)。

当通过IntelliJ IDEA远程debug,所有的断点必须被配置为支持线程模式而不是VM模式。默认的,在Intelli JDEA中的断点会暂停整个VM,而不是暂停触发断点的线程。远程debug的时候挂起线程信息是有副作用的,因为你的debug会话被冻结了。当使用IntelliJ IDEA的远程debug通道,所有的断点应该被配置为打断线程而不是VM。

21.在生产上打包你的应用

可执行的jar包能部署到生产上,由于它们是独立的,它们也非常适合基于云的部署。

对于其他“生产准备”功能,如健康,审计和度量REST或JMX端点;考虑添加spring-boot-actuator。有关详细信息,请参见第V部分“spring boot弹性执行器:生产准备功能”。

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 216,997评论 6 502
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 92,603评论 3 392
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 163,359评论 0 353
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 58,309评论 1 292
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 67,346评论 6 390
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 51,258评论 1 300
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 40,122评论 3 418
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 38,970评论 0 275
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 45,403评论 1 313
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 37,596评论 3 334
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 39,769评论 1 348
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 35,464评论 5 344
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 41,075评论 3 327
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 31,705评论 0 22
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 32,848评论 1 269
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 47,831评论 2 370
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 44,678评论 2 354

推荐阅读更多精彩内容