Java Spring框架-Hibernate
我会感到困惑的。我正试图用Spring实现冬眠,我无法摆脱BeanCreationException。请帮帮我。我不熟悉春天(也不熟悉冬眠) 该问题是由一个控制器引起的,该控制器具有一个私有属性userService,该属性用@Autowired注释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
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>