title: Spring-boot gets an error when creating custom RestTemplate
body: <p>I have a <code>sendGetREST</code> method to send some <code>URL endpoint</code> and get the response:</p>
  
  <pre><code>@Component
  public class HttpURLCommand {
      private static Logger logger = Logger.getLogger(HttpURLCommand.class);
  
  public String sendGetREST(String soapUrl, Object[] parameters) throws IOException{
          final String SOAP_URL = MessageFormat.format(soapUrl, parameters);
          RestTemplate restTemplate = new RestTemplate();
          ResponseEntity&lt;String&gt; response = restTemplate.getForEntity(SOAP_URL, String.class);
  
      logger.info("status code is: "+response.getStatusCode());
      if(response.getStatusCode().equals(HttpStatus.OK)){
          logger.info("send success");
          return response.getBody();
      }
      else {
          logger.info("send failed");
          return null;
      }
  
    }
  }
  </code></pre>
  
  <p>Which is working well. However, in order to make the timeout time customizable, I have this <code>HTTPConfiguration</code> from this <a href="http://springinpractice.com/2013/10/27/how-to-set-http-request-timeouts-with-spring-resttemplate" rel="noreferrer">tutorial</a>:</p>
  
  <pre><code>@Configuration
  public class HTTPConfiguration {
  
  @Bean
  public RestTemplate restTemplate() {
      return new RestTemplate(clientHttpRequestFactory());
  }
  
  private ClientHttpRequestFactory clientHttpRequestFactory() {
      HttpComponentsClientHttpRequestFactory factory = new HttpComponentsClientHttpRequestFactory();
      factory.setReadTimeout(60000);
      factory.setConnectTimeout(60000);
      return factory;
     }
  }
  </code></pre>
  
  <p><strong>So the class will be calling restTemplate like this:</strong> </p>
  
  <pre><code>@Component
   public class HttpURLCommand {
      private static Logger logger = Logger.getLogger(HttpURLCommand.class);
      @Autowired
      RestTemplate restTemplate;
  
  public String sendGetREST(String soapUrl, Object[] parameters) throws IOException{
          final String SOAP_URL = MessageFormat.format(soapUrl, parameters);
          ResponseEntity&lt;String&gt; response = restTemplate.getForEntity(SOAP_URL, String.class);
  
      logger.info("status code is: "+response.getStatusCode());
      if(response.getStatusCode().equals(HttpStatus.OK)){
          logger.info("send success");
          return response.getBody();
      }
      else {
          logger.info("send failed");
          return null;
      }
  
    }
  }
  </code></pre>
  
  <p>But unfortunately return this following error when builds the <code>spring-boot</code> app:</p>
  
  <pre><code>Caused by: java.lang.NoClassDefFoundError: org/apache/http/protocol/HttpContext
  at com.xl.MbbI.config.HTTPConfiguration.clientHttpRequestFactory(HTTPConfiguration.java:25) ~[classes/:na]
  at com.xl.MbbI.config.HTTPConfiguration.restTemplate(HTTPConfiguration.java:21) ~[classes/:na]
  at com.xl.MbbI.config.HTTPConfiguration$$EnhancerBySpringCGLIB$$191f99f.CGLIB$restTemplate$0(&lt;generated&gt;) ~[na:na]
  at com.xl.MbbI.config.HTTPConfiguration$$EnhancerBySpringCGLIB$$191f99f$$FastClassBySpringCGLIB$$8330ce57.invoke(&lt;generated&gt;) ~[na:na]
  at org.springframework.cglib.proxy.MethodProxy.invokeSuper(MethodProxy.java:228) ~[spring-core-4.3.0.RC2.jar:4.3.0.RC2]
  at org.springframework.context.annotation.ConfigurationClassEnhancer$BeanMethodInterceptor.intercept(ConfigurationClassEnhancer.java:356) ~[spring-context-4.3.0.RC2.jar:4.3.0.RC2]
  at com.xl.MbbI.config.HTTPConfiguration$$EnhancerBySpringCGLIB$$191f99f.restTemplate(&lt;generated&gt;) ~[na:na]
  at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) ~[na:1.7.0_60]
  at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source) ~[na:1.7.0_60]
  at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source) ~[na:1.7.0_60]
  at java.lang.reflect.Method.invoke(Unknown Source) ~[na:1.7.0_60]
  at org.springframework.beans.factory.support.SimpleInstantiationStrategy.instantiate(SimpleInstantiationStrategy.java:162) ~[spring-beans-4.3.0.RC2.jar:4.3.0.RC2]
  ... 24 common frames omitted
  Caused by: java.lang.ClassNotFoundException: org.apache.http.protocol.HttpContext
  at java.net.URLClassLoader$1.run(Unknown Source) ~[na:1.7.0_60]
  at java.net.URLClassLoader$1.run(Unknown Source) ~[na:1.7.0_60]
  at java.security.AccessController.doPrivileged(Native Method) ~[na:1.7.0_60]
  at java.net.URLClassLoader.findClass(Unknown Source) ~[na:1.7.0_60]
  at java.lang.ClassLoader.loadClass(Unknown Source) ~[na:1.7.0_60]
  at sun.misc.Launcher$AppClassLoader.loadClass(Unknown Source) ~[na:1.7.0_60]
  at java.lang.ClassLoader.loadClass(Unknown Source) ~[na:1.7.0_60]
  ... 36 common frames omitted
  </code></pre>
  
  <p>FYI the error is much more than displayed above.</p>
  
  <p><strong>The first line is something like:</strong></p>
  
  <pre><code>org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'restTemplate' defined in class path resource .....
  </code></pre>