无法在Spring Security中识别身份验证提供程序user-service-ref

时间:2014-03-30 13:42:39

标签: java spring hibernate spring-mvc spring-security

我正在我的项目中实现spring security

在我的DAO类中,我定义了loadUserByUsername

我的课就像

UserDAOImpl.java

@Repository
public class UserDAOImpl {

public UserDetails loadUserByUsername(String name)throws UsernameNotFoundException
{
  //implementation 
}
}

在Spring-security.xml中

<authentication-manager>
        <authentication-provider user-service-ref="UserDAOImpl">
      </authentication-provider>
    </authentication-manager>

但是当我运行程序时出现错误

Error creating bean with name 'org.springframework.security.authentication.dao.DaoAuthenticationProvider#0': Cannot resolve reference to bean 'UserDAOImpl' while setting bean property 'userDetailsService'; nested exception is org.springframework.beans.factory.NoSuchBeanDefinitionException: No bean named 'UserDAOImpl' is defined

任何人都可以帮我解决这个问题吗?

2 个答案:

答案 0 :(得分:0)

通常,扫描组件的bean是以小写字符开头的驼峰式的,因此bean将作为userDAOImpl存在于应用程序上下文中(不是UserDAOImpl

将您的spring-security.xml代码段更改为

<authentication-manager>
    <authentication-provider user-service-ref="userDAOImpl">
  </authentication-provider>
</authentication-manager>

希望这适合你。

答案 1 :(得分:0)

p p ......开始工作了。

移到

<context:component-scan base-package="app.com,app.com.controller,app.com.dao,app.com.service,app.com.model"/>

    <bean id="messageSource" class="org.springframework.context.support.ResourceBundleMessageSource"
            p:basename="messages"/>

从dispatcher-servlet到application-context.xml

@Service(&#34; userDAOImpl&#34;)类名称注释

有人会关心它为什么开始工作吗?