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

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/370450.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Spring MVC 简述:从MVC框架普遍关注的问题说起

任何一个完备的MVC框架都需要解决Web开发过程中的一些共性的问题&#xff0c;比如请求的收集与分发、数据前后台流转与转换&#xff0c;当前最流行的SpringMVC和Struts2也不例外。本文首先概述MVC模式的分层思想与MVC框架普遍关注的问题&#xff0c;并以此为契机结合SpringMVC的…

java方法调用机制_Java方法调用机制 - osc_bkdv2it5的个人空间 - OSCHINA - 中文开源技术交流社区...

最近在编程时&#xff0c;修改方法传入对象的对象引用&#xff0c;并没有将修改反映到调用方法中。奇怪为什么结果没有变化&#xff0c;原因是遗忘了Java对象引用和内存分配机制。本文介绍3个点&#xff1a;① 该问题举例说明② 简要阐述Java内存区域③ 介绍JVM中方法调用的机制…

CSS染色图标(图片)

之前一直以为用background引入的图标无法染色&#xff08;非字体图标&#xff09;&#xff0c;现在才知道有黑科技可以用&#xff0c;就是利用drop-shadow。 代码示例 <!DOCTYPE html> <html> <head lang"en"><meta charset"UTF-8"&…

eclipse安装java web插件

1 查看eclipse版本 找到eclipse的安装目录&#xff0c;找到readme文件&#xff0c;打开其中的html文件&#xff0c;我的是4.6版本的,代号是oxygen 2 安装 打开eclipse,点击help-Install new software-单击add&#xff0c;在弹出窗口中输入网址&#xff1a; http://download.ecl…

python正则表达式指南_Python正则表达式指南

1. 正则表达式基础1.1. 简单介绍正则表达式并不是Python的一部分。正则表达式是用于处理字符串的强大工具&#xff0c;拥有自己独特的语法以及一个独立的处理引擎&#xff0c;效率上可能不如str自带的方法&#xff0c;但功能十分强大。得益于这一点&#xff0c;在提供了正则表达…

Google Guava EventBus用于事件编程

在任何软件应用程序中都是如此&#xff0c;有些对象需要共享信息才能完成工作。 在Java应用程序中&#xff0c;实现信息共享的一种方法是拥有事件侦听器&#xff0c;其唯一目的是在发生所需事件时采取某些措施。 在大多数情况下&#xff0c;此过程有效&#xff0c;并且最有经验…

system类

