1 Spring-Cloud学习 看一个最简单的例子

什么是Spring-boot

将一个独立的系统拆分成多个小型服务,服务之间通信基于HTTP的restful api进行通信写作。

 

Spring-Cloud的优缺点

    优点:
        服务组件化:各服务可以快速升级。
        可以按业务组织团队:
        去中心化处理:各个服务,尽量解耦
        使用Http的RestFul请求模式
    缺点:
        运维的新挑战:进程数量大大增加
        接口的一致性:修改其中一个接口时,与其相关联的服务都要修改调用的接口
        分布式的复杂性:服务更多,所以分布式会更复杂,比如网络延迟,分布式事务等等

 

Spring-boot

spring-boot的定义:通过大量自动化的配置方式来简化spring原有样板化的配置,使得开发者可以快速构建应用。

 

创建第一个最简单的spring-boot项目

例子采用Spring-boot 2.0.3 和Spring-cloud Finchley.RELEASE版本

先将大框架搭起来

首先创建父模块,父模块的pom文件为

<parent>
		<groupId>org.springframework.boot</groupId>
		<artifactId>spring-boot-starter-parent</artifactId>
		<version>2.0.3.RELEASE</version>
	</parent>

	<dependencyManagement>
		<dependencies>
			<dependency>
				<groupId>org.springframework.cloud</groupId>
				<artifactId>spring-cloud-dependencies</artifactId>
				<version>Finchley.RELEASE</version>
				<type>pom</type>
				<scope>import</scope>
			</dependency>
		</dependencies>
	</dependencyManagement>

	<properties>
		<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
		<project.reporting.outputEncoding>UTF-8</project.reporting.outputEncoding>
		<java.version>1.8</java.version>
	</properties>

	<build>
		<plugins>
			<plugin>
				<groupId>org.springframework.boot</groupId>
				<artifactId>spring-boot-maven-plugin</artifactId>
			</plugin>
		</plugins>
	</build>

创建一个子模块student-simple

子模块的pom文件

<dependencies>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-web</artifactId>
        </dependency>
    </dependencies>

配置文件application.yml

spring:
  application: 
    name: study-simple #项目名
server:
  host: localhost #项目主机名
  port: 8080 #项目端口号

入口文件:SpringApplication.java

@SpringBootApplication
public class SimpleApplication {
    public static void main(String[] args) {
        SpringApplication.run(SimpleApplication.class,args);
    }
}

SimpleController

@RestController
@RequestMapping("Simple")
public class SimpleController {
    @GetMapping("getName")
    public String getName(){
        return "张三";
    }
}

运行SimpleApplication.main(),运行成功会出现这样的信息:

信息告知我们,启动的端口号为8080,访问地址为“”,所以我们不需要项目名直接localhost:8080即可访问项目

启动成功后通过界面访问

到这里,spring-boot + spring-cloud的项目就搭起来了

