PageHelperAutoConfigration:BenCreationException:Err creating bean with name PageHelper AutoConfig

19200 ワード

今日PageHelperプラグインを導入すると、起動します。多くの文章を探しましたが、以下の三つの要素を言います。もう一つ自分の状況を追加します。
  • PageHelper.jarバージョンはMyBatisバージョンと互換性がなく、PageHelperバージョンを高調すればいいです。
  • 導入依存が間違っています。導入された場合は
  • です。
    <dependency>
        <groupId>com.github.pagehelpergroupId>
        <artifactId>pagehelper-spring-boot-starterartifactId>
        <version>1.2.10version>
    dependency> 
    
    springは自動的に改ページプラグインを配置するので、もし引用するならば、
    <dependency>
        <groupId>com.github.pagehelpergroupId>
        <artifactId>pagehelperartifactId>
        <version>4.1.6version>
    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以上のバージョンは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.pagehelpergroupId>
       <artifactId>pagehelperartifactId>
       <version>4.1.6version>
    dependency>
    
      でBモジュールが使用しているのは:
    <dependency>
        <groupId>com.github.pagehelpergroupId>
        <artifactId>pagehelper-spring-boot-starterartifactId>
        <version>1.2.10version>
    dependency> 
    
      A、Bの二つのモジュールはそれぞれ独立して運行できます。全部開発済みの製品です。しかし、今はAモジュールをBモジュールに運用するように要求しています。つまりB依存Aはこの異常を報告しました。Bは自動配置なのに、どうしてPageInterceptorが見つからないですか?Bは単独で正常に運行できます。構成が正しいということです。なぜAに依存したらPageInterceptorが見つからないですか?最後にブレークポイントがBの起動を発見した場合、springはAのPageHelperを使用している。MavenHelperで依存関係を分析したら、やはり衝突を報告します。MavenHelperにおいて、依存右キーを指定することは、依存を除外することができる。またはBモジュールのpomファイルに手動でAモジュール構成タグ内に追加されます。
    <exclusion>
    	<artifactId>pagehelperartifactId>
    	<groupId>com.github.pagehelpergroupId>
    exclusion>
    
    もちろん、一番いい方法は一つの依存を削除して、全部同じ方式を使うことです。