openplanning

Giới thiệu về Spring Cloud

  1. Tổng quan về Spring Cloud
  2. Mục tiêu của Spring Cloud
  3. Các phụ thuộc của Spring Cloud

1. Tổng quan về Spring Cloud

Spring là một nền tảng được xây dựng để phát triển các ứng dụng web trên ngôn ngữ Java. Nó được giới thiệu lần đầu tiên năm 2004. Tới năm 2006 các project con (sub-project) đã xuất hiện, mỗi project con tập trung vào một lĩnh vực khác nhau. Cho tới ngày nay bạn có thể nhìn thấy các project con được liệt kê như hình minh họa dưới đây.
Spring IO (Spring Integration Objects) (Các đối tượng tích hợp Spring) là cái tên được sử dụng cho gia đình các sub-project của Spring. Nó được coi như một cái ô (Umbrella), và các sub-project nằm bên dưới cái ô đó.
Spring Cloud chính là một dự án con (sub-project) nằm trong cái ô Spring IO (Spring IO Umbrella), và tự nó cũng là một cái ô, một cái ô con (Sub-Umbrella).
Dưới đây là danh sách các sub-project và các khuôn mẫu (pattern) trong Spring Cloud:

2. Mục tiêu của Spring Cloud

Spring Cloud là một công nghệ phần mềm sử dụng để phát triển các ứng dụng phân tán. Một ứng dụng được gọi là phân tán (Distributed application) khi các phần của nó có thể được phát triển trên các ngôn ngữ khác nhau, và được triển khai trên các máy chủ khác nhau. Vì vậy mục tiêu của Spring Cloud là làm sao để các thành phần của ứng dụng có thể giao tiếp với nhau.
  • TODO

3. Các phụ thuộc của Spring Cloud

Tất cả các dự án Spring Cloud nên được tạo bởi Spring Boot. Bởi vì Spring Boot được tạo ra để giúp các nhà phát triển dễ dàng hơn khi xây dựng các dự án sử dụng Spring Framework. Sẽ rất khó khăn nếu bạn muốn phát triển ứng dụng Spring Cloud dựa trên nền tảng cốt lõi của Spring (core Spring Framework).
Vì vậy để tạo một ứng dụng Spring Cloud bạn cần tạo một dự án Spring Boot. Và khai báo các sự phụ thuộc (dependency) cần thiết.
Khai báo Spring Boot Parent:
** Spring Boot Parent **
<!-- https://mvnrepository.com/artifact/org.springframework.boot/spring-boot-starter-parent -->

<parent>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-parent</artifactId>
    <version>1.5.9.RELEASE</version>
    <relativePath/> <!-- lookup parent from repository -->
</parent>

<!-- https://mvnrepository.com/artifact/org.springframework.cloud/spring-cloud-dependencies -->
<properties>
    <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
    <project.reporting.outputEncoding>UTF-8</project.reporting.outputEncoding>
    <java.version>1.8</java.version>
    <spring-cloud.version>Edgware.RELEASE</spring-cloud.version>
</properties>

...

<dependencyManagement>
    <dependencies>
        <dependency>
            <groupId>org.springframework.cloud</groupId>
            <artifactId>spring-cloud-dependencies</artifactId>
            <version>${spring-cloud.version}</version>
            <type>pom</type>
            <scope>import</scope>
        </dependency>
    </dependencies>
</dependencyManagement>
Khai báo các phụ thuộc (Dependency):
<!-- https://mvnrepository.com/artifact/org.springframework.cloud/spring-cloud-starter-eureka -->
<!-- https://mvnrepository.com/artifact/org.springframework.cloud/spring-cloud-starter-eureka-server -->

<dependency>
    <groupId>org.springframework.cloud</groupId>
    <artifactId>spring-cloud-starter-...</artifactId>
</dependency>

<!--
  spring-cloud-starter-eureka
  spring-cloud-starter-eureka-server
  ...
-->