Spring Boot - 是自动注入的单个实现类

时间:2015-09-05 20:47:20

标签: java spring dependency-injection configuration

我对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在这里是否聪明并注意到QuickPollUserDetailsServiceUserDetailsService的唯一实现者,因此假设必须注入它? 如果是这种情况,如果我有2个或更多UserDetailsService的实施者

1 个答案:

答案 0 :(得分:2)

默认情况下,Spring Boot将递归扫描包,并自动注入可用的实现。如果有多个实现可用,则启动将失败。