PageHelperAutoConfiguration:BeanCreationException:Error creating bean with name PageHelperAutoConfig

  今天引入 PageHelper 插件时,启动报这个异常。找了好多文章都是说以下三个因素,我再添一个自己的情况:

  • PageHelper.jar 版本与 MyBatis 版本不兼容,将 PageHelper 版本调高就行。
  • 引入依赖有误。如果引入的是
<dependency>
    <groupId>com.github.pagehelper</groupId>
    <artifactId>pagehelper-spring-boot-starter</artifactId>
    <version>1.2.10</version>
</dependency> 

  就可以直接使用,因为 spring 会自动配置分页插件,而如果引用的是:

<dependency>
    <groupId>com.github.pagehelper</groupId>
    <artifactId>pagehelper</artifactId>
    <version>4.1.6</version>
</dependency>

  则还需要在启动类中加入分页插件的手动配置:

 @Bean
 PageHelper pageHelper(){
     //分页插件
     PageHelper pageHelper = new PageHelper();
     Properties properties = new Properties();
     properties.setProperty("reasonable", "true");
     properties.setProperty("supportMethodsArguments", "true");
     properties.setProperty("returnPageInfo", "check");
     properties.setProperty("params", "count=countSql");
     pageHelper.setProperties(properties);

     //添加插件
     new SqlSessionFactoryBean().setPlugins(new Interceptor[]{pageHelper});
     return pageHelper;
 }
  • pagehelper 版本不同,所需的配置类也不一样。
    pagehelper 5.0.0 以下版本。使用的是这个类 Pagehelper,我们在项目中可以这样写:
   @Bean(name = "pageHelper")
   public pageHelper pageHelper(){
       pageHelper pageHelper = new pageHelper();
       Properties properties = new Properties();
       /**默认false,设置为true时,会将RowBounds第一个参数offset当成pageNum页码使用*/
       properties.setProperty("offsetAsPageNum","true");
       /**默认false,设置为true时,使用RowBounds分页会进行count查询 */
       properties.setProperty("rowBoundsWithCount","true");
       /** 禁用合理化时,如果pageNum<1或pageNum>pages会返回空数据 */
       properties.setProperty("reasonable","true");
       /** always总是返回PageInfo类型,check检查返回类型是否为PageInfo,none返回Page */
       properties.setProperty("returnPageInfo","check");
       /** 支持通过Mapper接口参数来传递分页参数 */
       properties.setProperty("supportMethodsArguments","false");
       /**  配置数据库的方言  */
       properties.setProperty("dialect","oracle");
       pageHelper.setProperties(properties);
       return pageHelper;
   }

  5.0.0以上的版本则使用的是 PageInterceptor,就需要改成下面这样:

    @Bean(name = "pageHelper")
    public PageInterceptor pageHelper(){
        PageInterceptor pageHelper = new PageInterceptor();
        Properties properties = new Properties();
        /**默认false,设置为true时,会将RowBounds第一个参数offset当成pageNum页码使用*/
        properties.setProperty("offsetAsPageNum","true");
        /**默认false,设置为true时,使用RowBounds分页会进行count查询 */
        properties.setProperty("rowBoundsWithCount","true");
        /** 禁用合理化时,如果pageNum<1或pageNum>pages会返回空数据 */
        properties.setProperty("reasonable","true");
        /** always总是返回PageInfo类型,check检查返回类型是否为PageInfo,none返回Page */
        properties.setProperty("returnPageInfo","check");
        /** 支持通过Mapper接口参数来传递分页参数 */
        properties.setProperty("supportMethodsArguments","false");
        /**  配置数据库的方言  */
        properties.setProperty("helperDialect","oracle");
        pageHelper.setProperties(properties);
        return pageHelper;
    }
  • 我的情况是:A 模块使用的是:
<dependency>
   <groupId>com.github.pagehelper</groupId>
   <artifactId>pagehelper</artifactId>
   <version>4.1.6</version>
</dependency>

  而 B 模块使用的是:

<dependency>
    <groupId>com.github.pagehelper</groupId>
    <artifactId>pagehelper-spring-boot-starter</artifactId>
    <version>1.2.10</version>
</dependency> 

  A、B 两个模块分别能独立运行,都是已开发完成的产品。但现在要求我将 A 模块运用到B模块上,即 B 依赖 A,这时就报了这个异常。B 明明是自动配置,为什么会找不到 PageInterceptor,B 单独能正常运行,代表配置正确。为什么依赖 A 后就找不到 PageInterceptor 了。最后打断点发现 B 启动的时候,spring 使用的是 A 中的 PageHelper。用 MavenHelper 分析下依赖关系,果然报冲突。在 MavenHelper 中指定依赖上右键可排除该依赖。或者手动在 B 模块的 pom 文件中 A 模块配置 <dependency> 标签内加入:

<exclusion>
	<artifactId>pagehelper</artifactId>
	<groupId>com.github.pagehelper</groupId>
</exclusion>

  当然,最好的办法是删除其中一个依赖,全部使用同一种方式。

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
BeanCreationException是Spring框架中的一个异常,表示在创建Bean时出现了错误。该异常通常包含详细的错误信息,能够帮助我们找到问题所在。在你提供的引用中,有两个例子都涉及到了BeanCreationException异常。 引用中的BeanCreationException是在创建名为'transactionManager'的bean时发生的错误,错误信息中提到文件路径[F:\IdeaProjects\ssmDemo1\out\artifacts\ssmDemo1_war_exp]。根据这些信息,我们可以初步判断问题可能是文件路径或配置的错误导致的。 引用中的BeanCreationException是在配置Redis的时候发生的错误,错误信息中提到无法配置Redis的keyspace notifications。根据错误信息提供的链接,我们可以点击链接查看更详细的解决方法。 综上所述,BeanCreationException是在创建Bean时出现的错误,在你提供的例子中有两个不同的情况。一个是文件路径或配置的错误,另一个是配置Redis时的错误。具体解决方法需要根据具体的错误信息和配置来确定。<span class="em">1</span><span class="em">2</span><span class="em">3</span> #### 引用[.reference_title] - *1* [ssmDemo1:SSM框架整合练习项目 来自《2017-7黑马49期web》](https://download.csdn.net/download/weixin_42097914/18258169)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 50%"] - *2* *3* [BeanCreationException: Error creating bean with name 'enableRedisKeyspaceNotificationsInitializer'](https://blog.csdn.net/oDianZi1234567/article/details/103774172)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 50%"] [ .reference_list ]
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值