SpringCloud微服务之服务提供者

SpringCloud微服务之服务提供者

继上一篇博文单节点的SpringCloud注册中心eureka之后我们编写一个SpringCloud服务提供者,它也是一个web项目,新建项目的方式跟上一篇博文一个讨论,本文是基于上一篇的。

引入pom文件的依赖

<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>

该web项目是服务提供者,eureka注册中心client
当然了这句话也能在配置文件中体现出来,这句话还是要理解的。

编写服务启动类

@SpringBootApplication
@EnableEurekaClient
public class LoginApplication {

    public static void main(String[] args) {
        SpringApplication.run(LoginApplication.class);
    }
}

上一篇博文的启动类是@EnableEurekaServer,这里是@EnableEurekaClient

目前只有这个启动类,是没有办法将服务注册到Eureka的,我们需要通过配置让改web项目能够知道并注册到eureka注册中心上。

application.yml配置

server:
  port: 8011
  servlet:
    context-path: /
spring:
  profiles:
    active: local
  application:
    name: micro-tpl-login
eureka:
  client:
    service-url:
      defaultZone: http://localhost:8001/eureka

配置项eureka.client.service-url.defaultZone就是告知改应用eureka的地址
这样一来改服务提供者就能注册,并拉去到注册信息了。

启动我们的启动类,观察之前的eureka的控制台:http://localhost:8001/
provider
我们的应用micro-tpl-login就注册上来了。

关闭服务在观察eureka注册中心变化:
关闭服务
服务被移除掉了。

我们写一个服务:

@RestController
@RequestMapping("/provider")
public class ProviderController {

    @GetMapping("/say/hi/{name}")
    public String sayHi(@PathVariable String name){
        return "你好:"+name;
    }
}

再启动,在观察Eureka注册中心控制台 返现服务有注册上了,我们这里不贴图了。
http://localhost:8011/provider/say/hi/lucy
你好:lucy

服务提供者目前就写好了,额!
此时我们把eureka相关的配置去掉,就直接在浏览器放入http://localhost:8011/provider/say/hi/lucy 也是能正常访问的,体现不出它在SpringCloud微服务中的服务者的姿势,我们写一个服务消费者在另外新的应用中直接调用服务提供者的rest服务。

关于异常

我们在写一个方法:

 @GetMapping("/get/user/{id}")
 public ResponseEntity<LoginUser> getUser(@PathVariable Long id){
     if(Long.valueOf(2L).equals(id)){
         throw new IllegalArgumentException();
     }
     LoginUser loginUser = new LoginUser();
     loginUser.setId(1L);
     loginUser.setName("张三");
     loginUser.setPhone("15701311193");
     return new ResponseEntity<LoginUser>(loginUser, HttpStatus.OK);
 }

为了模拟异常我们当输入:http://localhost:8011/provider/get/user/2
我们抛出一个异常,但是spring帮我们自己统一定义了一个/error页面,我们没有定义所以就出现了,下面的异常:
错误页面

我们先来解决,创建一个Controller

猜你喜欢

转载自blog.csdn.net/mayongzhan_csdn/article/details/81119891