package system.cn; /** system类的方法 都是静态方法&#xff0c;可以直接用类名直接调用* 常用的方法&#xff1a;* static long currentTimeMillis() 返回以毫秒为单位的当前时间。 static void exit(int status) 终止当前正在运行的 Java 虚拟机。 static void gc…

c await和java_blog/java/test/awaitility.zh.md at master · c-rainstorm/blog · GitHub

javaAtomicInteger atomic new AtomicInteger(0);// Do some async stuff that eventually updates the atomic integerawait().untilAtomic(atomic, equalTo(1));等待一个 AtomicBoolean 更简单&#xff1a;javaAtomicBoolean atomic new AtomicBoolean(false);// Do some a…

实现输入框小数多 自动进位展示,编辑时实际值不变

今天遇到个业务需求&#xff0c;要求输入框&#xff0c;输入数字的小数位数可以很多位&#xff0c;但移开后显示&#xff0c;只显示小数点后两位 &#xff08;四舍五入&#xff09;&#xff0c;当要编辑的时候&#xff0c;展现其原来的输入数据。 闲话不多说&#xff0c;当时也…

使用Jasper Reports以Java创建报告

上周&#xff0c;我试图使用Jasper创建报告。 在这篇文章中&#xff0c;我将记录一些资源和链接&#xff0c;以便对任何寻求类似信息的人都有用。 我将介绍Jasper报告&#xff0c;示例和Dynamic Jasper的生命周期。 Jasper Reports是世界上最受欢迎的开源报告引擎。 它完全用…

CentOS7 安装NodeJS

一、切换目录到/usr/local/src 命令行&#xff1a;cd /usr/local/src 二、下载node.js&#xff08;我这里下载的是二进制的源码&#xff09; 命令行&#xff1a; wget https://nodejs.org/dist/v8.9.1/node-v8.9.1-linux-x64.tar.xz 图片&#xff1a; 三、解压压缩包 命令行&am…

CSS3基础2(变形与动画)

<!DOCTYPE html5><html lang"en"><head> <meta charset"UTF-8"> <title>CSS3基础知识&#xff08;动画&#xff09;</title> <style> /*div{*/ /*width: 150px;*/ /*hei…

java对hashmap迭代_Java:通过HashMap迭代,这样更有效率?

第二个选项肯定更有效&#xff0c;因为在第一个选项中只进行一次查找&#xff0c;次数为n次。但是&#xff0c;没有什么比尝试它更好&#xff0c;当你可以。所以这里 –(不完美&#xff0c;但足够好验证假设和我的机器)public static void main(String args[]) {Map map new H…

html-edm(邮件营销)编写规则

最近写了一个edm邮件 以前没有接触过 使用的是很老的html页面编写规则 只能用table标签 在此记录一下edm编写的一些规则 个人参考的是这两个网址&#xff0c;转载一下 http://www.zcool.com.cn/article/ZMTM5MDgw.html https://www.cnblogs.com/lhweb15/p/6404626.html …

ASP.NET Core2.0 环境下MVC模式的支付宝PC网站支付接口-沙箱环境开发测试

1.新建.NET Core web项目 2.Controllers-Models-Views 分三个大部分 3.下载安装最新sdk 官方的SDK以及Demo都还是.NET Framework的&#xff0c;根据官方文档说明新建网站后还是需要引用官方SDK的源码&#xff0c; 在这里直接使用网上一位朋友的用.NET Standard 2.0 进行实现了支…

如何在redhat8里使用gcc命令_如何使用who命令检查用户登录信息

请关注本头条号&#xff0c;每天坚持更新原创干货技术文章。如需学习视频&#xff0c;请在微信搜索公众号“智传网优”直接开始自助视频学习1. 前言本教程主要介绍如何使用who命令检查用户登录信息。如何使用who命令检查用户登录信息Linux中的who命令列出了系统上的所有登录用户…

研究僵局–第4部分:修复代码

在这个简短的博客系列的最后BadTransferOperation中&#xff0c;我一直在讨论分析死锁&#xff0c;我将修复BadTransferOperation代码。 如果您看过本系列的其他博客 &#xff0c;那么您将知道&#xff0c;为了达到这一点&#xff0c;我创建了死锁的演示代码&#xff0c;展示了…

chrome插件2

转自&#xff1a;http://www.codeceo.com/article/15-chrome-extension.html 1. Web Developer 支持Chrome的Web Developer扩展&#xff0c;允许你通过添加一个小工具栏来使用不同的工具。 官方网站&#xff1a;https://chrome.google.com/webstore/detail/web-developer/bfbam…

java月历组件_vue之手把手教你写日历组件

---恢复内容开始---1.日历组件1.分析功能&#xff1a;日历基本功能&#xff0c;点击事件改变日期&#xff0c;样式的改变1.结构分析&#xff1a;html1.分为上下两个部分2.上面分为左按钮&#xff0c;中间内容展示&#xff0c;右按钮下面分为周几展示和日期展示3.基本结构页面ht…

HTML5和css3

超链接 <a target"页面打开位置" href"链接地址">内容</a>target:_blank 重新打开一个页面target:_self 当前页面打开 1.页面地址&#xff1a; 基础功能&#xff0c;用于进入该链接的页面&#xff1b; 2.锚点&#xff1a; 需要给标签名定义id…