【问题标题】:Cannot create inner bean of type [org.springframework.security.config.authentication.AuthenticationManagerFactoryBean]无法创建 [org.springframework.security.config.authentication.AuthenticationManagerFactoryBean] 类型的内部 bean
【发布时间】:2012-03-05 15:05:41
【问题描述】:

所以我有一个关于用户详细信息的课程

@Service("customUserDetailsService")
public class TimexUserDetailsService implements UserDetailsService {

    @Autowired private UserService userService;

    public UserDetails loadUserByUsername(String username)
        throws UsernameNotFoundException, DataAccessException {
        TimexUser user = userService.getUserByUsername(username);
        Collection<GrantedAuthority> authorities = new ArrayList<GrantedAuthority>();       
        for (String authority : user.getAuthorities())
            authorities.add(new GrantedAuthorityImpl(authority));
        return new User(username, user.getPassword(), true, true, true, true, authorities);
    } 
}

和xml:

<beans:beans xmlns="http://www.springframework.org/schema/security"
    xmlns:beans="http://www.springframework.org/schema/beans" 
    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
    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/security 
                    http://www.springframework.org/schema/security/spring-security-3.0.xsd
                    http://www.springframework.org/schema/context 
                    http://www.springframework.org/schema/context/spring-context-3.0.xsd">

    <http use-expressions="true">
        <intercept-url pattern="/home" access="permitAll" />
        <intercept-url pattern="/projects/**" access="isAuthenticated()" />
        <intercept-url pattern="/projects/add/**" access="hasRole('manager')" />
        <form-login />
    </http>

    <context:annotation-config />
    <context:component-scan base-package="com.yonder.timex" />

    <authentication-manager>
        <authentication-provider ref="customUserDetailsService" />
    </authentication-manager>

</beans:beans>

我得到了错误

严重:向侦听器发送上下文初始化事件的异常 类的实例 org.springframework.web.context.ContextLoaderListener org.springframework.beans.factory.BeanCreationException:错误 用名字创建bean 'org.springframework.security.authentication.ProviderManager#0': 无法创建类型的内部 bean '(inner bean)' [org.springframework.security.config.authentication.AuthenticationManagerFactoryBean] 在设置 bean 属性“父级”时;嵌套异常是 org.springframework.beans.factory.BeanCreationException:错误 创建名称为“(内部 bean)”的 bean:FactoryBean 抛出异常 对象创建;嵌套异常是 org.springframework.beans.factory.BeanCreationException:错误 用名字创建bean 'org.springframework.security.authenticationManager':无法解决 设置 bean 时引用 bean 'customUserDetailsS​​ervice' 带有键 [0] 的属性“提供者”;嵌套异常是 org.springframework.beans.factory.BeanCreationException:错误 创建名为“customUserDetailsS​​ervice”的bean:注入 自动装配依赖失败;嵌套异常是 org.springframework.beans.factory.BeanCreationException:不能 自动装配字段:私有 com.yonder.timex.service.UserService com.yonder.timex.TimexUserDetailsS​​ervice.userService;嵌套异常 是 org.springframework.beans.factory.NoSuchBeanDefinitionException: 否 找到类型为 [com.yonder.timex.service.UserService] 的匹配 bean 依赖项:预计至少有 1 个符合自动装配条件的 bean 这种依赖的候选人。依赖注解: {@org.springframework.beans.factory.annotation.Autowired(required=true)} 在 org.springframework.beans.factory.support.BeanDefinitionValueResolver.resolveInnerBean(BeanDefinitionValueResolver.java:281) 在 org.springframework.beans.factory.support.BeanDefinitionValueResolver.resolveValueIfNecessary(BeanDefinitionValueResolver.java:125) 在 org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.applyPropertyValues(AbstractAutowireCapableBeanFactory.java:1325) 在 org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.populateBean(AbstractAutowireCapableBeanFactory.java:1086) 在 org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.doCreateBean(AbstractAutowireCapableBeanFactory.java:517) 在 org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBean(AbstractAutowireCapableBeanFactory.java:456) 在 org.springframework.beans.factory.support.AbstractBeanFactory$1.getObject(AbstractBeanFactory.java:293) 在 org.springframework.beans.factory.support.DefaultSingletonBeanRegistry.getSingleton(DefaultSingletonBeanRegistry.java:222) 在 org.springframework.beans.factory.support.AbstractBeanFactory.doGetBean(AbstractBeanFactory.java:290) 在 org.springframework.beans.factory.support.AbstractBeanFactory.getBean(AbstractBeanFactory.java:192) 在 org.springframework.beans.factory.support.DefaultListableBeanFactory.preInstantiateSingletons(DefaultListableBeanFactory.java:585) 在 org.springframework.context.support.AbstractApplicationContext.finishBeanFactoryInitialization(AbstractApplicationContext.java:895) 在 org.springframework.context.support.AbstractApplicationContext.refresh(AbstractApplicationContext.java:425) 在 org.springframework.web.context.ContextLoader.createWebApplicationContext(ContextLoader.java:282) 在 org.springframework.web.context.ContextLoader.initWebApplicationContext(ContextLoader.java:204) 在 org.springframework.web.context.ContextLoaderListener.contextInitialized(ContextLoaderListener.java:47) 在 org.apache.catalina.core.StandardContext.listenerStart(StandardContext.java:4205) 在 org.apache.catalina.core.StandardContext.start(StandardContext.java:4704) 在 org.apache.catalina.core.ContainerBase.start(ContainerBase.java:1053) 在 org.apache.catalina.core.StandardHost.start(StandardHost.java:840) 在 org.apache.catalina.core.ContainerBase.start(ContainerBase.java:1053) 在 org.apache.catalina.core.StandardEngine.start(StandardEngine.java:463) 在 org.apache.catalina.core.StandardService.start(StandardService.java:525) 在 org.apache.catalina.core.StandardServer.start(StandardServer.java:754) 在 org.apache.catalina.startup.Catalina.start(Catalina.java:595) 在 sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) 在 sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57) 在 sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) 在 java.lang.reflect.Method.invoke(Method.java:601) 在 org.apache.catalina.startup.Bootstrap.start(Bootstrap.java:289) 在 org.apache.catalina.startup.Bootstrap.main(Bootstrap.java:414)

基本问题是我想为我的用户详细信息服务提供身份验证提供程序,但我不能这样做。

非常感谢,特兰卡

【问题讨论】:

    标签: java spring-security


    【解决方案1】:

    问题出在其他地方。 我没有为 bean 创建设置正确的顺序,因此出现此错误

    【讨论】:

      猜你喜欢
      • 2013-11-08
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-08-01
      • 2011-10-14
      相关资源
      最近更新 更多