我正在开发一个java spring mvc应用程序。以下是我设置SecurityConfig
的{{1}}课程的一部分:
AuthenticationManager
...
@Autowired
private SecurityDAO securityDAO;
...
@Override
protected void configure(AuthenticationManagerBuilder registry) throws Exception {
registry.userDetailsService(securityDAO).passwordEncoder(new BCryptPasswordEncoder());
}
是一个实现SecurityDAO
接口的类。
现在,我需要有两个不同的UserDetailsService
界面实现。一个用于UserDetailsService
个用户,网址为admin
,另一个用于/admin/login
使用网址customer
。
我发现一些使用spring实现多个身份验证管理器的示例,但所有这些示例都使用 XML配置,而我找不到 java config 的示例。
Here is a sample of xml config.实际上,我想将此配置转换为java配置。
答案 0 :(得分:0)
扩展AbstractAutowiringFactoryBean并在该类中添加您的实现。
它有两个方法,doCreateInstance()来知道哪个对象需要实例化,getObjectType()知道哪个接口实现是这个。
例如
@Configuration
public class CLass extends AbstractAutowiringFactoryBean<Object> {
public enum Env {
devloper, production
}
Env envType = Env.devloper;
@Override
protected Object doCreateInstance() {
switch (envType) {
case devloper:
return new ClassImpl1();
case production:
rreturn new ClassImpl2();
}
throw new RuntimeException("Unsupported implementation type");
}
@Override
public Class<?> getObjectType() {
return SecurityDAO.class;
}
}