Spring 3.1,Cloud Foundry和本地开发

这篇文章将帮助您在Cloud Foundry上使用MongoDB构建Spring 3.1 Web应用程序。 除了推动Cloud Foundry之外,您还可以使用MongoDB实例在本地环境中进行开发。

目标

此博客发布的目标是在本地构建应用程序,然后发布到本地Cloud Foundry实例。 我们将利用Cloud Foundry运行时和新的Spring Profiles

设定

  1. 使用Cloud Foundry创建帐户( https://www.cloudfoundry.com/micro
  2. 按照说明设置您自己的Micro Cloud
    1. 我使用VMWare的播放器
    2. 验证微云控制台匹配的“ vmc信息”
  3. 下载MongoDB(至少2.0版)
  4. 安装并熟悉Maven 3( http://maven.apache.org
  5. 熟悉Spring 3.1,Spring Data和Spring MongoDB
  6. 克隆或下载源代码( https://github.com/mike-ensor/first-cloud-app
  7. 使用以下命令在本地运行应用程序:
    mvn clean package cargo:run -DskipTests
  8. 转到http:// localhost:8080 / home


个人资料

Spring 3.1中的新功能是环境配置文件,开发人员可以根据环境参数激活多组Bean。 我发现了几个“ 陷阱 ”,一个是使用概要文件对bean的无证订购。

看一下data-services.xml 。 请注意,之前如何定义MongoTemplate。 这违反了我的直觉,因为MongoTemplate引用了在MongoTemplate定义下方定义的MongoFactory对象。

第二个“陷阱”来自何时何地设置参数以启用Spring的配置文件。 文档和博客未明确提及开发人员必须指定活动的配置文件。 文档暗示“ 默认 ”默认情况下处于活动状态,但事实并非如此。 为了激活默认配置文件,我将其添加为货物设置中的系统属性。 (只要它是系统环境属性,就可以随时随地设置它)。 看一下第40行周围的pom.xml文件,以获取本地Maven属性,然后看一下253行附近的环境变量。

本地开发与云开发

与Cloud Foundry进行交互的主要目标之一是,我希望有一个本地开发环境来加速和简化开发并通过调试降低复杂性。 请注意
data-services.xml中有一个“云”配置文件和一个“默认”文件。 “默认”概要文件的要点是具有在本地环境中构造的bean。 您可以看到MongoFactory有两种定义,一种使用Spring Data MongoDB的XML名称空间,另一种使用CloudFoundry Runtime的名称空间。 我不会介绍这些功能为何以它们的方式工作,因此,如果您需要信息,请参阅http://blog.springsource.org/2011/04/12/cloud-foundry-for-spring-developers/http://blog.springsource.org/2011/11/09/using-cloud-foundry-services-with-spring-applications-part-3-the-cloud-namespace/

推向Cloud Foundry

现在您已经拥有了Webapp的本地运行实例,您将注意到该工件称为“ first-cloud-app.war ”,您可以在“ / target”文件夹中找到该工件。 推送到Cloud Foundry实例时,这是一个问题,因为名称不能包含任何非字母字符。 Cloud Foundry的vmc工具是从负责开源PaaS服务的VCAP开源项目构建的。 另一个PaaS服务包括App Fog,它使您基本上可以使用相同的命令,但是将“ vmc”替换为“ af”。 两种服务都是命名问题的受害者。

为了解决命名问题,我创建了一个Maven配置文件 ,将WAR工件构建为“ mikeensor.war”。 请更改此名称以匹配您的应用程序名称,因为您没有要发布的用户名/密码(或DNS)要发布到我的微型实例。 该名称将需要适合URL模式http:// < applicationname >。 .cloudfoundry.me。

要发布到本地Cloud Foundry微型实例,请转到根文件夹并键入以下内容。 (这是假设您的微型实例正在运行,并且没有“红色”错误。

mvn clean package -Pcloud
vmc push <application name> -path target/

(如果您之前已经推送过,则需要输入:

vmc update <application name> -path target/

注意:可以将Maven插件用于Cloud Foundry,但是,在不更改工件名称的情况下,我仍然无法使其正常工作。 启用并连接到服务

您必须创建一个或多个服务,以便您的应用程序可以绑定到数据源。 当将应用程序加载到Cloud Foundry中时,VCAP(vmc)应用程序处理配置的工作方式。 它通过在命名空间配置元素中使用的环境变量来执行此操作。

在我的示例中,我通过输入以下内容创建了MongoDB服务:

vmc create-service mongodb --name <what you want to call your instance>

我将其命名为“ second”(因为我已经创建了“ first”),您将看到在data-services.xml中 ,云XML配置引用了服务的名称。

请注意,如果您有多个MongoDB实例,则要使用其他实例时,需要进行一些Spring配置(@Qualifier)。 此博客文章未涵盖此内容。

现在,您需要将服务“绑定”到您的应用程序。 通过键入以下内容来完成:

vmc bind-service <name above> <application name>


测试出来

您应该可以转到http:// 。 .cloudfoundry.me / home(例如:http://mikeensor.mikeensor.cloudfoundry.me/home)

恭喜你! 您不仅应该成功地部署到绑定到MongoDB实例的Cloud Foundry(微型实例),而且还应该能够在您的本地环境中运行! 如果有时间,我将尝试添加更详细的功能,例如多种类型的存储,并在发现它们时发布其他“陷阱”。

参考: Spring 3.1 + Cloud Foundry +我们的JCG合作伙伴 Mike的本地开发 (在Mike的网站博客上)。

翻译自: https://www.javacodegeeks.com/2012/11/spring-3-1-cloud-foundry-and-local-development.html

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值