Ich starte meine Spring Boot-Anwendung von SpringBootServletInitializer-Klasse, weil ich es als WAR-Datei bereitstellen möchten. Ich weiß nicht, wie ich Sicherheit aktivieren kann.Wie konfiguriert man Spring Boot als .war-Datei zusammen mit Sicherheit?
public class ApplicationInitializer extends SpringBootServletInitializer {
private static final Object[] configurations = {
SecurityConfiguration.class,
ApplicationInitializer.class
};
@Override
protected SpringApplicationBuilder configure(SpringApplicationBuilder application) {
return application.sources(configurations);
}
}
wo SecurityConfiguration wie folgt lautet:
@Configuration
@EnableWebSecurity
public class SecurityConfiguration extends WebSecurityConfigurerAdapter{
@Override
protected void configure(AuthenticationManagerBuilder auth) throws Exception {
/******/
}
@Override
protected void configure(HttpSecurity http) throws Exception {
/******/
}
}
Mit dieser Konfiguration ich AlreadyBuiltException:
'springSecurityFilterChain' threw exception; nested exception is org.springframework.security.config.annotation.AlreadyBuiltException: This object has already been built
Versuchen zu konfigurieren, dass nur die aktuelle Klasse in 'application.sources()' Beispiel laden 'return application.sources (ApplicationInitializer.class);' 'SecurityConfiguration' wird durchsucht, wenn die Anwendung korrekt strukturiert ist. –
SecurityConfiguration befindet sich im selben Paket wie ApplicationInitializer. Aber wenn ich nur ApplicationInitializer lade, befindet sich die Spring-Sicherheit immer noch im Standardmodus (Basis-Auth mit einem Benutzer und zufällig generiertem Passwort in der Konsole) –
Haben Sie '@ SpringBootApplication' auf' ApplicationInitializer'? –