PageHelperAutoConfigration:BenCreationException:Err creating bean with name PageHelper AutoConfig
19200 ワード
今日 導入依存が間違っています。導入された場合は です。 私の場合は、Aモジュールが使っているのは です。
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;
}
<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>
もちろん、一番いい方法は一つの依存を削除して、全部同じ方式を使うことです。