看到這個提示bug,大概就明白是分頁插件進行了2次注入原因導致的。所以分析項目內爲什麼會出現2次分頁相關的對象進行2次注入導致的。全局搜索相關注入配置發現了下面的代碼:
@PostConstruct
public void addPageInterceptor() {
......
PageInterceptor interceptor = new PageInterceptor();
Properties properties = new Properties();
properties.putAll(this.pageHelperProperties());
interceptor.setProperties(properties);
......
}
這段代碼你就會發現進行注入了一次PageInterceptor對象,但是瞭解大概分頁注入方式的同學都知道,mybatis分頁組件依賴jar包內已經進行注入過PageInterceptor對象了,源代碼如下:
public class PageHelperAutoConfiguration implements EnvironmentAware {
@Autowired
private List<SqlSessionFactory> sqlSessionFactoryList;
@Autowired
private PageHelperProperties pageHelperProperties;
private RelaxedPropertyResolver resolver;
public PageHelperAutoConfiguration() {
}
public void setEnvironment(Environment environment) {
this.resolver = new RelaxedPropertyResolver(environment, "pagehelper.");
}
@PostConstruct
public void addPageInterceptor() {
PageInterceptor interceptor = new PageInterceptor();
Properties properties = this.pageHelperProperties.getProperties();
Map<String, Object> subProperties = this.resolver.getSubProperties("");
Iterator var4 = subProperties.keySet().iterator();
....
}
所以去掉相關的注入即可解決報錯現象。但是可能碰到相關問題的同學並不全是因爲簡單的PageInterceptor注入2次導致的bug出現。小編此次碰到的是同組開發人員是想要添加自定義的mybatis的攔截器:
for (Object sqlSessionObject : this.sqlSessionFactoryList) {
SqlSessionFactory sqlSessionFactory = (SqlSessionFactory) sqlSessionObject;
// permissionInterceptor自定義的攔截器
sqlSessionFactory.getConfiguration().addInterceptor(permissionInterceptor);
}
所以很簡單的修改方式,就是不需要再次注入PageInterceptor,tomcat啓動,spring已經幫助我們進行自動注入相關分頁組件,我們只需要通過自動裝配註解,裝配好SqlsessionFactory,然後注入到相應的Interceptor即可:
@Resource
private List<SqlSessionFactory> sqlSessionFactoryList;
@PostConstruct
public void addPageInterceptor() {
//數據權限攔截器
PermissionInterceptor PermissionInterceptor = new PermissionInterceptor();
for (Object sqlSessionObject : this.sqlSessionFactoryList) {
SqlSessionFactory sqlSessionFactory = (SqlSessionFactory) sqlSessionObject;
sqlSessionFactory.getConfiguration().addInterceptor(permissionInterceptor);
}
}
歡迎各位評論,一起進步。