BeanCreationException:自动连接的依赖项注入失败

catch23

我想Spring用于JDBC配置。

但这会引发下一堆异常:

Exception in thread "main" org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'jdbcDaoImpl': Injection of autowired dependencies failed; nested exception is org.springframework.beans.factory.BeanCreationException: Could not autowire field: public javax.sql.DataSource com.spring.database.dao.JdbcDaoImpl.dataSource; nested exception is org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'dataSource' defined in class path resource [spring-db.xml]: Error setting property values; nested exception is org.springframework.beans.PropertyBatchUpdateException; nested PropertyAccessExceptions (1) are:
PropertyAccessException 1: org.springframework.beans.MethodInvocationException: Property 'driverClassName' threw exception; nested exception is java.lang.NoSuchMethodError: org.springframework.util.ClassUtils.forName(Ljava/lang/String;)Ljava/lang/Class;
    at org.springframework.beans.factory.annotation.AutowiredAnnotationBeanPostProcessor.postProcessPropertyValues(AutowiredAnnotationBeanPostProcessor.java:292)
    at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.populateBean(AbstractAutowireCapableBeanFactory.java:1185)
    at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.doCreateBean(AbstractAutowireCapableBeanFactory.java:537)
    at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBean(AbstractAutowireCapableBeanFactory.java:475)
    at org.springframework.beans.factory.support.AbstractBeanFactory$1.getObject(AbstractBeanFactory.java:304)
    at org.springframework.beans.factory.support.DefaultSingletonBeanRegistry.getSingleton(DefaultSingletonBeanRegistry.java:228)
    at org.springframework.beans.factory.support.AbstractBeanFactory.doGetBean(AbstractBeanFactory.java:300)
    at org.springframework.beans.factory.support.AbstractBeanFactory.getBean(AbstractBeanFactory.java:195)
    at org.springframework.beans.factory.support.DefaultListableBeanFactory.preInstantiateSingletons(DefaultListableBeanFactory.java:703)
    at org.springframework.context.support.AbstractApplicationContext.finishBeanFactoryInitialization(AbstractApplicationContext.java:760)
    at org.springframework.context.support.AbstractApplicationContext.refresh(AbstractApplicationContext.java:482)
    at org.springframework.context.support.ClassPathXmlApplicationContext.<init>(ClassPathXmlApplicationContext.java:139)
    at org.springframework.context.support.ClassPathXmlApplicationContext.<init>(ClassPathXmlApplicationContext.java:83)
    at com.spring.database.JdbcDemo.main(JdbcDemo.java:10)
    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:483)
    at com.intellij.rt.execution.application.AppMain.main(AppMain.java:134)
Caused by: org.springframework.beans.factory.BeanCreationException: Could not autowire field: public javax.sql.DataSource com.spring.database.dao.JdbcDaoImpl.dataSource; nested exception is org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'dataSource' defined in class path resource [spring-db.xml]: Error setting property values; nested exception is org.springframework.beans.PropertyBatchUpdateException; nested PropertyAccessExceptions (1) are:
PropertyAccessException 1: org.springframework.beans.MethodInvocationException: Property 'driverClassName' threw exception; nested exception is java.lang.NoSuchMethodError: org.springframework.util.ClassUtils.forName(Ljava/lang/String;)Ljava/lang/Class;
    at org.springframework.beans.factory.annotation.AutowiredAnnotationBeanPostProcessor$AutowiredFieldElement.inject(AutowiredAnnotationBeanPostProcessor.java:508)
    at org.springframework.beans.factory.annotation.InjectionMetadata.inject(InjectionMetadata.java:87)
    at org.springframework.beans.factory.annotation.AutowiredAnnotationBeanPostProcessor.postProcessPropertyValues(AutowiredAnnotationBeanPostProcessor.java:289)
    ... 18 more
Caused by: org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'dataSource' defined in class path resource [spring-db.xml]: Error setting property values; nested exception is org.springframework.beans.PropertyBatchUpdateException; nested PropertyAccessExceptions (1) are:
PropertyAccessException 1: org.springframework.beans.MethodInvocationException: Property 'driverClassName' threw exception; nested exception is java.lang.NoSuchMethodError: org.springframework.util.ClassUtils.forName(Ljava/lang/String;)Ljava/lang/Class;

这是我的 main():

