В моем проекте мне понадобился пользовательский сервис userDetailsService, поэтому я объявляю его следующим образом в определенном пакете:
@Service
@Ihm(name = "userDetailsService")// ignore Ihm, it's just a custom annotation, which works fine
public class UserDetailsServiceImpl implements UserDetailsService
И в моем файле application-security.xml я добавил компонентное сканирование,
<context:component-scan base-package="path(including the userDetailsService for sure)" />
<context:annotation-config />
который не помог мне найти мой аннотированный компонент, я получил bean без определенного исключения.
В моем случае работал только один способ: 1. удалить аннотацию службы 2. создать bean-компонент в application-security.xml с помощью bean-компонентов: bean, id, class. это работает нормально.
Что еще забавнее, когда я сохранил и компонентное сканирование, и аннотацию, я получил дублированный идентификатор (более одного компонента, попросите указать идентификатор).
More than one UserDetailsService registered. Please use a specific Id reference in <remember-me/> <openid-login/> or <x509 /> elements.
Итак, это означает, что @Service
действительно создал bean-компонент, но y не найдет его в security.xml?
userDetailsServiceImpl
. Также<context:annotation-config />
подразумевается использованием<context:component-scan />
, поэтому вы, вероятно, захотите удалить это. - person M. Deinum   schedule 19.05.2014