2015-09-05 13 views
0

我對Spring一般比較陌生,但已經通讀了Apress Spring Rest文本並獲得了在Eclipse中運行的示例沒有任何問題。Spring Boot - 自動注入的單個實現類

在這些例子中令我感到困惑的是物體是如何自動注入的。 例如在第8章安全中有一個QuickPollUserDetailsService類,它實現了彈簧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

默認情況下,Spring Boot將遞歸掃描包,可用的實現將被自動注入。如果有多個實現可用,啓動將失敗。

+0

爲此歡呼 - 我看到@Qualifier註釋可用於指定要使用哪個實現 –

相關問題