紙の上はとても浅くて、自分でやらなきゃいけないことは絶対にわかっています〜とても簡単そうに見えて、いろいろなピットが一人で〜みんな、ゆっくり話させてください〜
スプリングクラウドとは何なのかナンセンスな話はしません〜
ユーレカ
Eureka(略語だと思ったのですが、単語であることがわかりました。次のように翻訳されました:見つけました、見つけました!0.0)は、サービスの登録と検出を提供するNetflixオープンソース製品です。サービスの完全な実装を提供します。レジストリとサービスの発見。また、springcloudシステムで最も重要なコアコンポーネントの1つです。
このことの一般的な理解は淘宝網のようなものです。あなたが売り手であろうと買い手であろうと、取引したいのであれば、私に口座を登録する必要があります。
1.最初に新しいMavenプロジェクトを作成します
2.pomファイルに関連するjarパッケージを導入します
上司のチュートリアルを学習した後、結果は上司のデモで直接報告され、スタートアッププログラムは常に次のプロンプトを表示します。
原因:java.lang.ClassNotFoundException:com.sun.jersey.api.core.DefaultResourceConfig
落ち込んでいる場合は、spring-cloud-starter-eureka-serverjarパッケージを確認してください
紹介したジャージジャーは1.19.1だったので、自分で調べてみたところ、1.19が使えることがわかったので、pomファイルで紹介しました。私の理解では、1.19.1は1.19バージョンよりも間違いなく高いです。 。どうしてうまくいかないのですか?
再起動するとエラーが消え、後でエラーが報告され、サーボパッケージの下に別のクラスが見つかりませんでした。mmp〜はバージョンの問題であり、サーボパッケージが導入されました。ok〜
最後に、次のpom構成ファイルが作成されます
1 <parent> 2 <groupId> org.springframework.boot </ groupId> 3 <artifactId> spring-boot-starter-parent </ artifactId> 4 <version> 1.5.8.RELEASE </ version> 5 </ parent> 6 7 <dependencies> 8 <dependency> 9 <groupId> org.springframework.cloud </ groupId> 10 <artifactId> spring-cloud-starter </ artifactId> 11 </ dependency> 12 <dependency> 13 <groupId> com。 sun.jersey </ groupId> 14 <artifactId> jersey-bundle </ artifactId> 15 <version> 1.19 </ version> 16 </ dependency> 17 18 <依存関係> 19 <groupId> com.netflix.servo </ groupId> 20 <artifactId >サーボコア</ artifactId> 21 <version> 0.12.7 </ version> 22 </ dependency> 23 <dependency> 24 <groupId> org。 springframework.cloud </ groupId> 25 <artifactId> spring-cloud-starter-eureka-server </ artifactId> 26 </ dependency> 27 </ dependencies> 28 <dependencyManagement> 29 <dependencies> 30 <dependency> 31 <groupId> org.springframework.cloud </ groupId> 32 <artifactId> spring-cloud-dependencies </ artifactId> 33 <version> Dalston.RC1 </ version> 34 <type> pom </ type> 35 <scope> import </ scope> スコープ>インポート</スコープ> 36 </依存関係> 37 </依存関係> 38 </ dependencyManagement> 39 <repositories> 40 <repository> 41 <id> spring-milestones </ id> 42 <name> Spring Milestones </ name> 43 <url> https:/ /repo.spring.io/milestone </ url> 44 <snapshots> 45 <enabled> false </ enabled> 46 </ snapshots> 47 </ repository> 48 </ repository>
3.スタートアップコードを書く
1 @SpringBootApplication 2 @EnableEurekaServer 3 public class App { 4 5 public static void main(String [] args){ 6 SpringApplication.run(App.class、args); 7} 8}
EnableEurekaServerアノテーションの追加に注意してください
4.構成ファイルを追加します
この構成ファイルを追加するには、application.propertiesとapplication.yamlの2つの形式があります。2つの形式の違いは比較しません。しかし、このファイルの場所については、しばらく戸惑い、ついに図のように場所を見つけようとしました。
また、手紙のファイル名は0.0以上であることに注意する必要があります。手紙を書くことに注意を払わなかったという理由だけで、エラーも報告しました。。。。
Application.properties形式の場合、ファイルの内容は次のとおりです。
1 spring.application.name = spring-cloud-eureka 2 server.port = 8000 3 eureka.client.register-with-eureka = false 4 eureka.client.fetch-registry = false 5 eureka.client.serviceUrl.defaultZone = http :// localhost:$ {server.port} / eureka /
3行目はデフォルトでtrueであることに注意してください。つまり、このfalseを追加しないと、彼は自分自身を自分自身に登録したいので、起動時にエラーが報告されます。!!4行目もデフォルトでtrueです。これは、サービスセンターに登録された情報を取得するかどうかを意味します。
5.レジストリを開始します
ブラウザにlocalhost:8000と入力して、レジストリが正常に起動しているかどうかを確認します。次のスクリーンショットが表示され、問題がないことを示します。
登録センターでは、サービスプロバイダーとサービスコンシューマーを雇用します。
サービスプロバイダー
1.新しいMavenプロジェクトを作成します
2.pomファイルにレジストリサービスと同じjarパッケージを導入します。
3.application.propertiesを記述します
内容は以下の通りです。
1 spring.application.name = spring-cloud-producer 2 server.port = 9000 3 eureka.client.serviceUrl.defaultZone = http:// localhost:8000 / eureka /
1行目は独自のサービスに名前を付け、2行目は独自のアクセスポートを設定し、3行目は登録するレジストリを設定します。eurekaレジストリをローカル8000ポートに設定しているため、だから私たちはこのアドレスを書きます
4.スタートアップコードを書く
1 @SpringBootApplication 2 @EnableDiscoveryClient 3 public class App 4 { 5 public static void main(String [] args) 6 { 7 SpringApplication.run(App.class、args); 8} 9}
EnableDiscoveryClientアノテーションの追加に注意してください
5.サービスコントローラーのクラスコードを記述します
1 @RestController 2 public class HelloController { 3 4 @RequestMapping( "/ hello") 5 public String hello(@RequestParam String name){ 6 return "hello" + name + "、はじめまして!"; 7} 8}
ここでサービスプロバイダーが完了し、プログラムを開始します。エラーは報告されません。登録センターのページを更新すると、アプリケーションに現在登録されているサービスが表示されます。
サービスの発信者
1.新しいMavenプロジェクトを作成します
2.pomファイルにも以前と同じコンテンツを導入します。
3.application.propertiesを記述します
1 spring.application.name = spring-cloud-consumer 2 server.port = 9001 3 eureka.client.serviceUrl.defaultZone = http:// localhost:8000 / eureka /
1行目は現在のサービスにも名前を付け、2行目はポートを設定し、3行目はレジストリURLを設定します。
4.スタートアップコードを書く
1 @SpringBootApplication 2 @EnableDiscoveryClient 3 @EnableFeignClients 4 public class App 5 { 6 public static void main(String [] args) 7 { 8 SpringApplication.run(App.class、args); 9} 10}
このスタートアップクラスには、サービスプロバイダーよりも1つ多いEnableFeignClientsアノテーションがあることに注意してください。このアノテーションの機能は、リモート呼び出しに対してfeignを有効にすることです。
5.偽の呼び出しの実装を書く
1 @FeignClient(name = "spring-cloud-producer") 2 public interface HelloRemote { 3 @RequestMapping(value = "/ hello") 4 public String hello(@RequestParam(value = "name")String name); 5}
これはインターフェースであることに注意してください。上記の注釈パラメーター名は、現在呼び出しているサービスプロバイダーの名前を指定するためのものです。また、メソッドのパラメーター名がサービスプロバイダーのパラメーターと一致していることにも注意してください
6.サービス呼び出し元コントローラークラスを記述します
1 @RestController 2 public class ConsumerController { 3 4 @Autowired 5 HelloRemote HelloRemote; 6 7 @RequestMapping( "/ hello / {name}") 8 public String hello(@PathVariable( "name")String name){ 9 return HelloRemote.hello(name); 10} 11 12}
ローカルのhelloメソッドを呼び出してから、HelloRemoteインターフェイスのメソッドを呼び出すことにより、HelloRemoteインターフェイスを現在のクラスに導入します。
プログラムを起動すると、エラーは報告されません。
この時点でレジストリを更新すると、2つのサービスが登録されていることがわかります。
テスト検証
ブラウザを開き、次のように入力します:http:// localhost:9001 / hello / JJ
上の図に示すように、結果は正常に返され、サービス呼び出しとプロバイダー全体に問題がないことを示しています。!!