如何避免在spring安全配置中复制UserDetailsS​​ervice相关的bean

时间:2015-08-31 12:01:42

标签: spring spring-mvc spring-security

我将spring-mvc与java config和spring-security一起使用。

正如states in docs我将SecurityConfig.class放入rootContext

public class WebAppInitializer extends AbstractAnnotationConfigDispatcherServletInitializer{

@Override
protected Class<?>[] getRootConfigClasses() {
    return new Class[]{SecurityConfig.class};
}

@Override
protected Class<?>[] getServletConfigClasses() {
    return new Class[]{WebConfig.class};
}

@Override
protected String[] getServletMappings() {
    return new String[] { "/" };
}

}

在安全配置中,我需要注入最终需要UserDetailsServiceUserDao的{​​{1}}。所以我需要添加SessionFactory以使这些依赖项可用于rootContext。

@ComponentScan({ "my.package" })

然而,servletContext中也需要@Configuration @EnableWebSecurity @ComponentScan({ "my.package" }) class SecurityConfig extends WebSecurityConfigurerAdapter { @Autowired private UserDetailsService userDetailsService; ... } UserDao,反过来它们是通过SessionFactory创建的。

最后,这些bean被复制并出现在WebConfig.classrootContext中。

我该怎样防止这种情况?

0 个答案:

没有答案