java - 无法 Autowiring 字段: private org. springframework.jdbc.core.JdbcTemplate

标签 java xml spring

00:49:34.284 [localhost-startStop-1] ERROR o.s.web.servlet.DispatcherServlet - Context initialization failed
org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'puzzleDAOImp': Injection of autowired dependencies failed; nested exception is org.springframework.beans.factory.BeanCreationException: Could not autowire field: private org.springframework.jdbc.core.JdbcTemplate com.mrhunt.dao.PuzzleDAOImp.jdbcTemplate; nested exception is org.springframework.beans.factory.NoSuchBeanDefinitionException: No qualifying bean of type [org.springframework.jdbc.core.JdbcTemplate] 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)}
    ... 29 common frames omitted
Caused by: org.springframework.beans.factory.NoSuchBeanDefinitionException: No qualifying bean of type [org.springframework.jdbc.core.JdbcTemplate] 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)}
    ... 31 common frames omitted

还有我的 web.xml(src/main/webapp/WEB-INF/web.xml)

<web-app id="WebApp_ID" version="2.4"
   xmlns="http://java.sun.com/xml/ns/j2ee" 
   xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
   xsi:schemaLocation="http://java.sun.com/xml/ns/j2ee 
   http://java.sun.com/xml/ns/j2ee/web-app_2_4.xsd">

   <display-name>MR.Hunt</display-name>

   <servlet>
      <servlet-name>main</servlet-name>
      <servlet-class>
         org.springframework.web.servlet.DispatcherServlet
      </servlet-class>
      <load-on-startup>1</load-on-startup>
   </servlet>

   <servlet-mapping>
      <servlet-name>main</servlet-name>
      <url-pattern>/</url-pattern>
   </servlet-mapping>
</web-app>

和applicationContext.xml(src/main/webapp/WEB-INF/applicationContext.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" xmlns:p="http://www.springframework.org/schema/p"
    xmlns:context="http://www.springframework.org/schema/context"
    xmlns:aop="http://www.springframework.org/schema/aop" xmlns:tx="http://www.springframework.org/schema/tx"
    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/tx
       http://www.springframework.org/schema/tx/spring-tx-3.0.xsd
       http://www.springframework.org/schema/aop
       http://www.springframework.org/schema/aop/spring-aop-3.0.xsd">

    <!-- 扫描类包,将标注Spring注解的类自动转化Bean,同时完成Bean的注入 -->
    <context:component-scan base-package="com.mrhunt.web" />
    <context:component-scan base-package="com.mrhunt.model" />
    <context:component-scan base-package="com.mrhunt.dao"/>
    <context:component-scan base-package="com.mrhunt.service"/>


    <bean id="dataSource"
        class="org.springframework.jdbc.datasource.DriverManagerDataSource">
        <property name="driverClass">
            <value>${jdbc.driverClassName}</value>
        </property>
        <property name="jdbcUrl">
            <value>${jdbc.url}</value>
        </property>
        <property name="user">
            <value>${jdbc.username}</value>
        </property>
        <property name="password">
            <value>${jdbc.password}</value>
        </property>
    </bean>

    <!-- 配置Jdbc模板 -->
    <bean id="jdbcTemplate" class="org.springframework.jdbc.core.JdbcTemplate">
        <property name="dataSource" ref="dataSource"></property>
    </bean>

    <!-- 配置事务管理器 -->
    <bean id="transactionManager"
        class="org.springframework.jdbc.datasource.DataSourceTransactionManager"
        p:dataSource-ref="dataSource" />

    <!-- 启动Spring MVC的注解功能,完成请求和注解POJO的映射 -->
    <bean
        class="org.springframework.web.servlet.mvc.annotation.AnnotationMethodHandlerAdapter" />


    <!-- 配置视图解析器,将ModelAndView及字符串解析为具体的页面 -->
    <bean
        class="org.springframework.web.servlet.view.InternalResourceViewResolver"
        p:viewClass="org.springframework.web.servlet.view.JstlView" p:prefix="/WEB-INF/jsp/"
        p:suffix=".jsp" />

</beans>

最后是.java文件:Puzzle.java(src/main/java/com/mrhunt/model/Puzzle.java)

package com.mrhunt.model;
import javax.persistence.*;
import org.hibernate.annotations.Type;
import org.springframework.format.annotation.DateTimeFormat;
import java.sql.*;

@Entity
@Table(name = "puzzles")
public class Puzzle {
    public Puzzle() {
        this.pz_id = 10;
        this.pz_name = "sin";
    }

    @Column(name = "pz_id")
    private Integer pz_id;

    @Column(name = "pz_group")
    private String pz_group;

    @Column(name = "pz_name")
    private String pz_name;

    @Column(name = "pz_difficulty")
    private Integer pz_difficulty;

    @Column(name = "pz_description")
    private String pz_description;

    @Column(name = "pz_input")
    private String pz_input;

    @Column(name = "pz_output")
    private String pz_output;

    @Column(name = "pz_source")
    private String pz_source;

    @Column(name = "pz_createdate")
    @Type(type = "java.sql.Date")
    @DateTimeFormat(pattern = "yyyy-MM-dd")
    private Date pz_createdate;

    public Integer getPz_id() {
        return pz_id;
    }
    public void setPz_id(Integer pz_id) {
        this.pz_id = pz_id;
    }
    /*And other getter/setter*/
}

PuzzleDAO.java(src/main/java/com/mrhunt/dao)

package com.mrhunt.dao;
import java.util.*;
import com.mrhunt.model.Puzzle;
public interface PuzzleDAO {
    public Puzzle getPuzzleByID(int pz_id);
    public Map<String, String> getFunctionsByID(int pz_id);
    public List<String> getAllGroups();
    public Map<Integer, String> getAllPuzzles();
    public Map<Integer, String> getPuzzlesByGroup(String pz_group);
}

PuzzleDAOImp.java(src/main/java/com/mrhunt/dao/PuzzleDAOImp.java)

package com.mrhunt.dao;

import java.sql.*;
import java.util.*;

import org.springframework.beans.factory.annotation.*;
import org.springframework.jdbc.core.*;
import org.springframework.stereotype.*;

import com.mrhunt.model.Puzzle;

@Repository
public class PuzzleDAOImp implements PuzzleDAO {

    @Autowired
    private JdbcTemplate jdbcTemplate;

    public void setJdbcTemplate(JdbcTemplate jdbcTemplate) {
        this.jdbcTemplate = jdbcTemplate;
    }

    @Override
    /*functions are implemented here*/
}

抱歉,我的问题太长了...如何修复此错误?

最佳答案

添加<context:annotation-config />到您的applicationcontext.xml。这应该可以解决自动接线问题!

关于java - 无法 Autowiring 字段: private org. springframework.jdbc.core.JdbcTemplate,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35583996/

相关文章:

Java servlet 范围

java - 重命名 Intellij 中多个子类中使用的变量

xml - Groovy使用XPath在xml中重复引用节点值(插值滥用?)

java - spring getbean 是否区分大小写?

java - 一级缓存不适用于 JPA 和 Hibernate

java - 如何在 Travis CI 中设置 "api_key"值

java - 平开窗不可见

java - 如何将Java对象转换为XML字符串,反过来将XML转换为Java对象?

javascript - 许多国际语言使用哪种编码

java - XML 解析 - DOM 或 SAX - 以属性作为访问 java 层次结构的条件的复杂 xml