[Spring]Cannot enhance @Configuration bean definition....

在 Spring 中使用基于 Java 的配置时,配置 Mybatis 的 mapperScannerConfigurer 如

@Bean
MapperScannerConfigurer mapperScannerConfigurer() {
    MapperScannerConfigurer mapperScannerConfigurer = new MapperScannerConfigurer();
    mapperScannerConfigurer.setBasePackage("com.example.dao");
    return mapperScannerConfigurer;
}

项目启动时出现警告

Cannot enhance @Configuration bean definition xxxx since its singleton instance has been created too early. The typical cause is a non-static @Bean method with a BeanDefinitionRegistryPostProcessor return type: Consider declaring such methods as static.
I discovered that the MapperScannerConfigurer is a implementation of BeanFactoryPostProcessor. Having a BeanFactoryPostProcessor in a @Configuration class breaks the default post-processing of that @Configuration class.

大意是 MapperScannerConfigurer 是 BeanFactoryPostProcessor 的一个实现,如果配置类中出现 BeanFactoryPostProcessor ,会破坏默认的 post-processing 。

最简单的解决方式是使用 @MapperScan 注解代替 MapperScannerConfigurer 的 bean 配置。 如

@Configuration
@MapperScan(basePackages = "com.example.dao")
public class AppConfig {
经验分享 程序员 微信小程序 职场和发展