ホームページ > Java > &#&チュートリアル > Spring Boot 2.x に基づく Finchley のバージョン分析

Spring Boot 2.x に基づく Finchley のバージョン分析

php是最好的语言
リリース: 2018-08-09 17:27:11
オリジナル
2002 人が閲覧しました

Spring Boot 2.x は長い間リリースされてきましたが、現在 Spring Cloud も Spring Boot 2.x に基づいた Finchley バージョンをリリースしています。次に、プロジェクトの全体的なフレームワークのアップグレードを行ってみましょう。

アップグレード前 => アップグレード後

Spring Boot 1.5.x => Spring Boot 2.0.2

Spring Cloud Edgeware SR4 => Spring Cloud Finchley.RELEASE

Eureka Server

Eureka Serverの依存関係の更新

アップグレード前:

<dependency>
    <groupId>org.springframework.cloud</groupId>
    <artifactId>spring-cloud-starter-eureka-server</artifactId>
</dependency>
ログイン後にコピー

アップグレード後:

<dependency>
    <groupId>org.springframework.cloud</groupId>
    <artifactId>spring-cloud-starter-netflix-eureka-server</artifactId>
</dependency>
ログイン後にコピー

Eureka Client

構成センターは登録センターにサービスとして登録する必要があるため、Eureka Client をアップグレードする必要があり、他の依存関係は変更されていません。

Eurekaクライアントの依存関係の更新

アップグレード前:

<dependency>
    <groupId>org.springframework.cloud</groupId>
    <artifactId>spring-cloud-starter-eureka</artifactId>
</dependency>
ログイン後にコピー

アップグレード後:

<dependency>
    <groupId>org.springframework.cloud</groupId>
    <artifactId>spring-cloud-starter-netflix-eureka-client</artifactId>
</dependency>
ログイン後にコピー

Spring Cloud

Spring CloudがサービスクライアントIPアドレスを取得するため、登録センターのクライアントインスタンスIPが正しくありません 構成が変更されました。

アップグレード前:

${spring.cloud.client.ipAddress}
ログイン後にコピー

アップグレード後:

${spring.cloud.client.ip-address}
ログイン後にコピー

Spring Security

一般登録センターと構成センターはセキュリティ暗号化を使用し、spring-boot-starter-security コンポーネントに依存します。アップグレード 質問が 2 つあります。

1. Spring Securityのパラメータが変更されているため、ユーザー名とパスワードがログインできませんspring-boot-starter-security 组件,升级后有几下两个问题。

1、用户名和密码无法登录

因为 Spring Security 的参数进行了变更。

升级前:

security:
  user:
    name:
    password:
ログイン後にコピー

升级后:

spring:
  security:
     user:
       name: 
       password:
ログイン後にコピー

2、注册中心没有注册实例

如图所示,没有注册实例,两个注册中心无法互相注册。

Spring Boot 2.x に基づく Finchley のバージョン分析

因为 Spring Security 默认开启了所有 CSRF 攻击防御,需要禁用 /eureka 的防御。

在 Application 入口类增加忽略配置:

@EnableWebSecurity
static class WebSecurityConfig extends WebSecurityConfigurerAdapter {

    @Override
    protected void configure(HttpSecurity http) throws Exception {
        http.csrf().ignoringAntMatchers("/eureka/**");
        super.configure(http);
    }
}
ログイン後にコピー

3、配置中心无法加解密

升级后发现访问配置中心无法读取到配置,也无法加解密配置信息,访问配置中心链接直接跳转到了登录页面。

Spring Boot 2.x に基づく Finchley のバージョン分析

现在想变回之前的 basic auth 认证方式,找源码发现是自动配置跳到了登录页面,现在重写一下。

自动配置源码:
org.springframework.security.config.annotation.web.configuration.WebSecurityConfigurerAdapter#configure(org.springframework.security.config.annotation.web.builders.HttpSecurity)
protected void configure(HttpSecurity http) throws Exception {
    logger.debug("Using default configure(HttpSecurity). If subclassed this will potentially override subclass configure(HttpSecurity).");

    http
        .authorizeRequests()
            .anyRequest().authenticated()
            .and()
        .formLogin().and()
        .httpBasic();
}
ログイン後にコピー

重写之后:

@EnableWebSecurity
static class WebSecurityConfig extends WebSecurityConfigurerAdapter {

    @Override
    protected void configure(HttpSecurity http) throws Exception {
        http.csrf().ignoringAntMatchers("/**").and().authorizeRequests().anyRequest()
                .authenticated().and().httpBasic();
    }

}
ログイン後にコピー

其实就是把 formLogin()

Spring Boot 2.x に基づく Finchley のバージョン分析

アップグレード前:

spring-boot:run -Drun.profiles=profile1
ログイン後にコピー

アップグレード後:

spring-boot:run -Dspring-boot.run.profiles=profile1
ログイン後にコピー

2. 登録センターに登録インスタンスはありません

図に示すように、2 つの登録センターは相互に登録できません。 。

Spring Boot 2.x に基づく Finchley のバージョン分析

Spring Security はデフォルトですべての CSRF 攻撃防御を有効にするため、/eureka の防御を無効にする必要があります。

無視された構成をアプリケーション エントリ クラスに追加します:

rrreee

3. 構成センターは暗号化または復号化できません

アップグレード後、アクセス構成センターが構成を読み取ることができず、設定情報にアクセスすると、設定センターへのリンクが直接ジャンプします。 ログイン ページにアクセスします。

Spring Boot 2.x に基づく Finchley のバージョン分析

ここで、以前の基本的な認証方法に戻したいと思います。ソース コードを見つけたところ、自動的に設定されてログイン ページに移動することが分かりました。

自動構成ソース コード:
org.springframework.security.config.annotation.web.configuration.WebSecurityConfigurerAdapter#configure(org.springframework.security.config.annotation.web.builders.HttpSecurity)
rrreee書き換え後: 🎜rrreee🎜 実際には、以下の図に示すように、formLogin() が強制終了され、以前の Basic auth 認証メソッドに戻ります。 🎜🎜🎜🎜🎜これで、次のコマンドを使用して再度暗号化と復号化を行うことができます。 🎜🎜基本認証を復元すると、構成センターへの暗号化された接続が必要だった以前のサービスが再び通常どおり実行できるようになります。 🎜🎜Maven🎜🎜 Spring Boot 2.x にアップグレードした後、Spring Boot の Maven 起動プラグインは使いにくいことがわかりました。主な理由は、プロファイルを自由に切り替えることができないためです。 🎜🎜アップグレード前: 🎜rrreee🎜 アップグレード後: 🎜rrreee🎜概要🎜🎜 上記は、すべての落とし穴を通過した後にまとめられた解決策です。実際の問題を解決するプロセスはさらに複雑です。今回のバージョン変更は少し大きく、Spring Cloud の基本的な依存関係と、登録センター (Eureka Server) と構成センター (Config Server) が正常にアップグレードされました。 🎜🎜関連する推奨事項: 🎜🎜🎜 Spring Boot の起動プロセスの関連紹介🎜🎜🎜🎜 Spring Boot の単体テストの詳細な説明🎜🎜

以上がSpring Boot 2.x に基づく Finchley のバージョン分析の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

関連ラベル:
ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート