1、@Component注解表明一個類會作為組件類,并告知Spring要為這個類創建bean。
2、@Bean注解告訴Spring這個方法將會返回一個對象,這個對象要注冊為Spring應用上下文中的bean。通常方法體中包含了最終產生bean實例的邏輯。
兩者的目的是一樣的,都是注冊bean到Spring容器中。
區別:
@Component(@Controller、@Service、@Repository)通常是通過類路徑掃描來自動偵測以及自動裝配到Spring容器中。
而@Bean注解通常是我們在標有該注解的方法中定義產生這個bean的邏輯。
@Component 作用于類,@Bean作用于方法。
總結:
@Component和@Bean都是用來注冊Bean并裝配到Spring容器中,但是Bean比Component的自定義性更強。可以實現一些Component實現不了的自定義加載類。
來源:知乎