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

蹲街弑〆低调 提交于 2020-08-24 07:44:20

问题


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)

}

回答1:


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




回答2:


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.



来源:https://stackoverflow.com/questions/58929368/error-creating-bean-named-conversionservicepostprocessor-when-using-spring-boo

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!