public class JdbcDemo {
    public static void main(String[] args) {
        ApplicationContext context = new ClassPathXmlApplicationContext("spring-db.xml");
        JdbcDaoImpl dao = context.getBean("jdbcDaoImpl", JdbcDaoImpl.class);

        Circle circle = dao.getCircle(1);
        System.out.println(circle.getName());
    }
}

JdbcDaoImpl:

@Component
public class JdbcDaoImpl {
    public static final String SELECT_FROM_CIRCLE_WHERE_ID = "SELECT * FROM circle WHERE id = ?";

    private Logger log = Logger.getLogger(JdbcDaoImpl.class);
    @Autowired
    private DataSource dataSource;

    public Circle getCircle(int circleId) {
        Connection conn = null;
        PreparedStatement ps;
        ResultSet rs;
        Circle circle = null;
        try {
            conn = dataSource.getConnection();
            ps = conn.prepareStatement(SELECT_FROM_CIRCLE_WHERE_ID);
            ps.setInt(1, circleId);

            rs = ps.executeQuery();
            if (rs.next()) {
                circle = new Circle(circleId, rs.getString("name"));
            }

            rs.close();
            ps.close();
        } catch (Exception e) {
            log.error(e);
            throw new RuntimeException(e);
        } finally {
            try {
                if (conn != null) {
                    conn.close();
                }
            } catch (SQLException e) {
                log.error(e);
            }
        }
        return circle;
    }
}

spring-db.xml:

<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"
       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.xsd">

    <context:annotation-config/>
    <context:component-scan base-package="com.spring.database"/>

    <bean id="dataSource" class="org.springframework.jdbc.datasource.DriverManagerDataSource" >
        <property name="driverClassName" value="org.apache.derby.jdbc.ClientDriver"/>
        <property name="url" value="jdbc:derby://localhost:1527/db;create=true" />
    </bean>    
</beans>

如何解决这个麻烦?

马瑟森

看起来像一个类路径问题。它抱怨的方法已被删除Spring 4;

您可能应该仔细检查Spring依赖项的版本,以使它们都具有相同的版本。

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

Spring BeanCreationException自动连接依赖项注入失败

自动连接的依赖项注入失败;嵌套的异常是org.springframework.beans.factory.BeanCreationException:

自动连接的依赖项注入失败;嵌套的异常是org.springframework.beans.factory.BeanCreationException

自动连接的依赖项注入失败-

自动连接的依赖项注入失败,无法自动连接字段

弹簧启动:自动连接依赖项注入失败;

自动连接的依赖项注入失败NoClassDefFoundError:SpringNamingPolicy

自动注入依赖项注入失败

创建bean时出错,自动连接依赖项注入失败,无法自动连接字段

创建bean时出错。自动连接的依赖项注入失败。无法自动连接字段

Spring MVC Hibernate应用程序中自动连接依赖项的注入失败错误

创建名称为'Individual_Controller'的bean时出错:自动连接依赖项的注入失败;

创建名称为'serviceController'的bean时出错:自动连接依赖项的注入失败;

Spring数据jpa-未定义名为'entityManagerFactory'的bean。自动连接的依赖项注入失败

创建名称为bean的错误:自动连接的依赖项注入失败,无法解析占位符

在jar文件中注入自动绑定的依赖项失败

创建 bean 时出错:自动装配依赖项的注入失败

创建名称为'securityConfig'的bean时出错,自动连接依赖项的注入失败;异常java.lang.IllegalArgumentException

自动连接的依赖项注入失败;嵌套的异常是java.lang.NoClassDefFoundError:org / hibernate / cfg / Configuration

我在哪里弄错'创建名称为'userService'的bean时出错:自动连接依赖项的注入失败'?

创建名为employeeController 的bean 时出错。自动装配依赖项的注入失败。无法自动装配字段

创建名称为'JobTest'的bean时出错:自动连接依赖项的注入失败;嵌套的异常是org.springframework.beans.factory.BeanCreat

创建名为“employeeController”的 bean 时出错:注入自动装配的依赖项失败

使用contactService创建bean名称时出错,并且自动绑定依赖项注入失败

自动依赖项注入处理异常laravel

控制器方法中Laravel依赖项注入失败

Dagger 2.11 ContributesAndroidInjector单例依赖项注入失败

是什么导致AngularJS指令中的依赖项注入失败?

测试Angular Library时依赖项注入失败