如何使用Spring Boot指定BeanNamingStrategy?

时间:2015-10-12 11:00:49

标签: java spring spring-boot

我想在使用Spring Boot配置应用程序时指定自定义BeanNamingStrategy。默认情况下,Spring Boot使用的MethodNameStrategyBeanNamingStrategy

我想这样做的原因是因为我有抽象的父类,我的消费者将创建它的配置子类。父类中的方法具有彼此相同的名称,因此不会为子类的不同实现进行注册。我的自定义BeanNamingStrategy会将配置类的简单名称附加到某些bean名称。

通常在Spring应用程序中,您可以使用BeanNamingStrategy的{​​{1}}方法传递自定义setBeanNamingStrategy。但是,如果Spring Boot正在创建ApplicationContext,我该怎么做?

2 个答案:

答案 0 :(得分:6)

SpringApplicationBuilder有一个方法beanNameGenerator(),可让您传入自定义生成器。

请参阅Spring Boot参考中的22.3 Fluent builder API,了解如何使用流畅的API。

不幸的是,这对您没有帮助,因为这仅适用于@Component - 样式类注释,而不适用于@Bean方法,其名称are hard coded使用this method

答案 1 :(得分:1)

您还可以在主 Spring Boot 应用程序类上使用 @ComponentScan(nameGenerator = ...) 批注:

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

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