在使用SpringBoot的时候遇到的一些小坑

引入了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());