2016-02-25 151 views
0

如果我有一個使用spring bean的類(將通過@Autowired連線)。 我注意到,不僅要注入的類需要@Component,而且還要使用它(注入它)的類。這是爲什麼? @Autowired是不是應該注入彈簧?無需將@Component用於噴油器類別?Spring @Autowired detection

+1

Spring只會將依賴關係注入到其他Spring管理的bean中。一種讓Spring由Spring管理的方法是添加'@ Component'。 Spring不會自動將實例自動裝入它不知道的任何類中。同樣,即使你有'@ Component'並且'new MyObject()'spring也不會注入依賴項,因爲它不是Spring管理的依賴項。 –

回答

2

彈簧流程和只管理那些通過典型化註解@Component@Controller@Repository@Service之一標記的類。

它不掃描所有的類(這會使啓動非常慢)。

如果該類不是由Spring管理的,它不會處理該特定類中的任何註釋。

0

Spring,一個與beans一起使用。 A bean是一個由spring context管理的java對象。當遇到包含@Injectbean時,Spring將搜索其context以尋找要注入的變量類型的bean。如果沒有定義這樣的bean,則Spring將沒有任何注入。另外,如果@Inject的課程沒有bean,那麼Spring將不知道它,因此不能注入任何東西。

要獲得Spring以創建類的bean,有幾種方法可用。通過註釋,課程必須註明@Component,或更專門的註釋@Service,@Repository@Controller。只有這樣Spring纔會創建bean,該類可以將@Inject編入其他beans