Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Error creating bean named `conversionServicePostProcessor` when using spring-boot-admin-server

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)

}
like image 744
Prashant Avatar asked Nov 19 '19 08:11

Prashant


2 Answers

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

like image 103
Sergey Avatar answered Oct 05 '22 00:10

Sergey


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.

like image 43
unixfan Avatar answered Oct 04 '22 22:10

unixfan