使用名称' vehicleDao'创建bean时出错:注册自动装配的依赖项失败:无法自动装配字段:

时间:2016-02-03 06:53:25

标签: spring hibernate spring-mvc

Hii iam用hibernate做春天ORM。在运行程序时,我得到了吼叫错误..我给我所有的配置,pojo,daos请检查

 WARNING: Exception encountered during context initialization - cancelling refresh attempt: org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'vehicleDao': Injection of autowired dependencies failed; nested exception is org.springframework.beans.factory.BeanCreationException: Could not autowire field: private org.springframework.orm.hibernate3.HibernateTemplate in.JavaHome.SpringHiber.DAO.vehicleDao.template; nested exception is java.lang.NoClassDefFoundError: [Lorg/hibernate/engine/FilterDefinition;
Exception in thread "main" java.lang.NoSuchMethodError: org.springframework.util.ReflectionUtils.clearCache()V
    at org.springframework.context.support.AbstractApplicationContext.resetCommonCaches(AbstractApplicationContext.java:879)
    at org.springframework.context.support.AbstractApplicationContext.refresh(AbstractApplicationContext.java:563)
    at org.springframework.context.support.ClassPathXmlApplicationContext.<init>(ClassPathXmlApplicationContext.java:139)
    at org.springframework.context.support.ClassPathXmlApplicationContext.<init>(ClassPathXmlApplicationContext.java:83)
    at addVehicle.main(addVehicle.java:11)

配置弹簧是..

<context:component-scan base-package="in.JavaHome.SpringHiber"></context:component-scan>

<bean name="sessionFactory" class="org.springframework.orm.hibernate3.LocalSessionFactoryBean">
    <property name="configLocations" value="classpath:hibernate.cfg.xml"></property>
</bean>

<bean name="hibTemplate" class="org.springframework.orm.hibernate3.HibernateTemplate">
<property name="sessionFactory" ref="sessionFactory"></property>
</bean>

<bean name="hibTransManager" class="org.springframework.orm.hibernate3.HibernateTransactionManager">
<property name="sessionFactory" ref="sessionFactory"></property>
</bean>

<tx:annotation-driven transaction-manager="hibTransManager"/>

Dao Class

@Component
public class vehicleDao {

    @Autowired
    private HibernateTemplate template;

    @Transactional
    public void addVehicle(vehicle v){
        template.save(v);


    }

main.java

public static void main(String[] args) {
        // TODO Auto-generated method stub
        ApplicationContext contex= new ClassPathXmlApplicationContext("config.xml");
         vehicleDao dao = (vehicleDao) contex.getBean("vehicleDao.class");

         vehicle v=new vehicle();
         v.setName("S cross");
         v.setCost(1500000);

         dao.addVehicle(v);

    }

我刚接触到春天的mvc,请告诉我问题的原因。

谢谢你

2 个答案:

答案 0 :(得分:0)

如果我的猜测是正确的,那么您正在学习有关Spring的教程。如果是这样,祝贺并祝你好运,Spring是一个非常强大的框架!虽然看起来你正在使用一个非常古老的教程 - 我建议寻找更现代的Spring教程示例,因为XML配置(以及Hibernate 3)不是现代方法。也许来自:http://spring.io/guides

但是对于这个特定的问题,你的类路径上似乎有不兼容的jar。如果你打算使用hibernate 3,你需要确保它在类路径上并且你没有使用现代版本的spring。请参阅:compatability of spring 4.0.0 with hibernate 4.30

答案 1 :(得分:-1)

问题是你在xml中定义了bean这样的

<bean name="hibTemplate" class="org.springframework.orm.hibernate3.HibernateTemplate"> <property name="sessionFactory" ref="sessionFactory"></property> </bean>

但是使用自动装配bean名称的模板应该相同或使用@Qualifier

@Autowired
  private HibernateTemplate template;

将此更改为

@Autowired

private HibernateTemplate hibTemplate;

@Autowired @Qualifier(&#34; hibTemplate&#34)   private HibernateTemplate hibTemplate;