java - 无法 Autowiring Spring

标签 java xml spring spring-mvc

我正在尝试学习 Spring MVC 并创建了一个休息服务,但我遇到了 bean Autowiring 问题。

Could not autowire field: taxApp.dao.daoImpl.userDaoImpl taxApp.controller.loginController.userService; nested exception is org.springframework.beans.factory.NoSuchBeanDefinitionException: No qualifying bean of type [taxApp.dao.daoImpl.userDaoImpl] found for dependency: expected at least 1 bean which qualifies as autowire candidate for this dependency

我的 spring 项目的结构如下所示

src
   main
       java
           taxApp
                 controller
                           loginController.java
                 model
                      user.java
                 dao
                    daoImpl
                           userDaoImpl.java
                    userDAO.java
       resources
                database
                        data-source-cfg.xml
                user 
                    spring-user.xml
                spring-module.xml
       webapp
             web-inf
                    dispatcher-servlet.xml
                    web.xml
             index.jsp

以下是文件的样子

dispatcher-servlet.xml

<beans xmlns="http://www.springframework.org/schema/beans"
    xmlns:mvc="http://www.springframework.org/schema/mvc" xmlns:context="http://www.springframework.org/schema/context"
    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
    xsi:schemaLocation="
        http://www.springframework.org/schema/beans     
        http://www.springframework.org/schema/beans/spring-beans.xsd
        http://www.springframework.org/schema/mvc 
        http://www.springframework.org/schema/mvc/spring-mvc.xsd
        http://www.springframework.org/schema/context 
        http://www.springframework.org/schema/context/spring-context.xsd">

  <mvc:annotation-driven/>
  <context:component-scan base-package="taxApp" />
  <context:annotation-config />

  <bean
    class="org.springframework.web.servlet.view.InternalResourceViewResolver">
    <property name="prefix">
      <value>/WEB-INF/pages/</value>
    </property>
    <property name="suffix">
      <value>.jsp</value>
    </property>
  </bean>

</beans>

spring-user.xml

<beans xmlns="http://www.springframework.org/schema/beans"
    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
    xsi:schemaLocation="http://www.springframework.org/schema/beans
    http://www.springframework.org/schema/beans/spring-beans-2.5.xsd">

    <bean id="userDAO" class="dao.impl.userDaoImpl">
        <property name="dataSource" ref="dataSource" />
    </bean>

</beans>

spring-module.xml

<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
  xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
  xsi:schemaLocation="http://www.springframework.org/schema/beans
  http://www.springframework.org/schema/beans/spring-beans.xsd">

  <!-- Using Oracle datasource -->
  <import resource="database/data-source-cfg.xml" />
  <import resource="dao/spring-user.xml" />

</beans>

所有其他实现(例如 Controller 、DAO、服务和模型)看起来像

loginController.java

@RestController
public class loginController {
    @Autowired
    userDaoImpl userService;  //Service which will do all data retrieval/manipulation work
    //other methods
}

userDAO.java

public interface userDAO {
    public void insert(user _user);
    public user findUserByEmail(String email);
}

userDaoImpl.java

public class userDaoImpl implements userDAO{

    private DataSource dataSource;

    public void setDataSource(DataSource dataSource) {
        this.dataSource = dataSource;
    }
    //other methods
}

最佳答案

将您的 daoimpl 标记为

@存储库 公共(public)类 userDaoImpl 实现 userDAO{}

Autowire 接口(interface)而不是标记一个具体的类。 使用java配置使Spring应用程序更容易理解。

关于java - 无法 Autowiring Spring ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37506321/

相关文章:

java 8 流 : grouping by and storing sum in new object, 和合并映射

java - 如何使用 ldaptemplate 删除操作属性

java - 从 Spring 应用程序中删除 JSESSIONID cookie

c# - 使用XPath读取xml

android - 在android中使用不同的字符串文件

c# - 将对象模型转换为 XML

spring - 避免在 Tomcat 的 JNDI 数据源中使用明文密码

java - 如何查找带有尾随注释的所有字段

java - 呈现通过 JDBC 检索的表 - JAVA

java - 使用嵌套数组显示和计算质因数或其他运算的数量