引入了spring-boot-starter-jdbc但是没有配置数据源
出现问题原因:在开发过程中把一些公关的东西封装成一个jar包,多个项目共同使用这个jar包(这个jar中包含数据处理的代码)。然而,有些项目没有用到数据处理,没有配置数据源。所以,在启动的时候会报错。
解决方案:引入@EnableAutoConfiguration(exclude = {DataSourceAutoConfiguration.class})
使用RestTemplate访问restful服务的异常处理
问题描述:
在使用RestTemplate访问restful接口的时候,如果接口抛出异常,默认情况下捕获的异常不符合自定义的异常规范。
解决:
RestTemplate默认使用的是DefaultResponseErrorHandler
处理异常。如果我们需要定制自己的一处处理,可以编写定制化的处理器:
如:
public class CustomResponseErrorHandler implements ResponseErrorHandler {
private ResponseErrorHandler errorHandler = new DefaultResponseErrorHandler();
@Override
public boolean hasError(ClientHttpResponse response) throws IOException {
return errorHandler.hasError(response);
}
@Override
public void handleError(ClientHttpResponse response) throws IOException {
String theString = IOUtils.toString(response.getBody());
Map<String, String> error = (Map<String, String>) JsonMapper.fromJsonString(theString, Map.class);
String errorCode = error.get("errorCode");
String message = error.get("message");
throw new RemoteCallException(errorCode, message, null);
}
}
然后
RestTemplate restTemplate = new RestTemplate();
restTemplate.setErrorHandler(new CustomResponseErrorHandler());