11

I was trying to enable Spring boot admin server for my application. The default settings work perfectly fine but when I attempt to enable security, I am getting following error:


APPLICATION FAILED TO START


Description:

The bean 'conversionServicePostProcessor', defined in class path resource [org/springframework/security/config/annotation/web/configuration/WebSecurityConfiguration.class], could not be registered. A bean with that name has already been defined in class path resource [org/springframework/security/config/annotation/web/reactive/WebFluxSecurityConfiguration.class] and overriding is disabled.

Action:

Consider renaming one of the beans or enabling overriding by setting spring.main.allow-bean-definition-overriding=true

Process finished with exit code 1

I am using the latest SNAPSHOT version of spring-boot-admin-starter-server (2.2.0-SNAPSHOT). Here is my security configuration:

@EnableAdminServer
@EnableWebFluxSecurity
@Configuration(proxyBeanMethods = false)
class AdminServerSecurityConfigurations(val adminServerProperties: AdminServerProperties) {

    @Bean
    fun adminServerSecurityWebFilterChain(http: ServerHttpSecurity): SecurityWebFilterChain = http
            // @formatter:off
            .authorizeExchange()
                .pathMatchers("${adminServerProperties.contextPath}/assets/**").permitAll()
                .pathMatchers("${adminServerProperties.contextPath}/login").permitAll()
                .anyExchange().authenticated().and()
            .formLogin().loginPage("${adminServerProperties.contextPath}/login").and()
            .logout().logoutUrl("${adminServerProperties.contextPath}/logout").and()
            .httpBasic().and()
            // @formatter:on
            .csrf().disable()
            .build()


    @Bean
    fun notifyLogger(instanceRepository: InstanceRepository) = LoggingNotifier(instanceRepository)

}
Prashant
  • 4,775
  • 3
  • 28
  • 47

3 Answers3

5

I found a pull request to update the documentation: https://github.com/spring-projects/spring-boot/issues/14069

For Reactive WebSockets, {spring-reference}web-reactive.html#webflux-websocket[Spring WebFlux] offers rich support, which is accessible through the spring-boot-starter-webflux module. See the spring-boot-sample-websocket-reactive sample project to see how WebSockets may be implemented using Spring WebFlux.

it turns out that using webflux and websocket leads to conflicts.

also in this pull request was denied in the resolution of the conflict https://github.com/spring-projects/spring-boot/issues/14810

for reactive websocket see this sample https://www.baeldung.com/spring-5-reactive-websockets

anubhava
  • 761,203
  • 64
  • 569
  • 643
Sergey
  • 66
  • 1
  • 4
4

I had the same issue and was able solve it by adding

spring.main.allow-bean-definition-overriding=true

to my application.properties.

Sounds like a workaround and it was also only necessary if I deployed it as WAR -- as a standalone application the exception never occured.

unixfan
  • 59
  • 2
0

I also faced this error, after Reimport All Mavne Projects(Intellij IDE) it works fine for me. Here my detailed input on this issue here

BoomirajP
  • 329
  • 2
  • 7
  • 14