在別的語言中,如果需要跨文件進行調用 Function,通常都要在不同文件中進行 Import,例如同一個目錄中有 2 個 python 文件,其中一個文件想要調用另外一個文件的一個 function,那麼就需要把另外一個 python 文件給 import 進來這個 python 文件,然後用[python 文件名].xxxFunction() 類似這樣的形式來實現對其他文件的函數調用。

然而,這樣的情況就導致不同文件可能要經常對其他文件進行操作,而且過於重複,假如一個文件的某個函數要被其他 10 個文件調用,那麼這個 import 語句就需要寫 10 次。

如果把這個函數,放進一個整個項目都通用的「池子」裡面,每個文件想調用他的時候,只需要在這個池子裡面取,而不需要去具體找出這個函數放在什麼位置、位置文件夾名字和文件名字叫什麼的話,會不會方便很多?

而這個「池子」就是 IOC 容器,而需要放在 IOC 容器裡面的 Function,就是一種 Bean 對象。

  • 將一個 Function 放進 IOC 容器裡面,成為一個 Bean 對象可以用@Bean 註解。
  • 注意:@Bean 需要配合@Configuration 使用,以表示函數所在類為一個用於配置的類
  • 將一個 Class 放進 IOC 容器裡面,成為一個 Bean 對象可以用@Component 註解。

想要從 IOC 容器中提取一個 Bean 對象,放到當前文件來使用,可以用@Autowired。

e.g.

@Autowired
private User user;

這裡就是把一個 Bean 對象(名為 User 的一個 Class 類)以 user 這個 class 名,放進了這段程式當中。 這個操作就稱為「注入」了一個 User。