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 是不是很聪明,注意到 QuickPollUserDetailsService
是 UserDetailsService
的唯一实现者,因此假设它必须被注入?
如果是这样的话,如果我有 2 个或更多 UserDetailsService
的实现者怎么办?
默认情况下,Spring Boot 将递归扫描包并自动注入可用的实现。如果有多个实现可用,启动将失败。
总的来说,我对 Spring 比较陌生,但已经通读了 Apress Spring Rest 文本并获得了示例 运行 Eclipse 没有问题。
示例中令我困惑的一点是对象似乎是自动注入的。
例如在第 8 章安全性中有一个 QuickPollUserDetailsService
class 实现了 spring UserDetailsService
class.
文字内容如下:
"The SecurityConfig class declares a
userDetailsService
property, which gets injected with aQuickPollUserDetailsService
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 是不是很聪明,注意到 QuickPollUserDetailsService
是 UserDetailsService
的唯一实现者,因此假设它必须被注入?
如果是这样的话,如果我有 2 个或更多 UserDetailsService
默认情况下,Spring Boot 将递归扫描包并自动注入可用的实现。如果有多个实现可用,启动将失败。