我正在我的项目中实现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
任何人都可以帮我解决这个问题吗?
答案 0 :(得分:0)
通常,扫描组件的bean是以小写字符开头的驼峰式的,因此bean将作为userDAOImpl
存在于应用程序上下文中(不是UserDAOImpl
)
将您的spring-security.xml
代码段更改为
<authentication-manager>
<authentication-provider user-service-ref="userDAOImpl">
</authentication-provider>
</authentication-manager>
希望这适合你。
答案 1 :(得分:0)
移到
<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;)类名称注释
有人会关心它为什么开始工作吗?