我对Spring来说相对较新,但是已经阅读了Apress Spring Rest 文本,并且在Eclipse中运行的示例没有问题。
在示例中让我感到困惑的是如何自动注入对象。
例如,在第8章安全性中,有一个QuickPollUserDetailsService
类实现了spring UserDetailsService
类。
案文说明如下:
" SecurityConfig类声明了一个
userDetailsService
属性,该属性在运行时被注入QuickPollUserDetailsService
实例。"
@Configuration
@EnableWebSecuritypublic class SecurityConfig extends WebSecurityConfigurerAdapter
{
@Inject
private UserDetailsService userDetailsService;
@Override
protected void configure(AuthenticationManagerBuilder auth) throws Exception {
auth.userDetailsService(userDetailsService) .passwordEncoder(new BCryptPasswordEncoder());
}}
在任何文件中都没有指定要设置QuickPollUserDetailsService
。
Spring在这里是否聪明并注意到QuickPollUserDetailsService
是UserDetailsService
的唯一实现者,因此假设必须注入它?
如果是这种情况,如果我有2个或更多UserDetailsService
的实施者
答案 0 :(得分:2)
默认情况下,Spring Boot将递归扫描包,并自动注入可用的实现。如果有多个实现可用,则启动将失败。