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

本文介绍了基于SpringBoot搭建SpringCloud项目的详细步骤。先使用SpringBoot搭建服务提供者,修改JDK、pom.xml和配置文件,编写启动类并注册到Eureka。接着编写服务调用者,配置RestTemplate使其具备访问分布式服务能力,使用注解让服务调用者能发现服务。最后完成测试,项目搭建成功。

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

项目创建成功!

二、修改JDK版本

三、修改pom.xml文件

代码如下:

<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
  <modelVersion>4.0.0</modelVersion>
  <groupId>com.soulmate</groupId>
  <artifactId>eureka-service-provider</artifactId>
  <version>0.0.1-SNAPSHOT</version>
  
  <parent>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-parent</artifactId>
    <version>1.5.13.RELEASE</version>
  </parent>
  <dependencyManagement>
    <dependencies>
        <dependency>
            <groupId>org.springframework.cloud</groupId>
            <artifactId>spring-cloud-dependencies</artifactId>
            <version>Dalston.SR5</version>
            <type>pom</type>
            <scope>import</scope>
        </dependency>
    </dependencies>
  </dependencyManagement>
  <dependencies>
  	<dependency>
  		<groupId>org.springframework.cloud</groupId>
  		<artifactId>spring-cloud-starter-config</artifactId>
  	</dependency>
  	<dependency>
  		<groupId>org.springframework.cloud</groupId>
  		<artifactId>spring-cloud-starter-eureka-server</artifactId>
  	</dependency>
  </dependencies>
  
	<build>
        <plugins>
            <plugin>
                <groupId>org.springframework.boot</groupId>
                <artifactId>spring-boot-maven-plugin</artifactId>
                <configuration>
                    <fork>true</fork>
                </configuration>
            </plugin>
            <plugin>
                <artifactId>maven-compiler-plugin</artifactId>
                <configuration>
                    <source>1.8</source>
                    <target>1.8</target>
                </configuration>
            </plugin>
        </plugins>
    </build>
</project>

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

代码如下:

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

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

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

代码如下:

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

创建启动类ProviderApp:

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

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

https://blog.youkuaiyun.com/Soulmate_Min/article/details/88029402

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

页面如下:

然后启动服务提供者ProviderApp:

启动成功后, 刷新Eureka页面

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

六、编写服务调用者:

eureka-service-invoker

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

pom文件代码:

<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
  <modelVersion>4.0.0</modelVersion>
  <groupId>com.soulmate</groupId>
  <artifactId>eureka-service-invoker</artifactId>
  <version>0.0.1-SNAPSHOT</version>
  
   <parent>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-parent</artifactId>
    <version>1.5.13.RELEASE</version>
  </parent>
  <dependencyManagement>
    <dependencies>
        <dependency>
            <groupId>org.springframework.cloud</groupId>
            <artifactId>spring-cloud-dependencies</artifactId>
            <version>Dalston.SR5</version>
            <type>pom</type>
            <scope>import</scope>
        </dependency>
    </dependencies>
  </dependencyManagement>
  <dependencies>
  	<dependency>
  		<groupId>org.springframework.cloud</groupId>
  		<artifactId>spring-cloud-starter-config</artifactId>
  	</dependency>
  	<dependency>
  		<groupId>org.springframework.cloud</groupId>
  		<artifactId>spring-cloud-starter-eureka-server</artifactId>
  	</dependency>
  	<dependency>
  		<groupId>org.springframework.cloud</groupId>
  		<artifactId>spring-cloud-starter-ribbon</artifactId>
  	</dependency>
  </dependencies>
  
	<build>
        <plugins>
            <plugin>
                <groupId>org.springframework.boot</groupId>
                <artifactId>spring-boot-maven-plugin</artifactId>
                <configuration>
                    <fork>true</fork>
                </configuration>
            </plugin>
            <plugin>
                <artifactId>maven-compiler-plugin</artifactId>
                <configuration>
                    <source>1.8</source>
                    <target>1.8</target>
                </configuration>
            </plugin>
        </plugins>
    </build>
  
</project>

配置文件代码application.yml:

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

创建incoker控制类。

在控制器中,配置了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;
	}
	
}

然后编写启动类:

在启动类中,使用了@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/

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

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

 

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

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值