Spring Cloud (3): Eureka-Client-Dienstleister

1. Erstellen Sie ein Unterprojekt und importieren Sie die Konfiguration wie folgt:

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

2. Erstellen Sie application.yml und fügen Sie zugehörige Konfigurationen wie folgt hinzu:

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

Objektbeschreibung

*  spring.application.name : 当前服务注册在 Eureka Server 上的名称。

*  eureka.client.service-url.defaultZone : 注册中⼼的访问地址。  

*  eureka.instance.prefer-ip-address : 是否将当前服务的 IP 注册到 Eureka Server。

3. Erstellen Sie eine Startklasse. Der Code lautet wie folgt

package com.frr;

import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;

@SpringBootApplication
public class EurekaClientApplication {
    
    
	public static void main(String[] args) throws Exception {
    
    
		SpringApplication.run(EurekaClientApplication.class, args);
	}

}

4. Starten Sie das Registrierungszentrum und starten Sie dann den gerade geschriebenen Dienstanbieter. Wenn Sie die Adresse des Registrierungszentrums besuchen, sehen Sie die folgende Oberfläche und es gibt weitere Anbieterdienste, die gerade erfolgreich registriert wurden.

Fügen Sie hier eine Bildbeschreibung ein
#5. Echter Kampf! Simulieren Sie das Hinzufügen, Löschen und Ändern von Schülern

  1. Erstellen Sie die Entitätsklasse „Student“ wie folgt:
package com.frr.entity;
import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.NoArgsConstructor;

@Data //生成Getter,Setter,equals,canEqual,hasCode,toString等方法
@AllArgsConstructor //添加一个构造函数,该构造函数含有所有已声明字段属性参数
@NoArgsConstructor //创建一个无参构造函数
public class Student {
    
    
	private long id;
	private String name;
	private int age;
}

Anmerkungen

*@Data    生成 Getter,Setter,equals,canEqual,hasCode,toString 等方法

*@AllArgsConstructor    添加一个构造函数,该构造函数含有所有已声明字段属性参数

*@NoArgsConstructor    创建一个无参构造函数
  1. Erstellen Sie eine Schnittstelle. Der Code lautet wie folgt:
package com.frr.repository;

import java.util.Collection;

import com.frr.entity.Student;

public interface StudentRepository {
    
    
	public Collection<Student> findAll();
	public Student findById(long id);
	public void saveOrUpdate(Student s);
	public void deleteById(long id);
}
  1. Erstellen Sie eine Implementierungsklasse und verwenden Sie statische Codeblöcke, um die Dateninitialisierung zu realisieren. Der Code lautet wie folgt:
package com.frr.repository.impl;

import java.util.Collection;
import java.util.HashMap;
import java.util.Map;
import org.springframework.stereotype.Repository;
import com.frr.entity.Student;
import com.frr.repository.StudentRepository;

@Repository
public class StudentRepositoryImpl implements StudentRepository{
    
    
	
	private static Map<Long,Student> studentMap;

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

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

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

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

}
  1. Erstellen Sie einen Controller mit dem folgenden Code:
package com.frr.controller;

import java.util.Collection;

import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.DeleteMapping;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.PathVariable;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.PutMapping;
import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;

import com.frr.entity.Student;
import com.frr.repository.StudentRepository;

@RestController //在Spring中@RestController的作用等同于@Controller + @ResponseBody。
@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 s) {
    
    
		studentRepository.saveOrUpdate(s);
	}
	
	@PutMapping("/Update")
	public void Update(@RequestBody Student s) {
    
    
		studentRepository.saveOrUpdate(s);
	}
	
	@DeleteMapping("/deleteById/{id}")
	public void deleteById(@PathVariable("id") long id) {
    
    
		studentRepository.deleteById(id);
	}
}
  1. Starten Sie die oben erstellte Startup-Klasse neu
  2. Verwenden Sie das Postman-Tool, um jede Methode zu testen. Die konsistenten Daten zeigen den Erfolg an!
    Fügen Sie hier eine Bildbeschreibung ein

6. Zusammenfassung

Es wurde eine sehr grundlegende Microservice-Architektur erstellt. Der Erstellungsprozess ist einfach und klar. Auf der Grundlage des ursprünglichen Spring Boot werden einige Abhängigkeiten von Spring Cloud und einige verwandte Konfigurationen von Eureka hinzugefügt. Zusammenfassend lässt sich sagen, dass Spring Cloud basierend auf Spring Boot die Funktionen verschiedener Komponenten bieten kann. Wie ruft der Dienstkonsument also die Schnittstelle des Dienstanbieters auf? Freuen wir uns auf den nächsten Artikel Spring Cloud (4): die Verwendung von RestTemplate

Ein Entwicklungsingenieur befindet sich ebenfalls in der Phase des kontinuierlichen Lernens und die üblichen kleinen Erfahrungen werden von Zeit zu Zeit ausgetauscht. Ich hoffe, dass diejenigen, die den von mir verfassten Text lesen, Umwege vermeiden können und wünsche Ihnen viel Erfolg bei Arbeit und Studium.
Blogger verfügen nur über begrenzte Erfahrung. Wenn es Mängel gibt, können Sie gerne gemeinsam kommunizieren und sich verbessern. Ich hoffe, gemeinsam mit Ihnen, die ebenfalls in CSDN tätig sind, Fortschritte zu erzielen.

Autor | Süße kleine Süßkartoffel
produziert | Kleine Süßkartoffel

Supongo que te gusta

Origin blog.csdn.net/qq_36836370/article/details/130870446
Recomendado
Clasificación