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-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>
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>
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}
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.
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.
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:Nach dem Umschreiben von
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(); } }
beendet tatsächlich formLogin()
und kehrt zur vorherigen grundlegenden Authentifizierungsmethode zurück, wie in der Abbildung unten gezeigt.
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.
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
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!