STS 中的 Spring Boot 仪表板 - 第 4 部分:使用 Cloud Foundry 清单文件

工程 | Martin Lippert | 2016 年 3 月 22 日 | ...

欢迎回来,Spring 社区,

最新发布的 Spring Tool Suite 3.7.3 在 Spring Boot 仪表板周围引入了一些新功能。因此,我们继续去年开始的博文系列,并向您介绍了在 IDE 中使用基于 Spring Boot 的微服务项目的新方法(您可以在底部找到以前各部分的链接)。

Cloud Foundry 清单文件

在本系列的这个新部分中,我们仔细研究了 Cloud Foundry 清单文件。它们是 Cloud Foundry 的一个概念,用作定义 Cloud Foundry 上应用程序配置的快捷方式。在执行“cf push”时,无需将每个参数和配置传递到命令行,而是可以将所有配置数据放入 YAML 文件中,然后将该文件传递到 push 命令。有关 Cloud Foundry 清单文件的更多详细信息,请参见此处。

Spring Boot 仪表板的早期版本如果项目中存在名为“manifest.yml”的文件,则已使用清单文件将应用程序部署到 CF。这是为了方便起见“在幕后”完成的。这很好用。但由于这种支持的“隐藏性质”,也引起了混淆。

部署应用程序时选择清单文件

Spring Boot 仪表板的新版本支持 Cloud Foundry 清单文件作为一等公民。当您首次从 Boot 仪表板内部将应用程序部署到 Cloud Foundry 目标时,这将开始显示。将弹出一个对话框,询问您应将哪个清单文件用于此部署操作。

此对话框允许您选择要用于部署应用程序的清单文件。这也允许您在项目中拥有多个清单文件 - 例如,用于 Cloud Foundry 上的不同空间或不同的部署环境。您还可以通过为每个部署操作选择不同的清单文件,将同一个应用程序多次部署到同一个 Cloud Foundry 目标。

该对话框显示所选清单文件的内容,以便您可以验证您选择了正确的文件。如果清单文件内部出现问题,您无需返回主 IDE 工作台,打开文件,编辑它,保存它,然后返回部署操作。而是在对话框中直接编辑清单文件内容。这使得将应用程序部署到 Cloud Foundry 变得非常容易。

启动仪表板将记住您的选择,并在您在 Cloud Foundry 上更新项目时再次使用相同的清单文件。这也意味着,下次将应用程序重新部署到 Cloud Foundry 时(例如,在启动仪表板重新启动操作期间),将考虑对清单文件所做的更改。

当然,您可以改变主意并决定选择不同的清单文件。上下文菜单中的一个操作允许您打开相同的“选择清单文件”对话框并做出不同的选择。应用程序的下次重新部署将考虑此更改。您还可以使用此对话框快速检查当前与项目关联的清单文件。

无需清单文件进行部署

有时您还没有清单文件,或者您不想使用现有的清单文件。在这种情况下,您可以在对话框中选择“手动模式”。

它将打开一个临时清单文件的编辑区域,并使用一些默认内容填充它。您可以编辑此临时清单内容,添加属性或更改现有属性。这允许您完全定义应用程序应如何部署到 Cloud Foundry。

该临时清单的内容不会存储在任何地方(我们可能会添加一个便利选项以快速将手动输入的清单内容保存到新文件),并且 IDE 不会在您下次更新 Cloud Foundry 上的应用程序时记住它。相反,Cloud Foundry 上的现有配置将保留并用于更新应用程序。

如果您过去使用过清单文件,然后决定切换到手动模式,情况也是如此。后续对应用程序的更新将保持 Cloud Foundry 上的配置不变。

CF 上已更改的配置

假设您已使用清单文件从 Boot 仪表板内部将应用程序部署到 Cloud Foundry。然后,您转到 Web 控制台并将服务添加到已部署的应用程序 - 或更改内存设置,将其扩展,或对配置进行类似的更改。如果您返回 Boot 仪表板,也许更改应用程序的一些代码,然后重新启动(因此更新)Cloud Foundry 上的应用程序,则 Boot 仪表板将再次使用清单文件 - 并丢弃您在 CF 上对配置所做的所有更改。为了避免这种情况,Boot 仪表板在重新部署使用清单文件的应用程序时会检查 Cloud Foundry 上的配置更改。如果发现配置不匹配,它将打开一个差异和合并对话框 - 并显示详细的更改。

此功能可防止您意外覆盖配置更改。它是一个功能强大的对话框,允许您将 CF 上的配置更改合并到您的本地清单文件中。您可以合并单个更改以及所有更改。这使得使用这些更改更新本地清单文件变得容易,并且您可以在将来更新应用程序时继续使用清单文件。

如果您不希望 CF 上的这些配置更改反映在您的本地清单文件中,请选择“忘记清单”按钮,Boot 仪表板将保持 Cloud Foundry 上的配置不变。它将应用程序切换到“手动模式”部署。

同样,如果您想明确更改这些设置,请转到上下文菜单并选择“选择清单”操作。

编辑清单文件

虽然 Cloud Foundry 清单文件是配置 Cloud Foundry 应用程序的一种简洁明了的方式,但编辑这些文件可能很麻烦。幸运的是,最新版本的 Spring Tool Suite 带有一个专门用于 Cloud Foundry 清单文件的编辑器。

它为属性名称和选定的属性值提供了良好的内容辅助。

如果将鼠标悬停在属性上,您将获得有关属性的更多帮助以及如何以及何时使用它的示例。

在键入时也会验证文件。协调错误将以与在 Spring Boot 属性文件或编辑 Java 代码时相同的方式直接显示在编辑器中。

好消息是:这种高级编辑支持也适用于“选择清单文件”对话框(例如,在处理手动清单或更改所选清单文件内容时)。

即将推出

本博文系列的下一部分将介绍对本地 Spring Boot 应用程序使用多个启动配置的新支持。敬请期待。

Spring Boot 仪表板博文系列

如果您碰巧在 5 月中旬在巴塞罗那(无论如何,在巴塞罗那总是不会太糟糕!),不要错过加入Spring I/O 大会的机会,我将在那里介绍 Spring 的最新和最棒的功能。此外,SpringOne Platform(8 月初,拉斯维加斯)的注册最近已经开放,如果您想享受早鸟票价,可以考虑一下。

本周 Spring - 2016 年 3 月 22 日

工程 | Josh Long | 2016 年 3 月 22 日 | ...

欢迎来到另一期本周 Spring!像往常一样,我们有很多内容需要涵盖,所以让我们开始吧!本周我应该在巴黎比利时。不幸的是,由于最近对布鲁塞尔机场和地铁的悲惨、令人作呕和懦弱的袭击,我不确定我是否会亲自前往比利时。然而,今晚的聚会演讲通过远程进行流媒体直播。请继续关注我的 Twitter 帐户 - @starbuxman以获取更多信息。

也就是说,有很多很棒的内容,所以让我们开始吧!

使用 Kotlin、Spring Boot 和 PostgreSQL 的地理空间消息传递器

工程 | Sébastien Deleuze | 2016 年 3 月 20 日 | ...

继我的第一篇Kotlin 博文之后,今天我想介绍我为即将举行的Spring I/O 2016 大会演讲“使用 Kotlin 和 Spring Boot 开发地理空间 Web 服务”而开发的新 Spring Boot + Kotlin 应用程序。

处理原生数据库功能

该应用程序的目标之一是了解如何利用原生数据库功能,就像我们在 NoSQL 世界中所做的那样。在这里,我们希望使用由PostGIS(PostgreSQL 的空间数据库扩展)提供的地理空间支持。原生 JSON 支持 也可以是一个很好的用例。

此地理空间消息传递示例应用程序在 GitHub 上可用

本周 Spring - 2016 年 3 月 15 日

工程 | Josh Long | 2016 年 3 月 15 日 | ...

欢迎来到另一期本周 Spring!自从我们上次交谈以来,这真是疯狂的一周!上周一到周五,我在旧金山、德国、苏格兰和罗马尼亚度过了一天。这周很高兴能在(温暖的!)南加州洛杉矶和圣地亚哥与客户交流,并在几个聚会上发言!如果您在附近,我希望您能加入我参加洛杉矶的云原生聚会(今晚!)。

Spring for Apache Kafka 里程碑 1 发布

工程 | Gary Russell | 2016 年 3 月 14 日 | ...

我很高兴地宣布spring-kafka(Spring for Apache Kafka)第一个里程碑版本现已发布(1.0.0.M1)。

现有的spring-integration-kafka扩展项目 - 当前版本为1.3.0.RELEASE,支持 Kafka 0.8.x.x,并用于Spring XD(Kafka MessageBus)和Spring Cloud Stream(Kafka Binder)。

这个新项目(spring-kafka)将核心组件分解到一个单独的项目中。它基于新的0.9.0.x 纯 Java Kafka 客户端。

spring-kafka 为任何 Spring 用户(不仅仅是使用 Spring Integration 的用户)提供了熟悉的 Spring 编程模型到 Apache Kafka。即将发布的spring-integration-kafka版本将完全重写,利用spring-kafka

本周 Spring - 2016 年 3 月 8 日

工程 | Josh Long | 2016 年 3 月 8 日 | ...

欢迎来到另一期本周 Spring!本周我在德国布吕尔参加了精彩的JavaLand 展览,然后前往苏格兰拜访一位大型客户,之后前往罗马尼亚参加Voxxed Days 布加勒斯特。如果您在这些地方中的任何一个地方,我很乐意与您联系

Spring 框架 4.3 中的核心容器改进

工程 | Stéphane Nicoll | 2016 年 3 月 4 日 | ...

Spring 框架 4.3.RC1 即将发布,并带来了一些不错的核心容器改进,我们将在本文中探讨这些改进…

针对单构造函数场景的隐式构造函数注入

考虑以下服务类

@Service
public class FooService {

    private final FooRepository repository;

    @Autowired
    public FooService(FooRepository repository) {
        this.repository = repository
    }
}

一个相当常见的用例,但如果您忘记了构造函数上的@Autowired注释,容器将抛出一个异常,寻找默认构造函数,除非您在 bean 定义设置中明确指示自动装配模式“构造函数”(例如,在 XML <bean>

本周 Spring - 2016 年 3 月 1 日

工程 | Josh Long | 2016 年 3 月 1 日 | ...

欢迎来到另一期本周 Spring!本周,我在中国深圳和瑞士苏黎世参加 Voxxed Days 苏黎世。这确实将是忙碌的一周,不过我当然希望在那里见到您!无论如何,我们本周有很多内容要介绍,所以让我们开始吧!

本周 Spring - 2016 年 2 月 23 日

工程 | Josh Long | 2016 年 2 月 23 日 | ...

欢迎来到另一期本周 Spring!我们已经看到了 2 月份的最后几周!

Spring AMQP 1.6.0 里程碑 1(和 1.5.4)发布

工程 | Gary Russell | 2016 年 2 月 16 日 | ...

我们很高兴地宣布 Spring AMQP 1.6 版本的第一个里程碑版本现已发布。

此版本的一些亮点

  • 一个新的 jar spring-rabbit-test,其中包含一个测试工具,有助于测试@RabbitListener方法;请参阅测试章节

  • 一个方法上的多个@RabbitListener注释(在使用 Java 8 时)和@RabbitListeners注释(对于 Java 8 之前的版本),每个注释都允许相同的方法成为多个侦听器容器的侦听器方法。

  • 完全支持延迟消息交换 RabbitMQ 插件。

  • 一个AsyncRabbitTemplate,它为请求/回复消息传递返回ListenableFuture<?>

  • 一个在侦听器容器空闲时发布ApplicationEvents的选项。

获取 Spring 电子邮件

通过 Spring 电子邮件保持联系

订阅

领先一步

VMware 提供培训和认证,以加速您的进步。

了解更多

获得支持

Tanzu Spring 在一个简单的订阅中提供 OpenJDK™、Spring 和 Apache Tomcat® 的支持和二进制文件。

了解更多

即将举行的活动

查看 Spring 社区中所有即将举行的活动。

查看全部