Vorwort
Im Microservice -Design sind die Anrufe zwischen Diensten normal. Normalerweise verwenden wir HTTPClient, um Anrufe in Remote -Ressourcen zu implementieren. Diese Methode erfordert Kenntnisse über die Adresse des Dienstes, die Geschäftsschnittstellenadresse usw., und Sie müssen warten, bis er abgeschlossen ist, bevor Sie sie anrufen können. Dies ist keine gute Sache für die integrierte Entwicklung. Es hat eine starke Abhängigkeit zwischen A- und B -Diensten. Wie entkoppeln wir es? Die Antwort ist das OpenFeign -Framework, das Teil von SpringCloudy ist.
1 Fügen Sie eine Paketreferenz hinzu
'org.springframework.cloud:spring-cloud-starter-openfesign',
Hinweis: Wenn Sie nicht auf die SpringCloudy -Version verweisen, gibt es zu viele Leute, müssen Sie sie zuerst deklarieren
Abhängigkeitsmanagement {Imports {mavenbom "org.springframework.cloud:spring-cloud-Abhängigkeiten:$ <SpringCloudversion}"}}2 Profilbezogene Konfiguration definieren
// Konfiguration der Standarddateipfade Quellensets {Intragest {java.srcdir -Datei ('src/test/java') ressourcen.srcdir -Datei ('src/test/ressourcen')}} Task IntEGtest (Typ: testsdirs ClassSdirs) Quellensets.test.RuntimeClassPath}3 Definieren Sie die Serviceschnittstelle und definieren Sie die Pseudo-Methode, die die Methode im Dienst ist. Sie müssen die Methodenparameter und ihren Rückgabewert kennen. Sie müssen sich keine Sorgen um die Implementierung machen, nur im Unit -Test verspotten.
Paket test.lind.javalindday.Feignclientdemo; import org.springframework.cloud.openfeign.Feignclient; import org.springframework.context.annotation.profile; */@Profil ("!! IntGest")@feignClient (name = "serviceName") public interface mockclient {@getmaping (path = "/balancesheet/{clientcode}") String Balancesheet (String ClientCode);};};};};4 Die Rolle des Profils
Profil ist eine Umgebungsvariable. Sie aktivieren es durch ActiveProfile in der Klasse. Bei der Verwendung haben Sie Profilanmerkungen verwendet. Im obigen Code kann das Mockclient -Objekt in der Umgebung intest nicht verwendet werden.
5 Die Mock -Implementierung wurde hinzugefügt, sie wird automatisch injiziert, also deklarieren Sie die @Bean -Annotation
Paket test.lind.javalindday; importieren statische org.mockito.argumentMatchers.anystring; importieren statische org.mockito.mockito.mockito.Mockito; Import static org.mockito.Mockito.when; org.springframework.context.annotation.configuration; import org.springFramework.context.annotation.profile; Mock (Mockclient.class); wenn (Client.Balancesheet (AnyString ()) .thenReturn ("OK"); Kunden zurückgeben; }}6 Fügen Sie Unit -Tests hinzu, stellen Sie sicher, dass Sie seine Umgebungsvariablen bei Unit -Tests angeben
Paket test.lind.javalindday; Import static org.junit.assert.assertequals; import org.junit.test; import org.junit.runner.runwith; org.springframework.test.context.activeProfiles; import org.springframework.test.context.junit4.springrunner; test.lind.javalindday.FEIGNCLIENTDEMO.MOCKCLIENT; JavalinddayApplicationTests {@autowired Mockclient Mockclient; @Test public void testMockClient () {assertequals (Mockclient.Balancesheet ("ok"), "OK"); }}Nach dem Ausführen des Tests wird der Mockclient injiziert und verwendet die Mock -Implementierungsklasse, da nur das Profil der Mock -Implementierungsklasse auf die Umgebung intest verweist.
Mit OpenFEIGG kann der Serviceanruf an den Entwicklungsdienst in Zukunft entkoppelt werden!
Zusammenfassen
Das obige ist der gesamte Inhalt dieses Artikels. Ich hoffe, dass der Inhalt dieses Artikels einen gewissen Referenzwert für das Studium oder die Arbeit eines jeden hat. Wenn Sie Fragen haben, können Sie eine Nachricht zur Kommunikation überlassen. Vielen Dank für Ihre Unterstützung bei Wulin.com.