下面我来详细讲解“SpringBoot快速搭建微服务框架详细教程”的完整攻略。
一、前置条件
在开始快速搭建微服务框架之前,需要确保已经安装好以下环境:
- JDK 8或以上版本
- Maven
- IntelliJ IDEA或其他Java开发IDE工具
二、搭建微服务框架
1. 创建SpringBoot项目
在IntelliJ IDEA中创建新项目,选择Spring Initializr模板,填写相关信息,选择需要的依赖,创建项目。
2. 添加微服务框架依赖
编辑pom.xml文件,添加如下依赖:
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-netflix-eureka-server</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-config</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-netflix-eureka-client</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-feign</artifactId>
</dependency>
3. 配置Eureka注册中心
编辑application.yml文件,添加如下配置:
spring:
application:
name: service-registry
eureka:
instance:
prefer-ip-address: true
client:
register-with-eureka: false
fetch-registry: false
service-url:
defaultZone: http://localhost:8761/eureka/
4. 配置Feign客户端
编辑application.yml文件,添加如下配置:
spring:
application:
name: service-consumer
server:
port: 8000
eureka:
instance:
prefer-ip-address: true
client:
register-with-eureka: true
fetch-registry: true
service-url:
defaultZone: http://localhost:8761/eureka/
5. 创建服务提供者
在项目中创建一个新的模块,作为服务提供者。添加代码实现服务提供者,如下所示:
@Service
public class HelloServiceImpl implements HelloService {
@Override
public String hello(String name) {
return String.format("Hello, %s!", name);
}
}
6. 创建服务消费者
在项目中创建一个新的模块,作为服务消费者。添加代码实现服务消费者,如下所示:
@FeignClient("service-provider")
public interface HelloService {
@GetMapping("/hello")
String hello(@RequestParam("name") String name);
}
7. 运行项目
分别运行注册中心、服务提供者、服务消费者,测试服务调用。
三、示例
下面通过实现两个示例,来更好地理解如何快速搭建微服务框架。
示例一:注册中心和服务提供者
这个示例是较为简单的微服务应用示例,包含一个注册中心和一个服务提供者。首先我们通过Spring Initializr创建一个新的SpringBoot项目,填写相关信息,选择需要的依赖,创建项目。
然后,我们在pom.xml文件中添加以下依赖:
<dependencies>
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-netflix-eureka-server</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-netflix-eureka-client</artifactId>
</dependency>
</dependencies>
添加依赖后,进入application.yml文件,添加如下配置:
spring:
application:
name: eureka-server
server:
port: 8761
eureka:
instance:
hostname: eureka-server
client:
register-with-eureka: false
fetch-registry: false
service-url:
defaultZone: http://localhost:${server.port}/eureka/
这里的spring.application.name
是当前应用的名称,server.port
是当前应用的端口号,eureka.instance.hostname
是应用的主机名,eureka.client.register-with-eureka
和eureka.client.fetch-registry
分别配置成false,表示当前应用不注册到自己的注册中心,也不获取自己的注册表。
接着,我们创建一个服务提供者,添加代码实现服务提供者,如下所示:
@RestController
public class ProviderController {
@GetMapping(value = "/hello")
public String sayHello(@RequestParam("name")String name){
return String.format("Hello %s, welcome to Spring Cloud World!",name);
}
}
最后,我们需要在启动类中加入@EnableEurekaServer注解,表示当前应用是一个注册中心。然后运行项目,注册中心服务便创建完成了。
示例二:服务消费者
这个示例包含一个服务消费者和一个注册中心,服务消费者向注册中心注册,然后消费注册中心中的服务。首先我们通过Spring Initializr创建一个新的SpringBoot项目,填写相关信息,选择需要的依赖,创建项目。
然后,我们在pom.xml文件中添加以下依赖:
<dependencies>
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-netflix-eureka-client</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-netflix-eureka-server</artifactId>
</dependency>
</dependencies>
添加依赖后,进入application.yml文件,添加如下配置:
server:
port: 8080
eureka:
client:
register-with-eureka: true
fetch-registry: true
service-url:
defaultZone: http://localhost:8761/eureka/
instance:
prefer-ip-address: true
server.port
是当前应用的端口号,eureka.client.register-with-eureka
和eureka.client.fetch-registry
分别配置成true,表示当前应用会在启动时向注册中心注册并获取注册中心的服务列表。eureka.instance.prefer-ip-address
配置成true,表示以IP地址形式注册到注册中心,便于同网段内其他服务消费者调用。
接着,我们创建一个服务消费者,添加代码实现服务消费者,如下所示:
@RestController
public class ConsumerController {
@Autowired
private RestTemplate restTemplate;
@GetMapping(value = "/hello/{name}")
public String sayHello(@PathVariable("name")String name){
String serviceUrl = "http://service-provider/hello?name="+name;
String result = restTemplate.getForObject(serviceUrl,String.class);
return result;
}
}
这里使用RestTemplate来访问服务提供者,注意访问的URL是http://service-provider/hello
,其中service-provider
是服务提供者的应用名称。
最后,我们需要在启动类中加入@EnableDiscoveryClient注解,表示当前应用是一个服务消费者,可以向注册中心获取服务列表并消费服务。
至此,示例完成。运行服务消费者项目后,访问http://localhost:8080/hello/{name}
,即可看到服务消费者调用服务提供者的结果。
希望这份攻略能对您有所帮助。
本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:Spring Boot 快速搭建微服务框架详细教程 - Python技术站