一般而言,我对Spring还是比较陌生,但已经阅读了Apress Spring Rest文本并获得了在Eclipse中运行的示例,而没有任何问题。
在示例中令我感到困惑的是,对象是如何自动注入的。例如,在第8章安全性中,有一个QuickPollUserDetailsService
实现springUserDetailsService
类的类。
文字内容如下:
“ 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是否在这里很聪明,并且注意到那是SpringQuickPollUserDetailsService
的唯一实现者UserDetailsService
,因此假设必须将其注入?如果是这样的话,如果我有2个或更多实施者,该怎么办UserDetailsService
默认情况下,Spring Boot将递归扫描软件包,并且可用的实现将自动注入。如果有多个实现,则启动将失败。
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句