簡體   English   中英

如何使用 Spring Boot 指定 BeanNamingStrategy?

[英]How do I specify a BeanNamingStrategy with Spring Boot?

我想在使用 Spring Boot 配置我的應用程序時指定一個自定義BeanNamingStrategy 默認情況下,Spring Boot 使用MethodNameStrategy ,它是一個BeanNamingStrategy

我想這樣做的原因是因為我有抽象的父類,我的消費者將為其創建配置子類。 父類中的方法彼此具有相同的名稱,因此不會為子類的不同實現注冊。 我的自定義BeanNamingStrategy會將配置類的簡單名稱附加到某些 bean 名稱。

通常在 Spring 應用程序中,您可以使用ApplicationContextsetBeanNamingStrategy方法傳遞自定義BeanNamingStrategy 但是,如果 Spring Boot 正在創建ApplicationContext ,我該怎么做?

SpringApplicationBuilder 有一個方法beanNameGenerator()可以讓你傳入一個自定義生成器。

有關如何使用 fluent API,請參閱 Spring Boot 參考中的22.3 Fluent builder API。


不幸的是,這對您沒有幫助,因為這僅適用於@Component樣式的類注釋,而不適用於使用此方法對其名稱進行硬編碼的@Bean 方法

您還可以在主 Spring Boot 應用程序類上使用@ComponentScan(nameGenerator = ...)注釋:

@SpringBootApplication
@ComponentScan(nameGenerator = FullyQualifiedAnnotationBeanNameGenerator.class)
public class MyApplication {

    public static void main(String[] args) {
        SpringApplication.run(MyApplication.class, args);
    }
}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM