Heim  >  Artikel  >  Java  >  Finchley-Versionsanalyse basierend auf Spring Boot 2.x

Finchley-Versionsanalyse basierend auf Spring Boot 2.x

php是最好的语言
php是最好的语言Original
2018-08-09 17:27:111976Durchsuche

Spring Boot 2.x wird schon seit langem veröffentlicht, und jetzt hat Spring Cloud auch die Finchley-Version basierend auf Spring Boot 2.x veröffentlicht. Lassen Sie uns nun ein allgemeines Framework-Upgrade für das Projekt durchführen.

Vor dem Upgrade=> Nach dem Upgrade

Spring Boot 1.5.x =>Spring Boot 2.0.2

Spring Cloud Edgware SR4 => ; Spring Cloud Finchley.RELEASE

Eureka Server

Eureka Server-Abhängigkeitsupdate

Vor dem Upgrade:

<dependency>
    <groupId>org.springframework.cloud</groupId>
    <artifactId>spring-cloud-starter-eureka-server</artifactId>
</dependency>

Nach dem Upgrade:

<dependency>
    <groupId>org.springframework.cloud</groupId>
    <artifactId>spring-cloud-starter-netflix-eureka-server</artifactId>
</dependency>

Eureka-Client

Da das Konfigurationscenter als Dienst im Registrierungscenter registriert werden muss, muss der Eureka-Client aktualisiert werden und andere Abhängigkeiten haben sich nicht geändert.

Aktualisierung der Eureka-Client-Abhängigkeit

Vor dem Upgrade:

<dependency>
    <groupId>org.springframework.cloud</groupId>
    <artifactId>spring-cloud-starter-eureka</artifactId>
</dependency>

Nach dem Upgrade:

<dependency>
    <groupId>org.springframework.cloud</groupId>
    <artifactId>spring-cloud-starter-netflix-eureka-client</artifactId>
</dependency>

Spring Cloud

Die Client-Instanz-IP im Registrierungscenter wird falsch angezeigt

Weil sich die IP-Adresskonfiguration des Spring Cloud-Dienst-Clients geändert hat.

Vor dem Upgrade:

${spring.cloud.client.ipAddress}

Nach dem Upgrade:

${spring.cloud.client.ip-address}

Spring Security

Allgemeine Registrierungszentren und Konfigurationszentren verwenden Sicherheitsverschlüsselung, sodass Sie sich darauf verlassen können spring-boot-starter-security Komponenten, nach dem Upgrade gibt es zwei Probleme.

1. Der Benutzername und das Passwort können nicht angemeldet werden

Da die Parameter von Spring Security geändert wurden.

Vor dem Upgrade:

security:
  user:
    name:
    password:

Nach dem Upgrade:

spring:
  security:
     user:
       name: 
       password:

2. Es gibt keine registrierte Instanz im Registrierungscenter

Wie Wie in der Abbildung dargestellt, können sich die beiden Registrierungszentren ohne registrierte Instanz nicht gegenseitig registrieren.

Finchley-Versionsanalyse basierend auf Spring Boot 2.x

Da Spring Security standardmäßig alle CSRF-Angriffsabwehrmaßnahmen aktiviert, muss die Verteidigung von /eureka deaktiviert werden.

Ignorierkonfiguration in der Anwendungseintragsklasse hinzufügen:

@EnableWebSecurity
static class WebSecurityConfig extends WebSecurityConfigurerAdapter {

    @Override
    protected void configure(HttpSecurity http) throws Exception {
        http.csrf().ignoringAntMatchers("/eureka/**");
        super.configure(http);
    }
}

3. Das Konfigurationscenter kann nicht verschlüsseln oder entschlüsseln

Nach dem Upgrade wurde festgestellt, dass Das Zugriffskonfigurationscenter kann nicht gelesen werden und die Konfigurationsinformationen können nicht verschlüsselt oder entschlüsselt werden. Der Link zum Zugriff auf das Konfigurationscenter führt direkt zur Anmeldeseite.

Finchley-Versionsanalyse basierend auf Spring Boot 2.x

Jetzt möchte ich zur vorherigen grundlegenden Authentifizierungsmethode zurückkehren. Ich habe den Quellcode gefunden und festgestellt, dass er automatisch so konfiguriert ist, dass er zur Anmeldeseite springt .

Quellcode für die automatische Konfiguration:
org.springframework.security.config.annotation.web.configuration.WebSecurityConfigurerAdapter#configure(org.springframework.security.config.annotation.web.builders.HttpSecurity)
Nach dem Umschreiben von
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();
    }

}

beendet tatsächlich formLogin() und kehrt zur vorherigen grundlegenden Authentifizierungsmethode zurück, wie in der Abbildung unten gezeigt.

Finchley-Versionsanalyse basierend auf Spring Boot 2.x

Jetzt können wir mit den folgenden Befehlen ver- und wieder entschlüsseln.

Nach der Wiederherstellung der Basisauthentifizierung können die vorherigen Dienste, die eine verschlüsselte Verbindung zum Konfigurationscenter erforderten, wieder normal ausgeführt werden.

Maven

Nach dem Upgrade auf Spring Boot 2.x stellte ich fest, dass das Maven-Startup-Plug-In von Spring Boot nicht einfach zu verwenden ist, hauptsächlich weil das Profil nicht frei gewechselt werden kann.

Vor dem Upgrade:

spring-boot:run -Drun.profiles=profile1

Nach dem Upgrade:

spring-boot:run -Dspring-boot.run.profiles=profile1

Zusammenfassung

Oben sind die Lösungen zusammengefasst, nachdem alle Fallstricke durchgegangen und das Problem tatsächlich gelöst wurden Der Prozess ist weitaus komplizierter. Die Versionsänderungen sind etwas groß. Diesmal wurden die grundlegenden Abhängigkeiten von Spring Cloud sowie das Registrierungscenter (Eureka Server) und das Konfigurationscenter (Config Server) erfolgreich aktualisiert.

Verwandte Empfehlungen:

Verwandte Einführung in den Startvorgang von Spring Boot

Detaillierte Erläuterung des Unit-Tests von Spring Boot

Das obige ist der detaillierte Inhalt vonFinchley-Versionsanalyse basierend auf Spring Boot 2.x. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn