SpringCloud项目搭建(二)服务提供者,调用者注册到Eureka中

一、使用SpringBoot搭建一个简单的web工程作为服务提供者

SpringCloud项目搭建(二)服务提供者,调用者注册到Eureka中_第1张图片

SpringCloud项目搭建(二)服务提供者,调用者注册到Eureka中_第2张图片

SpringCloud项目搭建(二)服务提供者,调用者注册到Eureka中_第3张图片

SpringCloud项目搭建(二)服务提供者,调用者注册到Eureka中_第4张图片

SpringCloud项目搭建(二)服务提供者,调用者注册到Eureka中_第5张图片

项目创建成功!

二、修改JDK版本

SpringCloud项目搭建(二)服务提供者,调用者注册到Eureka中_第6张图片

SpringCloud项目搭建(二)服务提供者,调用者注册到Eureka中_第7张图片

三、修改pom.xml文件

SpringCloud项目搭建(二)服务提供者,调用者注册到Eureka中_第8张图片

SpringCloud项目搭建(二)服务提供者,调用者注册到Eureka中_第9张图片

代码如下:


  4.0.0
  com.soulmate
  eureka-service-provider
  0.0.1-SNAPSHOT
  
  
    org.springframework.boot
    spring-boot-starter-parent
    1.5.13.RELEASE
  
  
    
        
            org.springframework.cloud
            spring-cloud-dependencies
            Dalston.SR5
            pom
            import
        
    
  
  
  	
  		org.springframework.cloud
  		spring-cloud-starter-config
  	
  	
  		org.springframework.cloud
  		spring-cloud-starter-eureka-server
  	
  
  
	
        
            
                org.springframework.boot
                spring-boot-maven-plugin
                
                    true
                
            
            
                maven-compiler-plugin
                
                    1.8
                    1.8
                
            
        
    

四、在src/main/resources目录中建立application.yml 配置文件。

SpringCloud项目搭建(二)服务提供者,调用者注册到Eureka中_第10张图片

SpringCloud项目搭建(二)服务提供者,调用者注册到Eureka中_第11张图片

SpringCloud项目搭建(二)服务提供者,调用者注册到Eureka中_第12张图片

SpringCloud项目搭建(二)服务提供者,调用者注册到Eureka中_第13张图片

代码如下:

spring:
  application:
    name: eureka-service-provider
  
  eureka:
    instance:
      hostname: localhost
    client:
      serviceUrl:
        defaultZone: http://localhost:8761/eureka/

五、编写启动类,提供一个简单的REST服务

创建Controller文件夹,在文件夹中新建ProviderController

SpringCloud项目搭建(二)服务提供者,调用者注册到Eureka中_第14张图片

代码如下:

package com.soulmate.server.controller;

import org.springframework.web.bind.annotation.PathVariable;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestMethod;
import org.springframework.web.bind.annotation.RestController;

import com.soulmate.server.model.Person;

@RestController
public class ProviderController {
	
	@RequestMapping(value = "person/{personId}",method = RequestMethod.GET)
	public Person findPerson(@PathVariable("personId") String personId){
		Person person = new Person();
		person.setId(personId);
		person.setName("Soulmate");
		person.setAge("28");
		return person;
	}
	
}

创建Model文件夹,在文件夹中新建Person实体类,实体类中包括id,name,age

SpringCloud项目搭建(二)服务提供者,调用者注册到Eureka中_第15张图片

创建启动类ProviderApp:

SpringCloud项目搭建(二)服务提供者,调用者注册到Eureka中_第16张图片

创建完成后 ,首先启动Eureka服务:

该步骤在上篇博客以搭建好:

https://blog.csdn.net/Soulmate_Min/article/details/88029402

启动后:浏览器进入eureka页面:http://localhost:8761/

页面如下:

SpringCloud项目搭建(二)服务提供者,调用者注册到Eureka中_第17张图片

然后启动服务提供者ProviderApp:

SpringCloud项目搭建(二)服务提供者,调用者注册到Eureka中_第18张图片

启动成功后, 刷新Eureka页面

