Autowire不会连接自定义UserDetailsS​​ervice

时间:2013-06-04 05:35:42

标签: java spring spring-mvc spring-security

我定义了名为UserDetailService的自定义UserService,它运行正常。当我在某个bean中自动装配它时会给我错误

org.springframework.beans.factory.NoSuchBeanDefinitionException: No matching bean of type [com.restaurant.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)}

我已在此论坛上查看与此相关的所有已解答的解决方案,但它没有帮助我解决我的问题,因此我再次发布问题。

在我的rootcontext.xml我已添加“context:annotation-config”标记,而webcontext.xml我已添加"context:component-scan base-package="com.restaurant""。我还观察到UserService的默认构造函数在服务器启动时被调用。但仍然将其自动装入其他bean不起作用。除自定义UserDetailService之外,所有其他autowire都可以使用。

任何人都可以帮我解决它,因为我完全陷入了这个问题。

我的自定义UserService类如下所示:

@Service
public class UserService implements UserDetailsService
{

@Autowired
private UserDAO userDAO;    


public UserDetails loadUserByUsername(String username)throws UsernameNotFoundException, DataAccessException {       
    User user = userDAO.findUnique("select usr from User usr where usr.isActive = 1 and usr.userName = ?", username);       
    if(user == null) {
        throw new UsernameNotFoundException("User not found");
    }       
    return user;        
}

}

1 个答案:

答案 0 :(得分:0)

此异常可能有多种原因。首先,您需要验证是否在类定义之前正确插入了@Service注释。如果您的服务是UserService,则应遵循以下模式。

@Service
public class UserService{

 // attributes and methods 

}