无法在spring自动assembly油田。 为什么?

我一直得到这个错误,并且无法弄清楚为什么……是的我知道很多人都有类似的问题,但是阅读他们得到的答案并没有解决我的问题。

org.springframework.beans.factory.BeanCreationException:创建名为’contactController’的bean时出错:注入自动连接的依赖项失败; 嵌套exception是org.springframework.beans.factory.BeanCreationException:无法自动assembly字段:private net.service.ContactService net.controller.ContactController.contactService; 嵌套exception是org.springframework.beans.factory.NoSuchBeanDefinitionException:找不到类型为[net.service.ContactService]的匹配bean依赖:预期至少有1个bean符合此依赖关系的autowire候选者。 依赖注释:{@ org.springframework.beans.factory.annotation.Autowired(required = true)}

这是控制器:

@Controller @SessionAttributes public class ContactController { @Autowired private ContactService contactService; //methods... } 

ContactServiceImpl

 @Service("contactService") @Transactional(propagation = Propagation.SUPPORTS, readOnly = true) public class ContactServiceImpl implements ContactService { @Autowired private ContactDao contactDao; public ContactServiceImpl() { } @Override @Transactional(propagation = Propagation.REQUIRED, readOnly = false) public void addContact(Contact contact) { contactDao.saveContact(contact); } @Override public List getContacts() { return contactDao.getAllContacts(); } } 

ContactDaoImpl

 @Repository("contactDao") public class ContactDaoImpl implements ContactDao { @Autowired private SessionFactory sessionFactory; @Override public void saveContact(Contact contact) { sessionFactory.getCurrentSession().saveOrUpdate(contact); } @Override @SuppressWarnings("unchecked") public List getAllContacts() { return (List) sessionFactory.getCurrentSession().createQuery("from contact c").list(); } } 

和spring-servlet.xml

                     net.form.Contact     ${hibernate.dialect} ${hibernate.show_sql}        

在spring servlet .xml中:

  

(我假设服务impl与服务接口“net.service”在同一个包中)

我认为你必须将net.service包(或所有net)添加到组件扫描中。 目前spring只在net.controller中搜索组件,而你的服务impl在net.service中,它不会被spring实例化。

我得到了同样的错误并且搜索它导致我在这里。 我的修复似乎只是将@Component注释添加到抽象服务的实现中。

在这种情况下,这将是:

 import org.springframework.stereotype.Component; ... @Component public class ContactServiceImpl implements ContactService { 

那么创建ContactServiceImpl bean有一个问题。 首先,确保在启动Spring上下文时以及创建ContactController实例时,通过调试no-args构造函数来实际实例化该类。

如果ContactServiceImpl实际上是由Spring上下文实例化的,但它与@Autowire注释完全没有匹配,请尝试在注释注入中更明确。 这是一个处理类似问题的人并提供一些可能的解决方案:

http://blogs.sourceallies.com/2011/08/spring-injection-with-resource-and-autowired/

如果你问我,我想如果你更换你会好的

 @Autowired private ContactService contactService; 

有:

 @Resource @Qualifier("contactService") private ContactService contactService; 

当您收到此错误时,缺少某些注释。 我在服务上缺少@service注释。 当我添加该注释时,它对我来说很好。

我今天遇到了同样的问题。 原来我忘了为我的服务实现文件提及@Service / @ Component注释,因为spring无法自动assembly并且无法创建bean。

我有完全相同的问题尝试将两个类放在同一个包中并在pom.xml中添加行

   org.springframework.boot   spring-boot-starter-web   1.2.0.RELEASE   

在java配置中,确保您已在RootConfig中导入您的配置,如@Import(PersistenceJPAConfig.class)