SpringCloud项目搭建(二)服务提供者,调用者注册到Eureka中_第19张图片

至此,服务提供者成功注册到Eureka注册中心。

六、编写服务调用者:

eureka-service-invoker

创建项目过程与服务提供者一致,这里不过多概述。

pom文件代码:


  4.0.0
  com.soulmate
  eureka-service-invoker
  0.0.1-SNAPSHOT
  
   
    org.springframework.boot
    spring-boot-starter-parent
    1.5.13.RELEASE
  
  
    
        
            org.springframework.cloud
            spring-cloud-dependencies
            Dalston.SR5
            pom
            import
        
    
  
  
  	
  		org.springframework.cloud
  		spring-cloud-starter-config
  	
  	
  		org.springframework.cloud
  		spring-cloud-starter-eureka-server
  	
  	
  		org.springframework.cloud
  		spring-cloud-starter-ribbon
  	
  
  
	
        
            
                org.springframework.boot
                spring-boot-maven-plugin
                
                    true
                
            
            
                maven-compiler-plugin
                
                    1.8
                    1.8
                
            
        
    
  

配置文件代码application.yml:

server:
  port: 9000
spring:
  application:
    name: eureka-service-invoker
  eureka:
    instance:
      hostname: localhost
    client:
      serviceUrl:
        defaultZone: http://localhost:8761/eureka/

创建incoker控制类。

SpringCloud项目搭建(二)服务提供者,调用者注册到Eureka中_第20张图片

在控制器中,配置了RestTemplate的Bean,RestTemplate本来是spring-web模块下面的类,主要来调用Rest服务。本身并不具备调用分布式服务的能力,但是RestTemplate的Bean被@LoadBalanced注解修饰后,这个RestTemplate实例就具有访问分布式服务的能力了。

在控制器中,新建一个router的方法,用来对外发布Rest服务。该方法只起路由作用,实际上是用RestTemplate来调用eureka-service-provider的服务。

具体代码如下:

package com.soulmate.server.controller;

import org.springframework.cloud.client.loadbalancer.LoadBalanced;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestMethod;
import org.springframework.web.bind.annotation.RestController;
import org.springframework.web.client.RestTemplate;

@RestController
@Configuration
public class InvokerController {
	
	@Bean
	@LoadBalanced
	public RestTemplate getRestTemplate(){
		return new RestTemplate();
	}
	
	@RequestMapping(value = "/router",method = RequestMethod.GET)
	public String router(){
		RestTemplate restTpl = getRestTemplate();
		//根据应用名称调用服务
		String json = restTpl.getForObject("http://eureka-service-provider/person/1", String.class);
		return json;
	}
	
}

然后编写启动类:

SpringCloud项目搭建(二)服务提供者,调用者注册到Eureka中_第21张图片

在启动类中,使用了@EnableDiscoveryClient注解来修饰启动类,该注解使得服务调用者有能力去Eureka中发现服务。

具体代码如下:

package com.soulmate.server;

import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.boot.builder.SpringApplicationBuilder;
import org.springframework.cloud.client.discovery.EnableDiscoveryClient;
import org.springframework.cloud.netflix.eureka.EnableEurekaClient;

@SpringBootApplication
@EnableDiscoveryClient
public class InvokerApp {

	public static void main(String[] args) {
		new SpringApplicationBuilder(InvokerApp.class).web(true).run(args);

	}

}

到此为止,eureka服务,服务提供者, 服务消费者都搭建完成。

下面测试:

1.启动eureka-server服务

2.启动服务提供者eureka-service-provider

3.启动服务消费者eureka-service-invoker

浏览器访问Eureka服务:http://localhost:8761/

SpringCloud项目搭建(二)服务提供者,调用者注册到Eureka中_第22张图片

在浏览器中调用服务消费者的router服务:http://localhost:9000/router

调用成功。项目搭建完成。

 

最后奉上结构程序图,方便大家更清楚的理解。感谢支持。

SpringCloud项目搭建(二)服务提供者,调用者注册到Eureka中_第23张图片

你可能感兴趣的:(项目搭建)