出现问题原因:在开发过程中把一些公关的东西封装成一个jar包,多个项目共同使用这个jar包(这个jar中包含数据处理的代码)。然而,有些项目没有用到数据处理,没有配置数据源。所以,在启动的时候会报错。
解决方案:引入 @EnableAutoConfiguration(exclude = {DataSourceAutoConfiguration.class})
问题描述:
在使用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());