速来报名!AICon北京站鸿蒙专场~ 了解详情
写点什么

Spring Cloud 1.0 – 云平台抽象化

  • 2014-06-30
  • 本文字数:1562 字

    阅读完需:约 5 分钟

Pivotal 最近发布了 Spring Cloud 1.0 开放源码库,为基于 JVM 的云应用开发提供了一种简单的开发方式。他可使应用程序连接到不同的云服务并且在运行时获取云环境的信息。无论是否基于 Spring,应用程序都可以使用 Spring Cloud。Spring Cloud 1.0 目前支持 Cloud Foundry 和 Heroku 两种云平台,也可以通过扩展来支持更多的云平台。

Spring Cloud 引入了云平台连接器(Cloud Connector)和服务连接器(Service Connector)的概念。云平台连接器是一个接口,需要由云平台提供者进行实现,以便库中的其他模块可以与该云平台协同工作。Spring Cloud 1.0 自带了 Cloud Foundry 和 Heroku 两个平台的云平台连接器。服务连接器是一个对象,它代表着与服务的连接。Spring Cloud 1.0 中包含了连接到 javax.sql.DataSource 和各 Spring Data 项目的服务连接器。开发者也可以定制开发云平台连接器和服务连接器以支持其他的云平台和服务,只需要将连接器打包成 JAR 文件并添加到 classpath 中即可。

在基于 Spring 的应用中使用 Spring Cloud,需要添加对 _spring-cloud-spring-service-connector_ 的依赖。Maven 依赖的代码片段如下:

复制代码
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-spring-service-connector</artifactId>
<version>1.0.0.RELEASE</version>
</dependency>

在不基于 Spring 的应用中使用 Spring Cloud 则需要添加对 _spring-cloud-core_ 的依赖。

复制代码
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-core</artifactId>
<version>1.0.0.RELEASE</version>
</dependency>

如果希望应用程序既能部署在 Cloud Foundry 也能部署在 Heroku 上,则需要同时添加如下两个依赖。

复制代码
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-cloudfoundry-connector</artifactId>
<version>1.0.0.RELEASE</version>
</dependency>
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-heroku-connector</artifactId>
<version>1.0.0.RELEASE</version>
</dependency>

下面是一个关于获取 DataSource 服务和 ApplicationInstanceInfo 的例子。ApplicationInstanceInfo 提供了这个实例中与云平台相关的信息。

复制代码
// MyController.java
@Controller
public class MyController {
@Autowired(required = false) DataSource dataSource;
@Autowired ApplicationInstanceInfo instanceInfo;
...
}
// CloudConfig.java
@Configuration
@ServiceScan
@Profile("cloud")
public class CloudConfig extends AbstractCloudConfig {
@Bean
public ApplicationInstanceInfo applicationInfo() {
return cloud().getApplicationInstanceInfo();
}
}

注解 _@Profile(“cloud”)表示我们希望这一配置只在云环境中加载。注解@ServiceScan_ 会扫描所有的服务并创建一个用于自动装配的 bean。@ServiceScan_ 类似于@ComponentScan_,不过与 _@ComponentScan_ 扫描组件和 bean 不同,_@ServiceScan_ 扫描绑定的服务。

关于如何将 Spring Cloud 部署到 Cloud Foundry 和 Heroku 的快速攻略,可以参考 Spring Cloud 简介的博客。这篇博文使用了一个 Spring Boot 的示例程序。对于不基于 Spring 的应用程序可以参考 Spring Cloud Core README 的使用说明。

查看原文链接: Spring Cloud 1.0 - Cloud Platform Abstraction


感谢马国耀对本文的审校。

给InfoQ 中文站投稿或者参与内容翻译工作,请邮件至 editors@cn.infoq.com 。也欢迎大家通过新浪微博( @InfoQ )或者腾讯微博( @InfoQ )关注我们,并与我们的编辑和其他读者朋友交流。

2014-06-30 23:504817
用户头像

发布了 75 篇内容, 共 63.2 次阅读, 收获喜欢 6 次。

关注

评论

发布
暂无评论
发现更多内容

new() 和 make的区别

陈思敏捷

源码 源码分析 Go 语言

Go: Trace包探秘

陈思敏捷

原理 Go 语言

Java环境搭建

编号94530

Java java8 Java环境 环境安装 jdk安装

云直播平台的选型与使用

音视频专家-李超

谈谈控制感(8):元控制感

史方远

职场 心理 成长

《零基础学 Java》 FAQ 之 10-Scanner里nextInt的小坑

臧萌

Java

Mysql增量更新-ON DUPLICATE KEY UPDATE

BerryMew

MySQL 增量更新 ON DUPLICATE KEY UPDATE

2020 年 5 月 23 日 Java 集合专题

瑞克与莫迪

Java

看完这篇 Session、Cookie、Token,和面试官扯皮就没问题了

苹果看辽宁体育

https

区块链2.0--以太坊概述

皮卡丘的猫

利与弊-传统框架要不要部署在Serverless架构上

刘宇

Serverless Web

python实现·十大排序算法之快速排序(Quick Sort)

南风以南

Python 排序算法 快速排序

Go: g0, 特殊的goroutine

陈思敏捷

原理 Go 语言

Go: 应该使用指针还是结构体副本?

陈思敏捷

struct 原理 pointer Go 语言

Tekton 的工作原理

张晓辉

Kubernetes cicd 云原生

我是如何拿下PMP认证和系统架构设计师考试的?

Nick

你是个伪工作者么?

池建强

个人成长 伪工作者

游戏夜读 | 怎么让游戏跑起来?

game1night

其实你就是我羡慕的别人

小天同学

个人成长 感悟 日常思考

python实现·十大排序算法之插入排序(Insertion Sort)

南风以南

Python 排序算法 插入排序

JUC整理笔记一之细说Unsafe

JFound

Java

prometheus中honor_labels配置项的源码分析

陈思敏捷

Prometheus Go 语言

《零基础学 Java》 FAQ 之 12-理解引用

臧萌

Java

除了直接看余额,谁更有钱还能怎么比(一)

石君

零知识证明 多方计算 同态加密

Flask-SQLAlchemy 多表对单模型

Leetao

Python flask 编程语言 flask-sqlalchemy

我的编程之路 -5(停滞)

顿晓

网络编程 操作系统 编程之路 停滞 三年

《零基础学 Java》 FAQ 之 11-为什么构造方法中调用重载的构造方法必须得是在第一行

臧萌

k8s上运行我们的springboot服务之——cloud gateway

柠檬

k8s Spring Cloud

工作=投资=创业?

二鱼先生

个人成长 工作思路 工作方式 创业心态 创业者

RocketMQ - 什么是RocketMQ

Java收录阁

RocketMQ

圆圈正义 - 读后感

石云升

读书笔记 法律 公平 现实

Spring Cloud 1.0 – 云平台抽象化_Java_Bienvenido David_InfoQ精选文章