Spring Boot中文手册(10):常用的Spring Boot开发工具(二)

“ 该系列的文章主要参考Spring Boot 2.1.2.RELEASE的官方文档来进行翻译,逐步将官方文档翻译过来,方便大家共同学习和讨论,但是毕竟能力有限,如有问题,感谢大家留言指正。”

3. LiveReload

spring-boot-devtools 模块包含一个内嵌的LiveReload服务器,它可以在资源改变时触发浏览器刷新。LiveReload浏览器扩展可以免费从livereload.com站点获取,支持Chrome,Firefox,Safari等浏览器。

如果不想在运行应用时启动LiveReload服务器,你可以将 spring.devtools.livereload.enabled 属性设置为false。

每次只能运行一个LiveReload服务器,如果你在IDE中启动多个应用,只有第一个能够获得动态加载功能。

4. 全局设置

在 $HOME 文件夹下添加一个 .spring-boot-devtools.properties 的文件可以用来配置全局的devtools设置(注意文件名以"."开头),添加进该文件的任何属性都会应用到你机器上使用该devtools的Spring Boot应用。例如,想使用触发器文件进行重启,可以添加如下配置:

~/.spring-boot-devtools.properties.

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

.spring-boot-devtools.properties中指定的profile并不会影响 profile-specific配置文件的加载

5. 远程应用

Spring Boot开发者工具并不仅限于本地开发,在运行远程应用时你也可以使用一些特性。远程支持的特性已经内置了,你只需要确保 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属性,服务端组件会自动启用,客户端组件必须手动启动。

5.1 运行远程客户端应用

远程客户端应用程序(remote client application)设计的是需要在IDE中运行,你需要运行跟将要连接的远程应用相同的classpath的org.springframework.boot.devtools.RemoteSpringApplication,这个程序需要的唯一参数就是你要连接的远程应用URL。

例如,你正在使用Eclipse或STS开发,并有一个部署到Cloud Foundry的my-app工程,远程连接该应用需要做以下操作:

从Run菜单选择Run Configurations…。

创建一个新的Java Application启动配置(launch configuration)。

浏览my-app工程。

org.springframework.boot.devtools.RemoteSpringApplication作为main类。

将https://myapp.cfapps.io作为参数传递给RemoteSpringApplication(或其他任何远程URL)。

一个运行中的远程客户端应用程序应该类似于下面的输出:

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

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)

因为远程客户端与真实应用使用的是相同的classpath,所以它能直接读取应用配置,这就是spring.devtools.remote.secret如何被读取,然后传递给服务器做验证的。

无论什么时候,总是建议使用https://作为连接协议,这样传输通道是加密的,密码也不会被截获。

如果你想使用代理访问你的程序,请配置 spring.devtools.remote.proxy.host 和 spring.devtools.remote.proxy.port 这两个属性。

5.2 远程更新

远程客户端会监测应用的classpath,任何更新都会推送到远程应用上并触发一次重启,如果你并没有本地调试,而是使用一个云服务来迭代开发某个特性时,这将变得非常有用。通常情况下,一次远程的更新要比一次完整的构建和部署流程快很多。

只有当远程客户端在运行时,文件才会被监控。如果你在启动远程客户端之前修改了一个文件,那么将不会被推送到远程服务上。

6. 打包你的应用,上生产

可执行的jar包可以用来作为生产级的部署。因为是完全自包含的,所以也非常适用基于云的部署。

还有一些生产级别的的特性,比如健康监控,审计和指标REST,或JMX端点,可以考虑添加 spring-boot-actuator。具体可以该系列文章的后续内容。

正文内容从这里开始(可直接省略,亦可配图说明)。

7. 下一步该读些什么

现在大家应该都明白了如何使用Spring Boot,还有一些我们最好都遵守的最佳实践。现在我们可以更加深入地学习特定的Spring Boot特性了,或者你也可以直接跳过前半部分直接开始学习Spring Boot生产级别的特性。

END
在这里插入图片描述

猜你喜欢

转载自blog.csdn.net/tearofthemyth/article/details/86712654