私の連絡先情報
郵便メール:
2024-07-12
한어Русский языкEnglishFrançaisIndonesianSanskrit日本語DeutschPortuguêsΕλληνικάespañolItalianoSuomalainenLatina
このセクションの主な内容は、ゲートウェイ モジュールの作成、Nacos へのゲートウェイの登録、およびテスト用のルーティングの構成です。
プロジェクトを右クリックしますNew->Module
、新しいモジュールを作成します、モジュール名 gulimall-gateway
。
さまざまな情報を入力します。
「ゲートウェイの依存関係」を選択します。
「作成」をクリックしてモジュールを作成します。
<dependency>
<groupId>com.atguigu.gulimall</groupId>
<artifactId>gulimall-common</artifactId>
<version>0.0.1-SNAPSHOT</version>
</dependency>
ゲートウェイ サービスは登録センターと構成センターも使用する必要があるため、共通モジュールに依存して取得される、関連するパッケージの依存関係が必要です。
スタートアップクラスにアノテーションを追加することで、サービス起動後に登録センターに登録できるようになります。
@EnableDiscoveryClient
リソース ディレクトリに 3 つの新しい構成ファイルを作成します。
① アプリケーション.プロパティ
Nacos 登録センター関連情報を設定します。
server.port=80
spring.cloud.nacos.discovery.server-addr=localhost:8848
spring.application.name=gulimall-gateway
② bootstrap.properties
Nacos 構成センターの関連情報を構成します。ゲートウェイ モジュールのすべての構成ファイルは、事前に Nacos 上に作成されている必要があることに注意してください。
spring.application.name=gulimall-gateway
spring.cloud.nacos.config.server-addr=localhost:8848
spring.cloud.nacos.config.namespace=405d2201-d62b-4203-80c8-800e9387ad40
③ アプリケーション.yml
このファイルに、ゲートウェイのルーティング構成を記述します。詳細については、次のセクションを参照してください。
このパートでは、ゲートウェイの構成方法を実践するために、2 つの実際の要件を例として取り上げます。
ゲートウェイの役割は、ゲートウェイによって設定されたルールに従って、受信したリクエストを対応するサービスに転送することです。
デモンストレーションの便宜上、このような要求があると仮定して、次の URL をブラウザに入力すると、要求は Baidu に転送されます。
http://localhost/?url=baidu
ブラウザに次の URL を入力すると、リクエストが Tencent に転送されます。
http://localhost/?url=qq
設定ファイルの書き方は?
ウェアハウス Spring クラウド ゲートウェイ公式ドキュメント、その形式を参照してください。
URL のクエリ条件に基づいて対応する転送を実行する必要があるため、クエリに関するゲートウェイのアサーション構成ドキュメントを見つけます。
設定については、このドキュメントを参照してください。
アプリケーション.yml
spring:
cloud:
gateway:
routes:
- id: baidu_test
uri: https://www.baidu.com
predicates:
- Query=url,baidu
- id: qq_test
uri: https://www.qq.com
predicates:
- Query=url,qq
ここではクエリパラメータを使用するために 2 つのルーティングルールが定義されていますurl
この値により、リクエストの転送先となるターゲット URI が決まります。
spring.cloud.gateway.routes
: Spring Cloud Gateway のルーティング設定リストです。
それぞれroutes
項目はルーティング ルールを定義します。
id
: 各ルーティング ルールには、ルートを識別および管理するための一意の ID が必要です。
uri
: ルーティング ルールが一致すると、リクエストはこの URI アドレスに転送されます。ここhttps://www.baidu.com
そしてhttps://www.qq.com
Baidu と Tencent の Web サイトの URL がそれぞれ指定されています。
predicates
: これは、このルーティング ルールを適用するかどうかを決定するために使用されるルーティング ルールのアサーション リストです。アサーションは、リクエストのメタデータに基づいて評価される式です。
Query=url,baidu
: このアサーションは、リクエストにurl
クエリパラメータであり、その値は以下に等しいbaidu
、その後、このルーティング ルールがトリガーされ、リクエストが転送されます。https://www.baidu.com
。
Query=url,qq
: 同様に、クエリパラメータの場合url
値はqq
、リクエストはに転送されますhttps://www.qq.com
。
このようにして、アプリケーションが次のようなメッセージを受信したときに、url=baidu
またはurl=qq
クエリパラメータをリクエストすると、Spring Cloud Gateway は上記のルールに従って、対応する Web サイトにリクエストをプロキシします。
ブラウザで次のアドレスにアクセスしてください。
http://localhost/?url=baidu
上記のインターフェイスがある場合、ゲートウェイ サービスの構成とルーティングの構成が正常であることを意味します。
Gateway の起動中にエラーが報告されます。
Error starting ApplicationContext. To display the conditions report re-run your application with 'debug' enabled.
2024-07-11 15:57:32.988 ERROR 27224 --- [ main] o.s.b.d.LoggingFailureAnalysisReporter :
***************************
APPLICATION FAILED TO START
***************************
Description:
Failed to configure a DataSource: 'url' attribute is not specified and no embedded datasource could be configured.
Reason: Failed to determine a suitable driver class
その理由は、Gateway モジュールが common に依存しており、common モジュールが mybatis への依存性を宣言しているためです。mybatis パッケージは起動時にデータベース関連の構成を探しますが、Gateway プロジェクトにはデータベースが必要ないため、関連する構成がありません。 。
解決策は、起動時にデータベース関連の構成を検索する必要がないこと、および起動クラスのアノテーションで宣言することで関連するパッケージの依存関係を除外できることをゲートウェイ モジュールに伝えることです。
@SpringBootApplication(exclude = DataSourceAutoConfiguration.class)