springboot集成springcloud

本文详细介绍SpringBoot集成SpringCloud的步骤,包括搭建Eureka注册中心、服务提供者与消费者,实现服务注册与调用。通过具体代码示例,演示如何在SpringBoot应用中集成SpringCloud组件。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

本例场景:
  springboot集成springcloud
  本例demo源码: https://github.com/zhangbeizhen/springboot-springcloud
1.本例分为3部分:
  1>.服务提供方provider
  2>.服务消费方consumer
  3>.注册中心Eureka
2.注册中心Eureka
  1>.在pom.xml引入依赖

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

  2>.在application.yml配置Eureka信息

server:
  port: 8761
eureka:
  instance:
    hostname: eureka-server  # eureka实例的主机名
  client:
    register-with-eureka: false #不把自己注册到eureka上
    fetch-registry: false       #不从eureka上来获取服务的注册信息
    service-url:
      defaultZone: http://localhost:8761/eureka/

   3>.在启动类加注解@EnableEurekaServer,使能Eureka服务器

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

 4>.在浏览器访问Eureka
  http://127.0.0.1:8761
3.服务提供方provider
  1>.在pom.xml引入依赖

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

  2>.在application.yml配置注册信息

server:
  port: 8081
spring:
  application:
    name: provider
#配置eureka信息
eureka:
  instance:
    prefer-ip-address: true  # 注册服务的时候使用服务的ip地址
  client:
    service-url:
      defaultZone: http://localhost:8761/eureka/

  3>.EmployeeService类

@Service
public class EmployeeService {
  public String getEmpInfo() {
   String info = "这是一个非常棒的同事.";
   return info;
  }
}

  4>.EmployeeController类

@RestController
public class EmployeeController {
  @Autowired
  private EmployeeService employeeService;
  @GetMapping("/emp")
  public String getEmpInfo(){
    return employeeService.getEmpInfo();
  }
}	

4.服务消费方consumer
  1>.在pom.xml引入依赖

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

  2>.在application.yml配置注册信息

spring:
  application:
    name: consumer
server:
  port: 8091
#配置eureka信息
eureka:
  instance:
    prefer-ip-address: true  # 注册服务的时候使用服务的ip地址
  client:
    service-url:
      defaultZone: http://localhost:8761/eureka/

  3>.RestConfig配置类

@Configuration
public class RestConfig {
  @LoadBalanced /**使用负载均衡机制*/
  @Bean
  public RestTemplate restTemplate(){
    return new RestTemplate();
  }
}

  4>.ManageController类

@RestController
public class ManageController {
  @Autowired
  RestTemplate restTemplate;
  @GetMapping("/query")
  public String getEmpInfo(){
    String info = restTemplate.getForObject("http://PROVIDER/emp", String.class);
    return "消费者服务获取的信息: "+info;
  }
}

  5>.在启动类加@EnableDiscoveryClient注解,开启发现服务功能

@EnableDiscoveryClient //开启发现服务功能
@SpringBootApplication
public class ConsumerApplication {
  public static void main(String[] args) {
    SpringApplication.run(ConsumerApplication.class, args);
  }
}

 6>.测试,Postman截图
5.三个服务都启动后,在浏览器访问Eureka
  http://127.0.0.1:8761
  截图:
以上,TKS.  

### 如何集成Spring Boot和Spring Cloud实现微服务架构 为了创建一个基于微服务的应用程序,开发者可以选择使用Spring Boot与Spring Cloud相结合的方法。通过这种方式,能够有效地简化应用程序的开发流程并提升效率。 #### 创建基础项目结构 首先,需要初始化一个新的Spring Boot项目,并引入必要的依赖项来支持Spring Cloud的功能。这通常涉及到添加诸如Eureka用于服务发现、Config Server作为配置管理服务器等组件的支持[^1]。 ```xml <dependency> <groupId>org.springframework.cloud</groupId> <artifactId>spring-cloud-starter-netflix-eureka-client</artifactId> </dependency> <!-- 配置中心 --> <dependency> <groupId>org.springframework.cloud</groupId> <artifactId>spring-cloud-config-server</artifactId> </dependency> ``` #### 启动类设置 在项目的启动类中加入`@EnableDiscoveryClient`注解以便让当前的服务注册到Eureka Server上成为可用的服务实例之一。对于想要消费其他服务的应用,则可以通过Feign客户端轻松完成远程接口调用[^2]。 ```java @SpringBootApplication @EnableDiscoveryClient public class Application { public static void main(String[] args) { SpringApplication.run(Application.class, args); } } ``` #### 使用Feign进行服务间通信 借助于Spring Cloud OpenFeign,只需定义简单的Java接口即可自动处理HTTP请求发送逻辑。下面是一个示例代码片段展示如何声明式地访问另一个名为`product-service`的服务: ```java @FeignClient(name="PRODUCT-SERVICE", fallback=ProductServiceFallbackFactory.class) public interface ProductServiceApi { @GetMapping("/products/{id}") Product findById(@PathVariable("id") Long id); } ``` 上述操作完成后,便可以在本地环境中运行多个不同的微服务模块并通过它们之间相互协作形成完整的业务场景。值得注意的是,在实际生产环境下还需要考虑更多方面如安全性、监控告警机制等问题以确保系统的稳定性和可靠性。
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值