亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

由于相同的 bean,應用程序無法啟動

由于相同的 bean,應用程序無法啟動

慕雪6442864 2023-06-04 16:58:00
我有一個Spring Webflux應用程序,我試圖從舊模塊加載依賴項(舊模塊在Spring WebMVC框架上)。啟動應用程序時,會拋出此錯誤 -***************************APPLICATION FAILED TO START***************************Description:The bean 'requestMappingHandlerAdapter', defined in class path resource [org/springframework/boot/autoconfigure/web/servlet/WebMvcAutoConfiguration$EnableWebMvcConfiguration.class], could not be registered. A bean with that name has already been defined in class path resource [org/springframework/web/reactive/config/DelegatingWebFluxConfiguration.class] and overriding is disabled.Action:Consider renaming one of the beans or enabling overriding by setting spring.main.allow-bean-definition-overriding=true我想要啟動 webflux 包中的所有 bean,所以我不能設置spring.main.allow-bean-definition-overriding=true.還嘗試在組件掃描時排除 org.springframework.boot 中的所有類 - @ComponentScan(excludeFilters = @Filter(type = FilterType.REGEX, pattern = "org.springframework.boot*")。還嘗試像這樣排除我的 webflux 項目的 pom.xml 中的所有 spring 包 - <exclusion>    <groupId>org.springframework</groupId>    <artifactId>spring-core</artifactId></exclusion>由于我無法將舊的依賴項項目修改為 webflux,是否有任何選項可以使代碼正常工作?
查看完整描述

3 回答

?
qq_遁去的一_1

TA貢獻1725條經驗 獲得超8個贊

在您的 Spring Boot 啟動類中,@EnableAutoConfiguration注釋將自動配置 MVC 部分(WebMvcAutoConfiguration由于相同的 bean 名稱將失敗DelegatingWebFluxConfiguration)


所以嘗試像這樣從自動配置中排除它:


@SpringBootApplication

@EnableAutoConfiguration(exclude = {WebMvcAutoConfiguration.class })

public static void main(String[] args) {

    ...

    SpringApplication.run(MyApp.class, args);

}


查看完整回答
反對 回復 2023-06-04
?
慕蓋茨4494581

TA貢獻1850條經驗 獲得超11個贊

如您的問題描述中所述,在 Spring Webflux 中使用 Spring MVC 的依賴項可能會導致此問題。我通過排除組“org.springframework.boot”同時包含舊的依賴項解決了這個問題。

在 gradle.build 我做了類似下面的事情:

implementation("dependency-using-spring-mvc") {
    exclude(group= "org.springframework.boot")
}


查看完整回答
反對 回復 2023-06-04
?
小怪獸愛吃肉

TA貢獻1852條經驗 獲得超1個贊

如果我理解正確,你在類路徑上有一些與 Web 相關的依賴項,但沒有構建 Web 應用程序,你可以明確地告訴SpringApplication你不需要 Web 應用程序:

app.setWebEnvironment(false);

這是禁用與 Web 相關的自動配置的方法,因為這意味著您不需要知道那些自動配置類是什么,讓 Spring Boot 為您處理。


查看完整回答
反對 回復 2023-06-04
  • 3 回答
  • 0 關注
  • 319 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號