Spring 引导 - 是单个实现 类 自动注入

Spring Boot - are single implementing classes automatically injected

总的来说,我对 Spring 比较陌生,但已经通读了 Apress Spring Rest 文本并获得了示例 运行 Eclipse 没有问题。

示例中令我困惑的一点是对象似乎是自动注入的。 例如在第 8 章安全性中有一个 QuickPollUserDetailsService class 实现了 spring UserDetailsService class.

文字内容如下:

"The SecurityConfig class declares a userDetailsService property, which gets injected with a QuickPollUserDetailsService instance at runtime."

@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

的实现者怎么办?

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