Я использую Spring Security 3.2.0.RELEASE
.UserDetailsService bean отсутствует с Spring Безопасность миграции с XML на JavaConfig
В настоящее время я переношу конфигурацию Spring Security на основе XML моего приложения на JavaConfig - Конфигурация Spring Spring.
В старом security.xml
я настроил JDBC-UserDetailsService
так:
<authentication-manager alias="authenticationManager">
<authentication-provider>
<password-encoder ref="passwordEncoder" />
<!-- parsed by JdbcUserServiceBeanDefinitionParser -->
<!-- the following creates a JdbcUserDetailsManager -->
<jdbc-user-service data-source-ref="dataSource" />
</authentication-provider>
</authentication-manager>
Среди других эффектов, выше конфигураций XML автоматически регистрируется Весеннюю Bean типа JdbcUserDetailsManager
(подтип UserDetailsService
), который я мог бы вводить в другие компоненты:
@Service
public class MyCustomService {
@Inject
private JdbcUserDetailsManager judm;
//...
}
Моего JavaConfig основанная подстройка выше XML выглядит следующим образом:
@Configuration
// @ImportResource("classpath:to/no/longer/needed/security.xml")
@EnableWebSecurity
public class SecurityConfig extends WebSecurityConfigurerAdapter {
@Override
protected void configure(AuthenticationManagerBuilder auth) throws Exception {
auth
.jdbcAuthentication()
.passwordEncoder(somePasswordEncoder)
.dataSource(someDataSource);
}
// ...
}
Выше конфигурация JavaConfig не кажется, дополнительно зарегистрировать Spring Bean типа JdbcUserDetailsManager
. Это означает, что MyCustomService
не получает инъекцию такой фасоли, и поэтому я получаю NoSuchBeanDefinitionException
:
org.springframework.beans.factory.NoSuchBeanDefinitionException: No qualifying bean of type [org.springframework.security.provisioning.JdbcUserDetailsManager] found for dependency: expected at least 1 bean which qualifies as autowire candidate for this dependency. Dependency annotations: {@javax.inject.Inject()}
Используя подход JavaConfig, как я могу достать фасоль типа JdbcUserDetailsManager
?