2017-04-21 116 views
3

我是新來的春天。Spring @Autowired註解和ContextComponent掃描和@autowired註釋對象

我已經理解了@Autowired註釋並且爲了使用它。我已經瞭解到我們應該使用1)context:annotation-config2)AutowiredAnnotationBeanPostProcessor。但是當我看到一個示例項目時,我沒有發現任何東西,所以使用上述內容是強制性的。


我想到@Autowired註解將創建對象時,我們在服務器上部署我們的的web.xml,因爲當我已經測試獨立的應用程序,我們使用公共靜態無效的主要(字符串[] args)來調用bean類。但是在web項目中,我們沒有任何類似的東西,所以當我們將web.xml部署到服務器或包含spring配置的application.xml中時,會創建對象。

我的理解在上述2個想象中是正確的。

請幫幫我。

+0

你可以使用'jvisualvm.exe'來檢查 –

+0

什麼是jvisualvm.exe? – jack0989

+0

什麼是谷歌?谷歌「什麼是jvisualvm.exe」 –

回答

1

當使用xml文件時,您需要爲各自的依賴添加PostProcessor Bean。你可以跳過這個如果你使用

<context:annotation-config/> 

這將意味着你不需要添加任何annotationPostProcessors。這將包括所有這些。其次,當你使用Autowire註釋時,你是按類型自動佈線的。你告訴spring,在初始化過程中設置這個字段的值。

通常情況下,你需要做的是,在應用程序的主,

  1. 獲取ApplicationContext中。
  2. 使用ApplicationContext,從XML獲取requiredBean。
  3. 在服務類中設置bean。

您可以通過在您的服務類中自動裝配bean來跳過這些步驟。讓我知道您是否瞭解這一點。

+0

感謝您的解釋,第一我明白,但是對於第二個。我們在獨立應用程序中有這3個步驟,但是在Web項目中,我只有自動裝配,並且沒有獲得任何應用程序上下文,並且獲取所需的bean和所有這些東西。我唯一的東西是做的是 – jack0989

+0

@autwired 私人僱員僱員; employee.findEmployeeByid(Long Id); 所以我想知道什麼時候這個對象被創建。它會在創建時將它部署到服務器。(web.xml或applicationcontext.xml) – jack0989

+0

我想這個Employee是一個spring庫,接線這個從一些實體類獲取數據。所以,當你啓動你的應用程序時,那個時候所有的服務,存儲庫,組件,類都會在春天被調用。這時對象被設置。所以當你部署和啓動你的servlet容器時,所有的自動裝配依賴關係都會被設置。 –