SpringBoot整合Swagger-UI 遇到的问题
1.问题一:版本不兼容问题
解决办法:
(1)在.yml文件中改变匹配策略
spring:
mvc:
path match:
matching-strategy: ANT_PATH_MATCHER
(2)在spring中注入bean,放在swagger.config中
@Bean
public static BeanPostProcessor springfoxHandlerProviderBeanPostProcessor() {
return new BeanPostProcessor() {
@Override
public Object postProcessAfterInitialization(Object bean, String beanName) throws BeansException {
if (bean instanceof WebMvcRequestHandlerProvider || bean instanceof WebFluxRequestHandlerProvider) {
customizeSpringfoxHandlerMappings(getHandlerMappings(bean));
}
return bean;
}
private <T extends RequestMappingInfoHandlerMapping> void customizeSpringfoxHandlerMappings(List<T> mappings) {
List<T> copy = mappings.stream()
.filter(mapping -> mapping.getPatternParser() == null)
.collect(Collectors.toList());
mappings.clear();
mappings.addAll(copy);
}
@SuppressWarnings("unchecked")
private List<RequestMappingInfoHandlerMapping> getHandlerMappings(Object bean) {
try {
Field field = ReflectionUtils.findField(bean.getClass(), "handlerMappings");
field.setAccessible(true);
return (List<RequestMappingInfoHandlerMapping>) field.get(bean);
} catch (IllegalArgumentException | IllegalAccessException e) {
throw new IllegalStateException(e);
}
}
};
}
2. 问题二:
Caused by: org.springframework.beans.factory.NoSuchBeanDefinitionException: No qualifying bean of type ‘top.codingmore.mpg.mapper.Admin_role_relationMapper’ available: expected at least 1 bean which qualifies as autowire candidate
1.错误原因:mapper类没有成功注入(没有被扫描)
2.解决办法:在启动类上加上注解:@MapperScan({}), 括号内是mapper包所在的位置
3.问题三
Failed to configure a DataSource: ‘url’ attribute is not specified and no embedded datasource could be configured.
原因:yml文件中没有配置数据源,配置一下数据源即可以解决。
datasource:
driver-class-name: com.mysql.cj.jdbc.Driver
url: jdbc:mysql://localhost:3306/数据库名称?useUnicode=true&characterEncoding=utf-8&serverTimezone=Asia/Shanghai
username: root
password: 123456