开启一个spring cloud 工程 -第二步-创建服务的提供者

一个微服务由 服务提供者-注册中心-服务消费者 组成
现在来创建一个服务提供者,并且提价例子来测试(该例子只是测试提供者功能,并没有与注册中心挂钩)

第一步:从上一步创建的父工程里 创建一个新的module

创建module ,并且取名为eurekaclient
在这里插入图片描述在新建的eurekaclient 工程的pom.xml中添加提供者依赖:

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

第二步:创建yml文件,添加提供者配置信息

在eurekaclient的resource文件夹中创建application.yml文件,并添加以下信息:

server:
  port: 8010
spring:
  application:
      name: provider
eureka:
  client:
    service-url:
      defaultZone: http://localhost:8761/eureka/
  instance:
    prefer-ip-address: true

配置信息说明:

  • server-port: 服务提供者的端口号
  • spring-application-name: 当前服务注册在Eureka Server的名称
  • eureka-client-service-url-defaultZone: 注册中心的地址
  • eureka-instance-prefer-ip-address: 是否将当前服务的ip注册到Eureka Server中

第三步,配置启动类,启动服务提供者

在eurekaclient 的java 文件夹中,创建一个名字以Application 结尾的java 类,添加如下信息:

package com.southwind;


import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
//声明该类是springboot服务的入口
@SpringBootApplication
public class ProviderApplication {
    
    
        public static void main(String[] args){
    
    
            SpringApplication.run(ProviderApplication.class);
        }
    }

最后,先启动注册中心eurekaserver ,然后再启动eurekaclient ,在网页上输入 http://localhost:8761

即可看到服务提供者已经注册进了注册中心
在这里插入图片描述
至此,服务提供者已经实现。

下面为提供者提价一下增删改查的功能:

这里已经为idea 增加了lombok 插件以及依赖,为的是实体类可以省略掉getter/setter 方法

添加的lombok依赖放在了父工程的pom.xml文件里,方便其他子工程使用
依赖如下:

<dependency>
        <groupId>org.projectlombok</groupId>
        <artifactId>lombok</artifactId>
        <version>1.16.10</version>
        <scope>provided</scope>
    </dependency>

然后在eruekaclient工程建好如下目录的文件:
在这里插入图片描述
实体类信息添加如下:
Student:

package com.southwind.entity;

import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.NoArgsConstructor;

@Data
@NoArgsConstructor                 //无参构造
@AllArgsConstructor                //有参构造
public class Student {
    
    
    private long id;
    private String name;
    private int age;

}

StudentRepository:

package com.southwind.repository;

import com.southwind.entity.Student;

import java.util.Collection;

public interface StudentRepository {
    
    
    public Collection<Student> findAll();
    public Student findById(long id);
    public void saveOrUpdate(Student student);
    public void deleteById(long id);
}

简化增删改查操作,所以不连接数据库,使用Map集合作为存取的介质
StudentRepositoryimpl:
package com.southwind.repository.impl;

import com.southwind.entity.Student;
import com.southwind.repository.StudentRepository;
import org.springframework.stereotype.Repository;

import java.util.Collection;
import java.util.HashMap;
import java.util.Map;

@Repository
public class StudentRepositoryimpl implements StudentRepository {

   private static Map<Long,Student> studentMap;
    static{
    
    
        studentMap = new HashMap<>();
        studentMap.put(1L,new Student(1L,"张三",22));
        studentMap.put(2L,new Student(2L,"李四",23));
        studentMap.put(3L,new Student(3L,"王五",24));
    }
    @Override
    public Collection<Student> findAll() {
    
    
        return studentMap.values();
    }

    @Override
    public Student findById(long id) {
    
    
        return studentMap.get(id);
    }

    @Override
    public void saveOrUpdate(Student student) {
    
    
    studentMap.put(student.getId(),student);
    }

    @Override
    public void deleteById(long id) {
    
    
        studentMap.remove(id);
    }
}

这里使用REST ful 风格实现增删改查

StudentHandler:

package com.southwind.controller;

import com.southwind.entity.Student;
import com.southwind.repository.StudentRepository;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.*;

import java.util.Collection;

@RestController
@RequestMapping("/student")
public class StudentHandler {
    
    
    @Autowired
    private StudentRepository studentRepository;

    @GetMapping("/findAll")
    public Collection<Student> findAll(){
    
    
        return studentRepository.findAll();
    }

    @GetMapping("/findById/{id}")
    public Student findById(@PathVariable("id") long id){
    
    
        return studentRepository.findById(id);
    }

    @PostMapping("/save")
    public void save(@RequestBody Student student){
    
    
         studentRepository.saveOrUpdate(student);
    }
    @PutMapping("/update")
    public void update(@RequestBody Student student){
    
    
        studentRepository.saveOrUpdate(student);
    }
    @DeleteMapping("/deleteById/{id}")
    public void deleteById(@PathVariable("id") long id){
    
    
        studentRepository.deleteById(id);
    }
}

完成,直接启动 eruekaclient 工程,在postman 测试:

查询:
在这里插入图片描述
添加:
在这里插入图片描述修改:
在这里插入图片描述
删除:
在这里插入图片描述
全部测试成功,服务提供者增删改查功能完成. 目前还未用到注册中心,后续会继续更新 服务消费者通过注册中心调用服务提供者的过程

猜你喜欢

转载自blog.csdn.net/chenmaolin928/article/details/109131873