[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'.

在 stackoverflow 上的回答

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.

大意是 MapperScannerConfigurerBeanFactoryPostProcessor 的一個實現,如果配置類中出現 BeanFactoryPostProcessor ,會破壞默認的 post-processing

最簡單的解決方式是使用 @MapperScan 註解代替 MapperScannerConfigurer 的 bean 配置。

@Configuration
@MapperScan(basePackages = "com.example.dao")
public class AppConfig {
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章