title: spring boot :Injection of autowired dependencies failed;
body: <p>it occured some exceptions when start the springboot application.I don't know what do I miss.</p>
  
  <p>Here is my code :
  this is the entrance:</p>
  
  <pre><code>package com.kindlepocket.web;
  
  import org.springframework.boot.SpringApplication;
  import org.springframework.boot.autoconfigure.SpringBootApplication;
  
  import com.kindlepocket.web.controller.KindlePocketController;
  
  @SpringBootApplication
  public class Application {
  
  public static void main(String[] args) {
      SpringApplication.run(Application.class, args);
  }
  
  }
  </code></pre>
  
  <p>and this is the controller:</p>
  
  <pre><code>package com.kindlepocket.web.controller;
  
  import java.io.IOException;
  import java.io.PrintWriter;
  import java.util.List;
  import java.util.Map;
  
  import javax.servlet.http.HttpServletRequest;
  import javax.servlet.http.HttpServletResponse;
  
  import org.apache.log4j.Logger;
  import org.dom4j.DocumentException;
  import org.springframework.beans.factory.annotation.Autowired;
  import org.springframework.http.HttpStatus;
  import org.springframework.http.ResponseEntity;
  import org.springframework.stereotype.Component;
  import org.springframework.web.bind.annotation.RequestMapping;
  import org.springframework.web.bind.annotation.RequestMethod;
  import org.springframework.web.bind.annotation.RequestParam;
  import org.springframework.web.bind.annotation.ResponseBody;
  
  import com.kindlepocket.web.service.TextBookInfoSearchService;
  import com.kindlepocket.web.util.CheckUtil;
  import com.kindlepocket.web.util.MessageUtil;
  
  @Component
  @RequestMapping("/Weixin")
  public class KindlePocketController {
  
  private static final long serialVersionUID = 1L;
  
  @Autowired
  private TextBookInfoSearchService searchService;// = new TextBookInfoSearchService();
  
  private static Logger logger = Logger.getLogger(KindlePocketController.class);
  
  @RequestMapping(value = "/wx.do", method = RequestMethod.GET)
  @ResponseBody
  public void validate(HttpServletRequest request, HttpServletResponse response,
          @RequestParam("signature") String signature, @RequestParam("timestamp") String timestamp,
          @RequestParam("nonce") String nonce, @RequestParam("echostr") String echostr) {
  
      if (logger.isInfoEnabled()) {
          logger.info("\n***The message got: signature:" + signature + " timestamp:" + timestamp
                  + " nonce:" + nonce + " echostr:" + echostr);
      }
  
      PrintWriter out = null;
      try {
          out = response.getWriter();
      } catch (IOException e) {
          if (logger.isDebugEnabled()) {
              logger.debug("response error");
          }
      }
  
      if (CheckUtil.checkSignature(signature, timestamp, nonce)) {
          out.print(echostr);
          if (logger.isInfoEnabled()) {
              logger.info("validated!");
          }
      }
  }
  
  @RequestMapping(value = "/wx.do", method = RequestMethod.POST)
  @ResponseBody
  public ResponseEntity processMessage(HttpServletRequest request, HttpServletResponse response)
          throws IOException {
  
      request.setCharacterEncoding("UTF-8");
      response.setCharacterEncoding("UTF-8");
  
      /*
       * PrintWriter out = null; try { out = response.getWriter(); } catch (IOException e) { e.printStackTrace(); }
       */
  
      try {
  
          Map&lt;String, String&gt; map = MessageUtil.xmlToMap(request);
          String fromUserName = map.get("FromUserName");
          String toUserName = map.get("ToUserName");
          String msgType = map.get("MsgType");
          String content = map.get("Content");
  
          if (logger.isInfoEnabled()) {
              logger.info("\n***The message got: fromUserName:" + fromUserName + " toUserName:"
                      + toUserName + " msgType:" + msgType + " content:" + content);
          }
  
          String responseMessage = null;
          if (MessageUtil.MESSAGE_TEXT.equals(msgType)) {
  
              switch (content) {
              case "1":
                  responseMessage = MessageUtil.initText(toUserName, fromUserName, MessageUtil.firstMenu());
                  break;
              case "2":
                  responseMessage = MessageUtil
                          .initText(toUserName, fromUserName, MessageUtil.secondMenu());
                  break;
              case "3":
                  responseMessage = MessageUtil.initPicTextMessage(toUserName, fromUserName);
                  break;
              default:
                  // responseMessage = MessageUtil.initText(toUserName, fromUserName, MessageUtil.menuText());
                  List&lt;String&gt; titleList = this.searchService.search(content);
                  responseMessage = MessageUtil.initPicTextMessage(toUserName, fromUserName, titleList);
                  break;
              }
  
              /*
               * TextMessage textMessage = new TextMessage(); textMessage.setFromUserName(toUserName); textMessage.setToUserName(fromUserName); textMessage.setMsgType("text"); textMessage.setCreateTime(new Date().getTime()); textMessage.setContent("the message you sent was : " + content); responseMessage = MessageUtil.textMessageToXml(textMessage); if (logger.isInfoEnabled()) { logger.info("the message responsed is :\n" + responseMessage); }
               */
          } else if (MessageUtil.MESSAGE_EVENT.equals(msgType)) {
              String eventType = map.get("Event");
              if (MessageUtil.MESSAGE_SUBSCRIBE.equals(eventType)) {
                  responseMessage = MessageUtil.initText(toUserName, fromUserName,
                          MessageUtil.welcomeText());
              }
          }
          if (logger.isInfoEnabled()) {
              logger.info("\n***The message responsed: \n" + responseMessage);
          }
          // out.print(responseMessage);
          return ResponseEntity.status(HttpStatus.OK).body(responseMessage);
  
      } catch (DocumentException e) {
          e.printStackTrace();
          return ResponseEntity.status(HttpStatus.INTERNAL_SERVER_ERROR).body(null);
      } /*
         * finally { out.close(); }
         */
  
  }
  
  /*
   * public static void main(String[] args) { SpringApplication.run(KindlePocketController.class, args); }
   */
  
  }
  </code></pre>
  
  <p>and this is the service:</p>
  
  <pre><code>package com.kindlepocket.web.service;
  
  import java.util.ArrayList;
  import java.util.HashMap;
  import java.util.List;
  import java.util.Map;
  
  import org.springframework.beans.factory.annotation.Autowired;
  import org.springframework.stereotype.Component;
  
  @Component
  public class TextBookInfoSearchService {
  
  @Autowired
  private ApiService apiService;
  
  public List&lt;String&gt; search(String content) {
  
      Map&lt;String, Object&gt; contentMap = new HashMap&lt;String, Object&gt;();
      contentMap.put("title", content);
      try {
          String result = this.apiService.doGet("http://127.0.0.1:8081/search/title", contentMap);
          System.out.println("result:" + result);
      } catch (Exception e) {
          e.printStackTrace();
      }
  
      List&lt;String&gt; titles = new ArrayList&lt;String&gt;();
      // test
      titles.add("张学良口述历史");
      titles.add("布谷鸟的呼唤");
      return titles;
  
  }
  
  }
  
  
  package com.kindlepocket.web.service;
  
  import java.io.IOException;
  import java.net.URISyntaxException;
  import java.util.ArrayList;
  import java.util.List;
  import java.util.Map;
  
  import org.apache.http.NameValuePair;
  import org.apache.http.client.ClientProtocolException;
  import org.apache.http.client.config.RequestConfig;
  import org.apache.http.client.entity.UrlEncodedFormEntity;
  import org.apache.http.client.methods.CloseableHttpResponse;
  import org.apache.http.client.methods.HttpDelete;
  import org.apache.http.client.methods.HttpGet;
  import org.apache.http.client.methods.HttpPost;
  import org.apache.http.client.methods.HttpPut;
  import org.apache.http.client.utils.URIBuilder;
  import org.apache.http.entity.ContentType;
  import org.apache.http.entity.StringEntity;
  import org.apache.http.impl.client.CloseableHttpClient;
  import org.apache.http.message.BasicNameValuePair;
  import org.apache.http.util.EntityUtils;
  import org.springframework.beans.factory.annotation.Autowired;
  import org.springframework.stereotype.Component;
  
  import com.kindlepocket.web.pojo.HttpResult;
  
  /**
   * 负责和外部接口对接，发起http请求
   * 
   */
  @Component
  public class ApiService {
  
  @Autowired
  private CloseableHttpClient httpClient;
  
  @Autowired
  private RequestConfig requestConfig;
  
  /**
   * 执行DoGET请求
   * 
   * @param url
   * @return 如果响应是200，返回具体的响应内容，其他响应返回null
   * @throws ClientProtocolException
   * @throws IOException
   */
  public String doGet(String url) throws ClientProtocolException, IOException {
      // 创建http GET请求
      HttpGet httpGet = new HttpGet(url);
      httpGet.setConfig(this.requestConfig);
      CloseableHttpResponse response = null;
      try {
          // 执行请求
          response = httpClient.execute(httpGet);
          // 判断返回状态是否为200
          if (response.getStatusLine().getStatusCode() == 200) {
              return EntityUtils.toString(response.getEntity(), "UTF-8");
          }
      } finally {
          if (response != null) {
              response.close();
          }
      }
      return null;
  }
  
  /**
   * 带有参数的GET请求
   * 
   * @param url
   * @param param
   * @return
   * @throws ClientProtocolException
   * @throws IOException
   * @throws URISyntaxException
   */
  public String doGet(String url, Map&lt;String, Object&gt; param) throws ClientProtocolException, IOException,
          URISyntaxException {
      // 定义请求的参数
      URIBuilder uriBuilder = new URIBuilder(url);
      for (Map.Entry&lt;String, Object&gt; entry : param.entrySet()) {
          uriBuilder.addParameter(entry.getKey(), entry.getValue().toString());
      }
      return doGet(uriBuilder.build().toString());
  }
  
  /**
   * 指定POST请求
   * 
   * @param url
   * @param param 请求参数
   * @return 状态码和请求的body
   * @throws IOException
   */
  public HttpResult doPost(String url, Map&lt;String, Object&gt; param) throws IOException {
      // 创建http POST请求
      HttpPost httpPost = new HttpPost(url);
      httpPost.setConfig(this.requestConfig);
      if (param != null) {
          // 设置post参数
          List&lt;NameValuePair&gt; parameters = new ArrayList&lt;NameValuePair&gt;(0);
          for (Map.Entry&lt;String, Object&gt; entry : param.entrySet()) {
              parameters.add(new BasicNameValuePair(entry.getKey(), entry.getValue().toString()));
          }
          // 构造一个form表单式的实体,并且指定参数的编码为UTF-8
          UrlEncodedFormEntity formEntity = new UrlEncodedFormEntity(parameters, "UTF-8");
          // 将请求实体设置到httpPost对象中
          httpPost.setEntity(formEntity);
      }
  
      CloseableHttpResponse response = null;
      try {
          // 执行请求
          response = httpClient.execute(httpPost);
          if (response.getEntity() != null) {
              return new HttpResult(response.getStatusLine().getStatusCode(), EntityUtils.toString(
                      response.getEntity(), "UTF-8"));
          }
          return new HttpResult(response.getStatusLine().getStatusCode(), null);
      } finally {
          if (response != null) {
              response.close();
          }
      }
  }
  
  /**
   * 执行PUT请求
   * 
   * @param url
   * @param param 请求参数
   * @return 状态码和请求的body
   * @throws IOException
   */
  public HttpResult doPut(String url, Map&lt;String, Object&gt; param) throws IOException {
      // 创建http POST请求
      HttpPut httpPut = new HttpPut(url);
      httpPut.setConfig(this.requestConfig);
      if (param != null) {
          // 设置post参数
          List&lt;NameValuePair&gt; parameters = new ArrayList&lt;NameValuePair&gt;(0);
          for (Map.Entry&lt;String, Object&gt; entry : param.entrySet()) {
              parameters.add(new BasicNameValuePair(entry.getKey(), entry.getValue().toString()));
          }
          // 构造一个form表单式的实体,并且指定参数的编码为UTF-8
          UrlEncodedFormEntity formEntity = new UrlEncodedFormEntity(parameters, "UTF-8");
          // 将请求实体设置到httpPost对象中
          httpPut.setEntity(formEntity);
      }
  
      CloseableHttpResponse response = null;
      try {
          // 执行请求
          response = httpClient.execute(httpPut);
          if (response.getEntity() != null) {
              return new HttpResult(response.getStatusLine().getStatusCode(), EntityUtils.toString(
                      response.getEntity(), "UTF-8"));
          }
          return new HttpResult(response.getStatusLine().getStatusCode(), null);
      } finally {
          if (response != null) {
              response.close();
          }
      }
  }
  
  /**
   * 指定POST请求
   * 
   * @param url
   * @param param 请求参数
   * @return 状态码和请求的body
   * @throws IOException
   */
  public HttpResult doPostJson(String url, String json) throws IOException {
      // 创建http POST请求
      HttpPost httpPost = new HttpPost(url);
      httpPost.setConfig(this.requestConfig);
      if (json != null) {
          // 构造一个字符串的实体
          StringEntity stringEntity = new StringEntity(json, ContentType.APPLICATION_JSON);
          // 将请求实体设置到httpPost对象中
          httpPost.setEntity(stringEntity);
      }
  
      CloseableHttpResponse response = null;
      try {
          // 执行请求
          response = httpClient.execute(httpPost);
          if (response.getEntity() != null) {
              return new HttpResult(response.getStatusLine().getStatusCode(), EntityUtils.toString(
                      response.getEntity(), "UTF-8"));
          }
          return new HttpResult(response.getStatusLine().getStatusCode(), null);
      } finally {
          if (response != null) {
              response.close();
          }
      }
  }
  
  /**
   * 没有参数的post请求
   * 
   * @param url
   * @return
   * @throws IOException
   */
  public HttpResult doPost(String url) throws IOException {
      return doPost(url, null);
  }
  
  /**
   * 执行PUT请求
   * 
   * @param url
   * @return 状态码和请求的body
   * @throws IOException
   */
  public HttpResult doPut(String url) throws IOException {
      return this.doPut(url, null);
  }
  
  /**
   * 执行DELETE请求,通过POST提交，_method指定真正的请求方法
   * 
   * @param url
   * @param param 请求参数
   * @return 状态码和请求的body
   * @throws IOException
   */
  public HttpResult doDelete(String url, Map&lt;String, Object&gt; param) throws IOException {
      param.put("_method", "DELETE");
      return this.doPost(url, param);
  }
  
  /**
   * 执行DELETE请求(真正的DELETE请求)
   * 
   * @param url
   * @return 状态码和请求的body
   * @throws IOException
   */
  public HttpResult doDelete(String url) throws IOException {
      // 创建http DELETE请求
      HttpDelete httpDelete = new HttpDelete(url);
      httpDelete.setConfig(this.requestConfig);
      CloseableHttpResponse response = null;
      try {
          // 执行请求
          response = httpClient.execute(httpDelete);
          if (response.getEntity() != null) {
              return new HttpResult(response.getStatusLine().getStatusCode(), EntityUtils.toString(
                      response.getEntity(), "UTF-8"));
          }
          return new HttpResult(response.getStatusLine().getStatusCode(), null);
      } finally {
          if (response != null) {
              response.close();
          }
      }
  }
  
  }
  </code></pre>
  
  <p>this is pom.xml</p>
  
  <pre><code>&lt;project xmlns="http://maven.apache.org/POM/4.0.0"     xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
  xsi:schemaLocation="http://maven.apache.org/POM/4.0.0      http://maven.apache.org/xsd/maven-4.0.0.xsd"&gt;
  &lt;modelVersion&gt;4.0.0&lt;/modelVersion&gt;
  &lt;groupId&gt;com.kindlepocket.web&lt;/groupId&gt;
  &lt;artifactId&gt;kindlepocket-web&lt;/artifactId&gt;
  &lt;version&gt;0.0.1-SNAPSHOT&lt;/version&gt;
  
  &lt;parent&gt;
      &lt;groupId&gt;org.springframework.boot&lt;/groupId&gt;
      &lt;artifactId&gt;spring-boot-starter-parent&lt;/artifactId&gt;
      &lt;version&gt;1.3.3.RELEASE&lt;/version&gt;
  &lt;/parent&gt;
  &lt;dependencies&gt;
      &lt;dependency&gt;
          &lt;groupId&gt;org.springframework.boot&lt;/groupId&gt;
          &lt;artifactId&gt;spring-boot-starter-web&lt;/artifactId&gt;
      &lt;/dependency&gt;
      &lt;dependency&gt;
          &lt;groupId&gt;org.springframework.boot&lt;/groupId&gt;
          &lt;artifactId&gt;spring-boot-starter-actuator&lt;/artifactId&gt;
      &lt;/dependency&gt;
      &lt;dependency&gt;
          &lt;groupId&gt;dom4j&lt;/groupId&gt;
          &lt;artifactId&gt;dom4j&lt;/artifactId&gt;
          &lt;version&gt;1.6.1&lt;/version&gt;
      &lt;/dependency&gt;
  
      &lt;dependency&gt;
          &lt;groupId&gt;log4j&lt;/groupId&gt;
          &lt;artifactId&gt;log4j&lt;/artifactId&gt;
          &lt;version&gt;1.2.16&lt;/version&gt;
      &lt;/dependency&gt;
  
      &lt;dependency&gt;
          &lt;groupId&gt;xpp3&lt;/groupId&gt;
          &lt;artifactId&gt;xpp3&lt;/artifactId&gt;
          &lt;version&gt;1.1.4c&lt;/version&gt;
      &lt;/dependency&gt;
  
      &lt;dependency&gt;
          &lt;groupId&gt;com.thoughtworks.xstream&lt;/groupId&gt;
          &lt;artifactId&gt;xstream&lt;/artifactId&gt;
          &lt;version&gt;1.3.1&lt;/version&gt;
      &lt;/dependency&gt;
  
      &lt;dependency&gt;
          &lt;groupId&gt;org.apache.solr&lt;/groupId&gt;
          &lt;artifactId&gt;solr-solrj&lt;/artifactId&gt;
          &lt;version&gt;4.10.2&lt;/version&gt;
      &lt;/dependency&gt;
  
      &lt;dependency&gt;
          &lt;groupId&gt;org.apache.httpcomponents&lt;/groupId&gt;
          &lt;artifactId&gt;httpclient&lt;/artifactId&gt;
          &lt;version&gt;4.3.5&lt;/version&gt;
      &lt;/dependency&gt;
  
      &lt;dependency&gt;
          &lt;groupId&gt;org.apache.commons&lt;/groupId&gt;
          &lt;artifactId&gt;commons-lang3&lt;/artifactId&gt;
          &lt;version&gt;3.3.2&lt;/version&gt;
      &lt;/dependency&gt;
  
      &lt;dependency&gt;
          &lt;groupId&gt;org.apache.commons&lt;/groupId&gt;
          &lt;artifactId&gt;commons-io&lt;/artifactId&gt;
          &lt;version&gt;1.3.2&lt;/version&gt;
      &lt;/dependency&gt;
  
      &lt;dependency&gt;
          &lt;groupId&gt;com.fasterxml.jackson.core&lt;/groupId&gt;
          &lt;artifactId&gt;jackson-databind&lt;/artifactId&gt;
      &lt;/dependency&gt;
  
  &lt;/dependencies&gt;
  
  &lt;build&gt;
      &lt;plugins&gt;
          &lt;plugin&gt;
              &lt;groupId&gt;org.springframework.boot&lt;/groupId&gt;
              &lt;artifactId&gt;spring-boot-maven-plugin&lt;/artifactId&gt;
          &lt;/plugin&gt;
      &lt;/plugins&gt;
  &lt;/build&gt;
  
  &lt;plugins&gt;
      &lt;plugin&gt;
          &lt;groupId&gt;org.apache.maven.plugins&lt;/groupId&gt;
          &lt;artifactId&gt;maven-compiler-plugin&lt;/artifactId&gt;
          &lt;version&gt;3.2&lt;/version&gt;
          &lt;configuration&gt;
              &lt;source&gt;1.8&lt;/source&gt;
              &lt;target&gt;1.8&lt;/target&gt;
              &lt;encoding&gt;UTF-8&lt;/encoding&gt;
          &lt;/configuration&gt;
      &lt;/plugin&gt;
  &lt;/plugins&gt;
  </code></pre>
  
  <p></p>
  
  <p>this is the log(sorry for the format):</p>
  
  <blockquote>
    <p>org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'kindlePocketController': Injection of autowired dependencies failed; nested exception is org.springframework.beans.factory.BeanCreationException: Could not autowire field: private com.kindlepocket.web.service.TextBookInfoSearchService com.kindlepocket.web.controller.KindlePocketController.searchService; nested exception is org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'textBookInfoSearchService': Injection of autowired dependencies failed; nested exception is org.springframework.beans.factory.BeanCreationException: Could not autowire field: private com.kindlepocket.web.service.ApiService com.kindlepocket.web.service.TextBookInfoSearchService.apiService; nested exception is org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'apiService': Injection of autowired dependencies failed; nested exception is org.springframework.beans.factory.BeanCreationException: Could not autowire field: private org.apache.http.impl.client.CloseableHttpClient com.kindlepocket.web.service.ApiService.httpClient; nested exception is org.springframework.beans.factory.NoSuchBeanDefinitionException: No qualifying bean of type [org.apache.http.impl.client.CloseableHttpClient] found for dependency: expected at least 1 bean which qualifies as autowire candidate for this dependency. Dependency annotations: {@org.springframework.beans.factory.annotation.Autowired(required=true)}
        at org.springframework.beans.factory.annotation.AutowiredAnnotationBeanPostProcessor.postProcessPropertyValues(AutowiredAnnotationBeanPostProcessor.java:334) ~[spring-beans-4.2.5.RELEASE.jar:4.2.5.RELEASE]
        at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.populateBean(AbstractAutowireCapableBeanFactory.java:1214) ~[spring-beans-4.2.5.RELEASE.jar:4.2.5.RELEASE]
        at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.doCreateBean(AbstractAutowireCapableBeanFactory.java:543) ~[spring-beans-4.2.5.RELEASE.jar:4.2.5.RELEASE]
        at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBean(AbstractAutowireCapableBeanFactory.java:482) ~[spring-beans-4.2.5.RELEASE.jar:4.2.5.RELEASE]
        at org.springframework.beans.factory.support.AbstractBeanFactory$1.getObject(AbstractBeanFactory.java:306) ~[spring-beans-4.2.5.RELEASE.jar:4.2.5.RELEASE]
        at org.springframework.beans.factory.support.DefaultSingletonBeanRegistry.getSingleton(DefaultSingletonBeanRegistry.java:230) ~[spring-beans-4.2.5.RELEASE.jar:4.2.5.RELEASE]
        at org.springframework.beans.factory.support.AbstractBeanFactory.doGetBean(AbstractBeanFactory.java:302) ~[spring-beans-4.2.5.RELEASE.jar:4.2.5.RELEASE]
        at org.springframework.beans.factory.support.AbstractBeanFactory.getBean(AbstractBeanFactory.java:197) ~[spring-beans-4.2.5.RELEASE.jar:4.2.5.RELEASE]
        at org.springframework.beans.factory.support.DefaultListableBeanFactory.preInstantiateSingletons(DefaultListableBeanFactory.java:772) ~[spring-beans-4.2.5.RELEASE.jar:4.2.5.RELEASE]
        at org.springframework.context.support.AbstractApplicationContext.finishBeanFactoryInitialization(AbstractApplicationContext.java:839) ~[spring-context-4.2.5.RELEASE.jar:4.2.5.RELEASE]
        at org.springframework.context.support.AbstractApplicationContext.refresh(AbstractApplicationContext.java:538) ~[spring-context-4.2.5.RELEASE.jar:4.2.5.RELEASE]
        at org.springframework.boot.context.embedded.EmbeddedWebApplicationContext.refresh(EmbeddedWebApplicationContext.java:118) ~[spring-boot-1.3.3.RELEASE.jar:1.3.3.RELEASE]
        at org.springframework.boot.SpringApplication.refresh(SpringApplication.java:766) [spring-boot-1.3.3.RELEASE.jar:1.3.3.RELEASE]
        at org.springframework.boot.SpringApplication.createAndRefreshContext(SpringApplication.java:361) [spring-boot-1.3.3.RELEASE.jar:1.3.3.RELEASE]
        at org.springframework.boot.SpringApplication.run(SpringApplication.java:307) [spring-boot-1.3.3.RELEASE.jar:1.3.3.RELEASE]
        at org.springframework.boot.SpringApplication.run(SpringApplication.java:1191) [spring-boot-1.3.3.RELEASE.jar:1.3.3.RELEASE]
        at org.springframework.boot.SpringApplication.run(SpringApplication.java:1180) [spring-boot-1.3.3.RELEASE.jar:1.3.3.RELEASE]
        at com.kindlepocket.web.Application.main(Application.java:10) [classes/:na]
    Caused by: org.springframework.beans.factory.BeanCreationException: Could not autowire field: private com.kindlepocket.web.service.TextBookInfoSearchService com.kindlepocket.web.controller.KindlePocketController.searchService; nested exception is org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'textBookInfoSearchService': Injection of autowired dependencies failed; nested exception is org.springframework.beans.factory.BeanCreationException: Could not autowire field: private com.kindlepocket.web.service.ApiService com.kindlepocket.web.service.TextBookInfoSearchService.apiService; nested exception is org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'apiService': Injection of autowired dependencies failed; nested exception is org.springframework.beans.factory.BeanCreationException: Could not autowire field: private org.apache.http.impl.client.CloseableHttpClient com.kindlepocket.web.service.ApiService.httpClient; nested exception is org.springframework.beans.factory.NoSuchBeanDefinitionException: No qualifying bean of type [org.apache.http.impl.client.CloseableHttpClient] found for dependency: expected at least 1 bean which qualifies as autowire candidate for this dependency. Dependency annotations: {@org.springframework.beans.factory.annotation.Autowired(required=true)}
        at org.springframework.beans.factory.annotation.AutowiredAnnotationBeanPostProcessor$AutowiredFieldElement.inject(AutowiredAnnotationBeanPostProcessor.java:573) ~[spring-beans-4.2.5.RELEASE.jar:4.2.5.RELEASE]
        at org.springframework.beans.factory.annotation.InjectionMetadata.inject(InjectionMetadata.java:88) ~[spring-beans-4.2.5.RELEASE.jar:4.2.5.RELEASE]
        at org.springframework.beans.factory.annotation.AutowiredAnnotationBeanPostProcessor.postProcessPropertyValues(AutowiredAnnotationBeanPostProcessor.java:331) ~[spring-beans-4.2.5.RELEASE.jar:4.2.5.RELEASE]
        ... 17 common frames omitted</p>
  </blockquote>
  
  <p><strong>The Problem has been fixed</strong>
  I updated the ContextConfig.class like this:
  `</p>
  
  <pre><code>package com.kindlepocket.web;
  
  import org.apache.http.client.config.RequestConfig;
  import org.apache.http.impl.client.CloseableHttpClient;
  import org.apache.http.impl.client.HttpClientBuilder;
  import org.springframework.context.annotation.Bean;
  import org.springframework.context.annotation.Configuration;
  
  @Configuration
  public class ContextConfig {
  
  @Bean
  public CloseableHttpClient httpClient() {
      return HttpClientBuilder.create().build();
  }
  
  @Bean
  public RequestConfig requestConfig() {
      return RequestConfig.custom().build();
  }
  
  }
  </code></pre>
  
  <p>`</p>