Не удается создать внутренний компонент типа [org.springframework.security.config.authentication.AuthenticationManagerFactoryBean] - PullRequest
0 голосов
/ 14 февраля 2012

поэтому у меня есть класс для пользовательских данных

@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>

, и я получаю ошибку

SEVERE: Exceptionотправка инициализированного события контекста в экземпляр прослушивателя класса org.springframework.web.context.ContextLoaderListener org.springframework.beans.factory.BeanCreationException: ошибка создания бина с именем org.springframework.security.authentication.ProviderManager # 0 ':bean-компонент '(внутренний компонент)' типа [org.springframework.security.config.authentication.AuthenticationManagerFactoryBean] при установке свойства компонента 'parent';вложенным исключением является org.springframework.beans.factory.BeanCreationException: ошибка создания компонента с именем '(внутренний компонент)': FactoryBean вызвала исключение при создании объекта;вложенным исключением является org.springframework.beans.factory.BeanCreationException: ошибка создания компонента с именем 'org.springframework.security.authenticationManager': невозможно разрешить ссылку на компонент 'customUserDetailsService' при настройке свойства компонента 'provider' с ключом [0];вложенное исключение - org.springframework.beans.factory.BeanCreationException: ошибка создания бина с именем customUserDetailsService: сбой внедрения зависимостей с автопроводкой;вложенное исключение - org.springframework.beans.factory.BeanCreationException: не удалось автоматически связать поле: private com.yonder.timex.service.UserService com.yonder.timex.TimexUserDetailsService.userService;Вложенное исключение - org.springframework.beans.factory.NoSuchBeanDefinitionException: не найден соответствующий компонент типа [com.yonder.timex.service.UserService] для зависимости: ожидается, что по крайней мере 1 компонент, который квалифицируется как кандидат для автоматической передачи этой зависимости.Аннотации зависимостей: {@ org.springframework.beans.factory.annotation.Autowired (обязательный = true)} в org.springframework.beans.factory.support.BeanDefinitionValueResolver.resolveInnerBean (BeanDefinitionValue.rage.pris.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) в орг.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.Abeta.springframework.«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 (собственный метод) в 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)

Основная проблема заключается в том, что я хочу предоставить провайдер аутентификации моей службе пользовательских данных, но я не могу этого сделать.

Большое спасибо, Транка

1 Ответ

0 голосов
/ 15 февраля 2012

Проблема была откуда-то еще. Я не установил правильный порядок создания бина, поэтому эта ошибка

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...