1.CORS(跨域资源分享)产生的权限问题,并给出Spring Security处理Preflight的方法
非简单请求在发送真正的请求前会发送一次Preflight Request,接收一个Preflight Response
解决办法: requestMatchers(CorsUtils::isPreFlightRequest).permitAll()的作用是将PreflightRequest不做拦截。
2.集成swagger2报错:java.lang.NoSuchMethodError: com.google.common.XXX
由于swagger依赖的jar包guava和项目中其他依赖产生的冲突。
解决办法:去掉冲突或者添加统一的guava。比如去掉mybatis的gennerator。或者guava15.0 添加到 pom.xml 中
3.swagger2的页面报错:Unable to infer base url...
和spring-security配置有关
解决办法:.antMatchers("/v2/api-docs", "/configuration/ui", "/swagger-resources", "/configuration/security", "/swagger-ui.html", "/webjars/**","/swagger-resources/configuration/ui","/swagger-ui.html").permitAll()
4.spring-boot转成war后,,访问404,也不报错
解决办法:在启动类application中继承 SpringBootServletInitializer
并且实现以下方法
@Override
protected SpringApplicationBuilder configure(SpringApplicationBuilder application) {
return application.sources(TesttomcatApplication.class);
}
5.问题描述:Caused by: javax.management.InstanceAlreadyExistsException: com.alibaba.druid.pool:name=primaryDataSource,type=DruidDataSource
之前以为是Druid的问题,后面发现是spring注册MBean的问题,原因很简单:同一个domain里面的MBean要求name唯一。因此我们分别把不同的应用放到不同的doman问题便可以解决。在每一个SpringBoot应用的application.properties
中添加如下语句:
spring.jmx.default-domain=你随便写一个非同名的domain