BT

最新技術を追い求めるデベロッパのための情報コミュニティ

寄稿

Topics

地域を選ぶ

InfoQ ホームページ ニュース Spring Cloud 1.0リリース

Spring Cloud 1.0リリース

原文(投稿日:2014/06/11)へのリンク

PivotalがSpring Cloud 1.0をリリースした。これは、JVMベースのアプリケーションをクラウド向けにシンプルに開発するためのオープンソースのライブラリを提供する。アプリケーションはさまざまなクラウドサービスに接続でき、実行時にクラウド環境の情報を見つけることができる。Springベースのアプリケーションでもそうでないアプリケーションでも利用することができ、Cloud Foundry、Herokuをサポートする。ほかのプラットフォームへサポートを拡張することもできる。

Spring CloudはCloud ConnectorとService Connectorというふたつの概念がある。A Cloud Connectorはクラウドプロバイダが実装するインターフェースで、ライブラリがクラウドプラットフォームにアクセスできるようにする。Spring Cloud 1.0にはCloud Foundry Cloud ConnectorとHeroku Cloud Connectorがある。一方、Service Connectorはサービスとのコネクションを表すオブジェクトだ。Spring Cloud 1.0はjavax.sql.DataSourceとSpring Dataプロジェクト向けのService Connectorが含まれている。Custom Cloud ConnectorsとService Connectorsはほかのクラウドプラットフォームやサービス向けにも開発される可能性がある。使い方は簡単で、JARファイルをクラスパスに追加するだけだ。

Spring CloudをSpringアプリケーションから使うには、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-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は似ているが、コンポーネントやBeanを探すのではなく、バインドされたサービスを探す。

Cloud FoundryやHerokuへの配置方法を簡単に知るには、Introducing Spring Cloudというブログ記事を読むといいだろう。このブログではSpring Bootサンプルアプリケーションを使っている。Springを利用していないアプリケーションの場合は、Spring Cloud Core READMEを読むといいだろう。

この記事に星をつける

おすすめ度
スタイル

BT