title: Error creating bean.Injection of autowired dependencies failed.Could not autowire field
body: <p>I have a problem with my Spring configuration in Spring + Spring MVC + Hibernate + MySQL web application.Spring can't create beans that I was announce in Service class.</p>
  
  <p>Here is Controller class</p>
  
  <pre><code>@Controller
  @RequestMapping("/main")
  public class MainController {
  
  private static Logger LOGGER = Logger.getLogger("Controller");
  
  @Autowired
  private PersonServiceImpl personServiceImpl;
  
  @Autowired
  private ActionServiceImpl actionServiceImpl;
  
  
  
  @RequestMapping(value = "/users" , method = RequestMethod.GET)
  public String getUsers(Model model) {
  
      LOGGER.debug("Receive request for show all users");
      List&lt;User&gt; users = personServiceImpl.getAll();
      model.addAttribute("users", users);
      return "userspage";
  
  }
  
  @RequestMapping(value = "/users/add", method = RequestMethod.GET)
  public String getAdd() {
  
      LOGGER.debug("Receive request to show add page");
      return "addpage";
  
  }
  
  @RequestMapping(value = "/users/add", method = RequestMethod.POST)
  public String add(@ModelAttribute("userAttribute") User user,Actions 
  actions) {
  
      LOGGER.debug("Recieve request to add a new user");
      personServiceImpl.add(user);
      actionServiceImpl.addAction(user.getId(), actions);
      return "addedpage";
  
  }
  
  @RequestMapping(value = "/users/delete", method = RequestMethod.GET)
  public String delete(@RequestParam(value = "id", required = true)Integer 
  id, Model model) {
  
      LOGGER.debug("Recieve request for deleting user");
      personServiceImpl.delete(id);
      model.addAttribute("id", id);
      return "deletedpage";
  
  }
  
  @RequestMapping(value = "/users/edit", method = RequestMethod.GET)
  public String getEdit(@RequestParam(value = "id", required = true)Integer 
  id, Model model) {
  
      LOGGER.debug("Recieve request to show editpage");
      model.addAttribute("userAttribute", personServiceImpl.get(id));
      return "editpage";
  
  }
  
  @RequestMapping(value = "/users/edit", method = RequestMethod.POST)
  public String saveEdit(@ModelAttribute("userAttribute") User user,
                         @RequestParam(value = "id", required = 
  true)Integer id, Model model,
                         Actions actions) {
  
      LOGGER.debug("Received request to update person");
      user.setId(id);
      personServiceImpl.edit(user);
      actionServiceImpl.editAction( id, actions);
      model.addAttribute("id", id);
      return "editedpage";
  
  }
  
  @RequestMapping(value = "/users/actions", method = RequestMethod.GET)
  public String getActionsOfUser(@RequestParam(value = "id", required = 
  true)Integer id, Model model,
  
      LOGGER.debug("Recieve request to show user Action");
      model.addAttribute("userId", personServiceImpl.get(id));
      model.addAttribute("userAction", 
  actionServiceImpl.getListOfActions(user));
      return "userActionsPage";
  
  }
  }
  </code></pre>
  
  <p>Here is Service intarfaces </p>
  
  <pre><code>public interface ActionService {
  
  List&lt;Actions&gt; getListOfActions(User user);
  
  void addAction(Integer id, Actions actions);
  
  void editAction(Integer id, Actions actions);
  
  }
  
  
  
  public interface PersonService {
  
  List&lt;User&gt; getAll();
  
  User get(Integer id);
  
  void add(User user);
  
  void delete(Integer id);
  
  void edit(User user);
  
  }
  </code></pre>
  
  <p>And they implementations</p>
  
  <pre><code>@Service
  @Transactional
  public class ActionServiceImpl implements ActionService {
  
  private static Logger LOGGER = Logger.getLogger("actionService");
  
  @Autowired
  private SessionFactory sessionFactory;
  
  @Bean
  ActionService getActionService() {
      return new ActionServiceImpl();
  }
  
  public List&lt;Actions&gt; getListOfActions(User user){
  
      LOGGER.debug("Retriving all user actions");
      Session session = sessionFactory.getCurrentSession();
      Query query = session.createQuery("from Actions where  user = " +    
  user.getId());
      return query.list();
  }
  
  public void addAction(Integer id, Actions actions){
  
      LOGGER.debug("Adding addAction to user info");
      Session session = sessionFactory.getCurrentSession();
      actions.setActionType(ActionType.ADDING_NEW_USER);
      actions.setDate(new Date());
      User existingUser = (User) session.get(User.class , id);
      actions.setUser(existingUser);
      existingUser.getActions().add(actions);
      session.save(existingUser);
      session.save(actions);
  
  }
  
  public void editAction(Integer id, Actions actions){
  
      LOGGER.debug("Adding editAction to user info");
      Session session = sessionFactory.getCurrentSession();
      actions.setActionType(ActionType.EDITING_EXISTING_USER);
      actions.setDate(new Date());
      User existingUser = (User) session.get(User.class , id);
      actions.setUser(existingUser);
      existingUser.getActions().add(actions);
      session.save(existingUser);
      session.save(actions);
  
  }
  }
  
  
  @Service
  @Transactional
  public class PersonServiceImpl implements  PersonService{
  
  private static Logger LOGGER = Logger.getLogger("service");
  
  @Autowired
  private SessionFactory sessionFactory;
  
  @Bean
  PersonService getPersonService() {
      return new PersonServiceImpl();
  }
  
  public List&lt;User&gt; getAll() {
  
      LOGGER.debug("Retrieving all users");
      Session session = sessionFactory.getCurrentSession();
      Query query = session.createQuery("from User ");
      return query.list();
  
  }
  
  public User get(Integer id) {
  
      Session session = sessionFactory.getCurrentSession();
      User user = (User) session.get(User.class, id);
      return user;
  
  }
  
  public void add(User user) {
  
      LOGGER.debug("Adding new user");
      Session session = sessionFactory.getCurrentSession();
      session.save(user);
  }
  
  public void delete(Integer id) {
  
      LOGGER.debug("Deleting existing user");
      Session session = sessionFactory.getCurrentSession();
      Query query = session.createQuery("from User where id = " + id);
      User user = (User) query.uniqueResult();
      List&lt;Actions&gt; actions = user.getActions();
      session.delete(user);
      for(Actions actionses: actions ){
          session.delete(actionses);
      }
  
  }
  
  public void edit(User user) {
  
      LOGGER.debug("Editing existing user");
      Session session = sessionFactory.getCurrentSession();
      User existingUser = (User) session.get(User.class, user.getId());
      existingUser.setLogin(user.getLogin());
      existingUser.setPassword(user.getPassword());
      existingUser.setReal_name(user.getReal_name());
      session.save(existingUser);
  }
  }
  </code></pre>
  
  <p>Application-context</p>
  
  <pre><code>&lt;?xml version="1.0" encoding="UTF-8"?&gt;
  &lt;beans xmlns="http://www.springframework.org/schema/beans"
     xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
     xmlns:context="http://www.springframework.org/schema/context"
     xmlns:mvc="http://www.springframework.org/schema/mvc"
     xsi:schemaLocation="http://www.springframework.org/schema/beans
          http://www.springframework.org/schema/beans/spring-beans-3.0.xsd
          http://www.springframework.org/schema/context
          http://www.springframework.org/schema/context/spring-context-  
  3.0.xsd
          http://www.springframework.org/schema/mvc
          http://www.springframework.org/schema/mvc/spring-mvc-3.0.xsd"&gt;
  
  &lt;!-- Activates various annotations to be detected in bean classes --&gt;
  &lt;context:annotation-config /&gt;
  
  &lt;!-- Scans the classpath for annotated components that will be  
  auto-registered as Spring beans.
   For example @Controller and @Service.--&gt;
  
  &lt;context:component-scan base-package="com.oleg.project.*" /&gt;
  
  &lt;!-- Configures the annotation-driven Spring MVC Controller programming 
  model.--&gt;
  &lt;mvc:annotation-driven /&gt;
  
  &lt;!-- Load Hibernate related configuration --&gt;
  &lt;import resource="hibernate-context.xml" /&gt;
  
  &lt;/beans&gt;
  </code></pre>
  
  <p>And finally my StackTrace</p>
  
  <pre><code>org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'mainController': Injection of autowired dependencies failed; nested exception is org.springframework.beans.factory.BeanCreationException: Could not autowire field: private com.oleg.project.Services.PersonServiceImpl com.oleg.project.Controller.MainController.personServiceImpl; nested exception is org.springframework.beans.factory.NoSuchBeanDefinitionException: No qualifying bean of type [com.oleg.project.Services.PersonServiceImpl] 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)
  at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.populateBean(AbstractAutowireCapableBeanFactory.java:1214)
  at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.doCreateBean(AbstractAutowireCapableBeanFactory.java:543)
  at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBean(AbstractAutowireCapableBeanFactory.java:482)
  at org.springframework.beans.factory.support.AbstractBeanFactory$1.getObject(AbstractBeanFactory.java:305)
  at org.springframework.beans.factory.support.DefaultSingletonBeanRegistry.getSingleton(DefaultSingletonBeanRegistry.java:230)
  at org.springframework.beans.factory.support.AbstractBeanFactory.doGetBean(AbstractBeanFactory.java:301)
  at org.springframework.beans.factory.support.AbstractBeanFactory.getBean(AbstractBeanFactory.java:196)
  at org.springframework.beans.factory.support.DefaultListableBeanFactory.preInstantiateSingletons(DefaultListableBeanFactory.java:772)
  at org.springframework.context.support.AbstractApplicationContext.finishBeanFactoryInitialization(AbstractApplicationContext.java:834)
  at org.springframework.context.support.AbstractApplicationContext.refresh(AbstractApplicationContext.java:537)
  at org.springframework.web.context.ContextLoader.configureAndRefreshWebApplicationContext(ContextLoader.java:446)
  at org.springframework.web.context.ContextLoader.initWebApplicationContext(ContextLoader.java:328)
  at org.springframework.web.context.ContextLoaderListener.contextInitialized(ContextLoaderListener.java:107)
  at org.apache.catalina.core.StandardContext.listenerStart(StandardContext.java:5016)
  at org.apache.catalina.core.StandardContext.startInternal(StandardContext.java:5528)
  at org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:150)
  at org.apache.catalina.core.ContainerBase.addChildInternal(ContainerBase.java:901)
  at org.apache.catalina.core.ContainerBase.addChild(ContainerBase.java:877)
  at org.apache.catalina.core.StandardHost.addChild(StandardHost.java:652)
  at org.apache.catalina.startup.HostConfig.manageApp(HostConfig.java:1809)
  at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
  at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
  at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
  at java.lang.reflect.Method.invoke(Method.java:497)
  at org.apache.tomcat.util.modeler.BaseModelMBean.invoke(BaseModelMBean.java:301)
  at com.sun.jmx.interceptor.DefaultMBeanServerInterceptor.invoke(DefaultMBeanServerInterceptor.java:819)
  at com.sun.jmx.mbeanserver.JmxMBeanServer.invoke(JmxMBeanServer.java:801)
  at org.apache.catalina.mbeans.MBeanFactory.createStandardContext(MBeanFactory.java:618)
  at org.apache.catalina.mbeans.MBeanFactory.createStandardContext(MBeanFactory.java:565)
  at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
  at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
  at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
  at java.lang.reflect.Method.invoke(Method.java:497)
  at org.apache.tomcat.util.modeler.BaseModelMBean.invoke(BaseModelMBean.java:301)
  at com.sun.jmx.interceptor.DefaultMBeanServerInterceptor.invoke(DefaultMBeanServerInterceptor.java:819)
  at com.sun.jmx.mbeanserver.JmxMBeanServer.invoke(JmxMBeanServer.java:801)
  at javax.management.remote.rmi.RMIConnectionImpl.doOperation(RMIConnectionImpl.java:1471)
  at javax.management.remote.rmi.RMIConnectionImpl.access$300(RMIConnectionImpl.java:76)
  at javax.management.remote.rmi.RMIConnectionImpl$PrivilegedOperation.run(RMIConnectionImpl.java:1312)
  at javax.management.remote.rmi.RMIConnectionImpl.doPrivilegedOperation(RMIConnectionImpl.java:1404)
  at javax.management.remote.rmi.RMIConnectionImpl.invoke(RMIConnectionImpl.java:832)
  at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
  at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
  at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
  at java.lang.reflect.Method.invoke(Method.java:497)
  at sun.rmi.server.UnicastServerRef.dispatch(UnicastServerRef.java:323)
  at sun.rmi.transport.Transport$1.run(Transport.java:200)
  at sun.rmi.transport.Transport$1.run(Transport.java:197)
  at java.security.AccessController.doPrivileged(Native Method)
  at sun.rmi.transport.Transport.serviceCall(Transport.java:196)
  at sun.rmi.transport.tcp.TCPTransport.handleMessages(TCPTransport.java:568)
  at sun.rmi.transport.tcp.TCPTransport$ConnectionHandler.run0(TCPTransport.java:826)
  at sun.rmi.transport.tcp.TCPTransport$ConnectionHandler.lambda$run$79(TCPTransport.java:683)
  at java.security.AccessController.doPrivileged(Native Method)
  at sun.rmi.transport.tcp.TCPTransport$ConnectionHandler.run(TCPTransport.java:682)
  at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1142)
  at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:617)
  at java.lang.Thread.run(Thread.java:745)
  </code></pre>
  
  <p>Caused by: org.springframework.beans.factory.BeanCreationException: Could not autowire field: private com.oleg.project.Services.PersonServiceImpl com.oleg.project.Controller.MainController.personServiceImpl; nested exception is org.springframework.beans.factory.NoSuchBeanDefinitionException: No qualifying bean of type [com.oleg.project.Services.PersonServiceImpl] 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:571)
      at org.springframework.beans.factory.annotation.InjectionMetadata.inject(InjectionMetadata.java:88)
      at org.springframework.beans.factory.annotation.AutowiredAnnotationBeanPostProcessor.postProcessPropertyValues(AutowiredAnnotationBeanPostProcessor.java:331)
      ... 58 more
  Caused by: org.springframework.beans.factory.NoSuchBeanDefinitionException: No qualifying bean of type [com.oleg.project.Services.PersonServiceImpl] 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.support.DefaultListableBeanFactory.raiseNoSuchBeanDefinitionException(DefaultListableBeanFactory.java:1326)
      at org.springframework.beans.factory.support.DefaultListableBeanFactory.doResolveDependency(DefaultListableBeanFactory.java:1072)
      at org.springframework.beans.factory.support.DefaultListableBeanFactory.resolveDependency(DefaultListableBeanFactory.java:967)
      at org.springframework.beans.factory.annotation.AutowiredAnnotationBeanPostProcessor$AutowiredFieldElement.inject(AutowiredAnnotationBeanPostProcessor.java:543)
      ... 60 more</p>