Java Spring框架-Hibernate

Java Spring框架-Hibernate,java,spring,hibernate,exception,spring-mvc,Java,Spring,Hibernate,Exception,Spring Mvc,我会感到困惑的。我正试图用Spring实现冬眠,我无法摆脱BeanCreationException。请帮帮我。我不熟悉春天(也不熟悉冬眠) 该问题是由一个控制器引起的,该控制器具有一个私有属性userService,该属性用@Autowired注释 org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'testController': Injection of autowi

我会感到困惑的。我正试图用Spring实现冬眠,我无法摆脱BeanCreationException。请帮帮我。我不熟悉春天(也不熟悉冬眠)

该问题是由一个控制器引起的,该控制器具有一个私有属性userService,该属性用@Autowired注释

org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'testController': Injection of autowired dependencies failed; nested exception is org.springframework.beans.factory.BeanCreationException: Could not autowire field: com.aerts.service.UserService com.aerts.controller.TestController.userService; nested exception is org.springframework.beans.factory.NoSuchBeanDefinitionException: No qualifying bean of type [com.aerts.service.UserService] 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)}
我真的很困惑,请帮帮我

以下是我的root-context.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:jdbc="http://www.springframework.org/schema/jdbc"
 xmlns:tx="http://www.springframework.org/schema/tx"
 xmlns:p="http://www.springframework.org/schema/p"
 xmlns:task="http://www.springframework.org/schema/task"
 xmlns:util="http://www.springframework.org/schema/util"
 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
        http://www.springframework.org/schema/util http://www.springframework.org/schema/util/spring-util.xsd
        http://www.springframework.org/schema/task http://www.springframework.org/schema/task/spring-task-3.0.xsd
        http://www.springframework.org/schema/tx http://www.springframework.org/schema/tx/spring-tx-3.1.xsd">



<tx:annotation-driven />

<context:component-scan base-package="com.aerts.controller">
</context:component-scan>


<bean id="propertyConfigurer"
    class="org.springframework.beans.factory.config.PropertyPlaceholderConfigurer"
    p:location="classpath:application.properties" />


<bean id="dataSource" class="org.apache.commons.dbcp.BasicDataSource" destroy-method="close">
    <property name="driverClassName" value="com.mysql.jdbc.Driver"/>
    <property name="url" value="jdbc:mysql://....."/>
    <property name="username" value="....."/>
    <property name="password" value="....."/>
    <property name="initialSize" value="5"/>
    <property name="maxActive" value="20"/>
    </bean>


<bean id="sessionFactory"
    class="org.springframework.orm.hibernate4.LocalSessionFactoryBean">
    <property name="dataSource" ref="dataSource" />
    <property name="hibernateProperties">
        <props>
            <prop key="hibernate.dialect">org.hibernate.dialect.MySQLDialect</prop>
            <prop key="hibernate.show_sql">true</prop>
            <prop key="hibernate.hbm2ddl.auto">create</prop>
        </props>
    </property>
</bean>

<bean id="transactionManager"
    class="org.springframework.orm.hibernate4.HibernateTransactionManager">
    <property name="sessionFactory" ref="sessionFactory" />
</bean>
我的UserDaoImpl:

package com.aerts.dao;

import java.util.ArrayList;
import java.util.List;

import org.hibernate.SessionFactory;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Repository;
import org.springframework.stereotype.Service;

import com.aerts.domain.User;


@Service
public class UserDaoImpl implements UserDao{

    @Autowired
    private SessionFactory sessionFactory;


    @Override
    public void addUser(User user) {
        sessionFactory.getCurrentSession().save(user);      
    }

    @Override
    public List<User> listUser() {
        return sessionFactory.getCurrentSession().createQuery("from User")
                .list();
    }

    @Override
    public void removeUser(int id) {
        User user = (User) sessionFactory.getCurrentSession().get(
                User.class, id);
        if (user != null) {
            sessionFactory.getCurrentSession().delete(user);
        }       
    }

    @Override
    public void updateUser(User user) {
        sessionFactory.getCurrentSession().update(user);

    }

}
package com.aerts.dao;
导入java.util.ArrayList;
导入java.util.List;
导入org.hibernate.SessionFactory;
导入org.springframework.beans.factory.annotation.Autowired;
导入org.springframework.stereotype.Repository;
导入org.springframework.stereotype.Service;
导入com.aerts.domain.User;
@服务
公共类UserDaoImpl实现UserDao{
@自动连线
私人会话工厂会话工厂;
@凌驾
public void addUser(用户){
sessionFactory.getCurrentSession().save(用户);
}
@凌驾
公共列表listUser(){
返回sessionFactory.getCurrentSession().createQuery(“来自用户”)
.list();
}
@凌驾
public void removeUser(int-id){
用户用户=(用户)会话工厂。getCurrentSession().get(
User.class,id);
如果(用户!=null){
sessionFactory.getCurrentSession().delete(用户);
}       
}
@凌驾
public void updateUser(用户){
sessionFactory.getCurrentSession().update(用户);
}
}
和我的UserServiceImpl:

package com.aerts.service;

import java.util.List;

import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;

import com.aerts.dao.UserDao;
import com.aerts.domain.User;

@Service
public class UserServiceImpl implements UserService {

    @Autowired
    private UserDao userDao;


    @Override
    @Transactional
    public void addUser(User user) {
        userDao.addUser(user);
    }

    @Override
    @Transactional
    public List<User> listUser() {
        return userDao.listUser();
    }

    @Override
    @Transactional
    public void removeUser(int id) {
        userDao.removeUser(id);
    }

    @Override
    @Transactional
    public void updateUser(User user) {
        userDao.updateUser(user);
    }

}
package com.aerts.service;
导入java.util.List;
导入org.springframework.beans.factory.annotation.Autowired;
导入org.springframework.stereotype.Service;
导入org.springframework.transaction.annotation.Transactional;
导入com.aerts.dao.UserDao;
导入com.aerts.domain.User;
@服务
公共类UserServiceImpl实现UserService{
@自动连线
私有UserDao UserDao;
@凌驾
@交易的
public void addUser(用户){
userDao.addUser(用户);
}
@凌驾
@交易的
公共列表listUser(){
返回userDao.listUser();
}
@凌驾
@交易的
public void removeUser(int-id){
userDao.removeUser(id);
}
@凌驾
@交易的
public void updateUser(用户){
userDao.updateUser(用户);
}
}

如果有人能帮助我,我会非常感激,我会很绝望的…

我在spring没有专业知识,但我假设你的服务有问题,如果你使用的是接口,你应该注入ut而不是你的类

看这首歌


将服务类包添加到应用程序上下文文件中的
组件扫描
基本包列表中

<context:component-scan 
    base-package="
        com.aerts.controller
        com.aerts.service">
</context:component-scan>


我相信您只扫描了
控制器
软件包,您的服务级别在该软件包之外。非常感谢Reimeus!!!!你让我如此高兴,你简直不敢相信!如果我能投票支持你,我会的D
<context:component-scan 
    base-package="
        com.aerts.controller
        com.aerts.service">
</context:component-scan>