接下来的博文会针对Spring-cloud的各种功能来扩展这个项目。

 

 

 

 

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
好的,以下是一个简单的Spring Cloud模块化开发的示例: 假设我们有一个需求,需要开发一个电商平台,包括商品服务、用户服务和订单服务三个模块,其中商品服务和用户服务需要调用订单服务的接口。 1. 创建父工程 首先,我们需要创建一个父工程,用于管理所有子模块的依赖。 在父工程的pom.xml文件中,添加如下内容: ```xml <groupId>com.example</groupId> <artifactId>ecommerce</artifactId> <version>1.0.0-SNAPSHOT</version> <packaging>pom</packaging> <modules> <module>product-service</module> <module>user-service</module> <module>order-service</module> </modules> <properties> <spring-cloud.version>2021.0.0</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> ``` 在该文件中,我们定义了三个子模块,分别是product-service、user-service和order-service。同时,我们也定义了Spring Cloud的版本号,并将其管理在dependencyManagement中,以便所有子模块都可以继承该版本号。 2. 创建子模块 接下来,我们需要创建三个子模块,分别是product-service、user-service和order-service。 在每个子模块的pom.xml文件中,添加如下内容: ```xml <parent> <groupId>com.example</groupId> <artifactId>ecommerce</artifactId> <version>1.0.0-SNAPSHOT</version> </parent> <groupId>com.example.ecommerce</groupId> <artifactId>product-service</artifactId> <version>1.0.0-SNAPSHOT</version> <packaging>jar</packaging> <dependencies> <dependency> <groupId>org.springframework.cloud</groupId> <artifactId>spring-cloud-starter-netflix-eureka-client</artifactId> </dependency> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-web</artifactId> </dependency> </dependencies> ``` 在该文件中,我们定义了当前子模块的父工程、groupId、artifactId、版本号和打包方式。同时,我们也定义了该子模块的依赖,包括Spring Cloud Eureka Client和Spring Boot Web。 3. 配置Eureka Server 在该示例中,我们使用Eureka作为服务注册中心。我们需要在一个单独的项目中配置Eureka Server,其他服务将会注册到该服务上。 在Eureka Server的pom.xml文件中,添加如下内容: ```xml <parent> <groupId>com.example</groupId> <artifactId>ecommerce</artifactId> <version>1.0.0-SNAPSHOT</version> </parent> <groupId>com.example.ecommerce</groupId> <artifactId>eureka-server</artifactId> <version>1.0.0-SNAPSHOT</version> <packaging>jar</packaging> <dependencies> <dependency> <groupId>org.springframework.cloud</groupId> <artifactId>spring-cloud-starter-netflix-eureka-server</artifactId> </dependency> </dependencies> ``` 在该文件中,我们定义了当前子模块的父工程、groupId、artifactId、版本号和打包方式。同时,我们也定义了该子模块的依赖,包括Spring Cloud Eureka Server。 接下来,在Eureka Server的启动类上添加@EnableEurekaServer注解,开启Eureka Server的功能。 ```java @SpringBootApplication @EnableEurekaServer public class EurekaServerApplication { public static void main(String[] args) { SpringApplication.run(EurekaServerApplication.class, args); } } ``` 4. 配置服务 在每个服务的配置文件中,我们需要配置该服务的名称和注册中心的地址。 ```yml spring: application: name: product-service eureka: client: service-url: defaultZone: http://localhost:8761/eureka/ ``` 在该配置文件中,我们定义了当前服务的名称为product-service,并指定了注册中心的地址为http://localhost:8761/eureka/。 5. 实现服务 在每个服务中,我们需要实现该服务的业务逻辑,并暴露对外的接口。 以product-service为例,我们需要实现商品服务的业务逻辑,并暴露对外的接口。我们可以在该服务的启动类上添加@EnableDiscoveryClient注解,将该服务注册到Eureka Server上。 ```java @SpringBootApplication @EnableDiscoveryClient public class ProductServiceApplication { public static void main(String[] args) { SpringApplication.run(ProductServiceApplication.class, args); } } ``` 同时,我们也需要实现商品服务的Controller,并在该Controller中调用其他服务的接口。 ```java @RestController public class ProductController { @Autowired private RestTemplate restTemplate; @GetMapping("/users/{userId}/orders") public List<Order> getUserOrders(@PathVariable Long userId) { List<Order> orders = restTemplate.exchange("http://order-service/orders/users/{userId}", HttpMethod.GET, null, new ParameterizedTypeReference<List<Order>>(){}, userId).getBody(); return orders; } } ``` 在该Controller中,我们使用RestTemplate调用订单服务的接口,并获取该用户的所有订单。 6. 启动服务 最后,我们需要按照如下顺序启动服务: 1. 启动Eureka Server 2. 启动订单服务 3. 启动用户服务 4. 启动商品服务 启动后,我们可以在Eureka Server的管理界面中查看所有注册到该服务上的服务。同时,我们也可以通过商品服务的接口,获取当前用户的所有订单信息。 以上就是一个简单的Spring Cloud模块化开发的示例。希望对您有所帮助!

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值