Kata pengantar
Dalam desain layanan mikro, panggilan antar layanan normal. Biasanya kami menggunakan httpClient untuk mengimplementasikan panggilan ke sumber daya jarak jauh. Metode ini membutuhkan pengetahuan tentang alamat layanan, alamat antarmuka bisnis, dll., Dan Anda harus menunggu sampai selesai sebelum Anda dapat menyebutnya. Ini bukan hal yang baik untuk pengembangan terintegrasi. Ini memiliki ketergantungan yang kuat antara layanan A dan B. Jadi bagaimana kita memisahkannya? Jawabannya adalah kerangka OpenFeign, yang merupakan bagian dari Springcloudy.
1 Tambahkan referensi paket
'org.springframework.cloud:spring-cloud-starter-openfeign',
Catatan: Jika Anda tidak merujuk pada versi Springcloudy, ada terlalu banyak orang, Anda perlu menyatakannya terlebih dahulu
DependencyManagement {impor {mavenbom "org.springframework.cloud:spring-cloud-dependencies:$ {springcloudversion}"}}2 Tentukan Konfigurasi Terkait Profil
// Konfigurasi Sumber Path File Default {integtest {java.srcdir file ('src/test/java') sumber daya. Sourcesets.test.RunTimeClassPath}3 Tentukan antarmuka layanan dan tentukan metode semu, yang merupakan metode dalam layanan. Anda perlu mengetahui parameter metode dan nilai pengembaliannya. Anda tidak perlu khawatir tentang implementasinya, cukup mengejek dalam tes unit.
Paket test.lind.javalindday.feignClientDemo; impor org.springframework.cloud.openfeign.feignclient; impor org.springframework.context.annotation.getile; import org.springframework.web.bind.annotation.getmappingping; */@Profile ("! IntegTest")@fegnclient (name = "ServiceName") MockClient Antarmuka Publik {@GetMapping (Path = "/Balancesheet/{ClientCode}") String Balancesheet (String ClientCode);}4 Peran profil
Profil adalah variabel lingkungan. Anda mengaktifkannya melalui ActiveProfile di kelas. Saat menggunakannya, Anda telah menggunakan anotasi profil. Dalam kode di atas, objek mockclient tidak dapat digunakan di lingkungan integtest.
5 Menambahkan implementasi tiruan, secara otomatis disuntikkan, jadi nyatakan anotasi @Bean
package test.lind.javaLindDay;import static org.mockito.ArgumentMatchers.anyString;import static org.mockito.Mockito.mockito.mockito;import static org.mockito.Mockito.when;import org.springframework.context.annotation.Bean;import org.springframework.context.annotation.configuration; impor org.springframework.context.annotation.profile; test.lind.javalindday.feignclientdemo.mockclient {configuration {mCockeCkClice {mockclient {mockclient {mockclient {mockclient {mockclient {mockclient {mockclient {mockclient {mockclient {integtclient {integtclient {integtest mock (mockclient.class); when (client.balancesheet (anystring ())) .thenreturn ("OK"); klien kembali; }}6 Tambahkan tes unit, pastikan untuk menentukan variabel lingkungannya pada uji unit
package test.lind.javaLindDay;import static org.junit.Assert.assertEquals;import org.junit.Test;import org.junit.runner.RunWith;import org.springframework.beans.factory.annotation.Autowired;import org.springframework.boot.test.context.SpringBootTest;import org.springframework.test.context.ActiveProfiles;import org.springframework.test.context.junit4.SpringRunner;import test.lind.javaLindDay.feignClientDemo.MockClient;@RunWith(SpringRunner.class)@SpringBootTest//Specify the profile environment @ActiveProfiles("integTest")public kelas javalinddayapplicationTests {@autowired mockclient mockclient; @Test public void testMockClient () {assertequals (mockclient.balancesheet ("ok"), "ok"); }}Setelah menjalankan tes, mockClient akan disuntikkan, dan akan menggunakan kelas implementasi tiruan, karena hanya profil kelas implementasi tiruan ke lingkungan integtest.
Dengan OpenFeign, layanan panggilan ke layanan pengembangan dapat dipisahkan di masa depan!
Meringkaskan
Di atas adalah seluruh konten artikel ini. Saya berharap konten artikel ini memiliki nilai referensi tertentu untuk studi atau pekerjaan semua orang. Jika Anda memiliki pertanyaan, Anda dapat meninggalkan pesan untuk berkomunikasi. Terima kasih atas dukungan Anda ke wulin.com.