@Component 和 @Bean 的區別是什么?@Component 注解作用于類,而@Bean注解作用于方法。@Component通常是通過類路徑掃描來自動偵測以及自動裝配到 Spring 容器中(我們可以使用 @ComponentScan 注解定義要掃描的路徑從中找出標識了需要裝配的類自動裝配到 Spring 的 bean 容器中)。@Bean 注解通常是我們在標有該注解的方法中定義產生這個 bean,@Bean告訴了 Spring 這是某個類的實例,當我需要用它的時候還給我。@Bean 注解比 @Component 注解的自定義性更強,而且很多地方我們只能通過 @Bean 注解來注冊 bean。比如當我們引用第三方庫中的類需要裝配到 Spring容器時,則只能通過 @Bean來實現。
Bean 的作用域有哪些?Spring 中 Bean 的作用域通常有下面幾種:singleton : IoC 容器中只有唯一的 bean 實例。Spring 中的 bean 默認都是單例的,是對單例設計模式的應用。prototype : 每次獲取都會創建一個新的 bean 實例。也就是說,連續 getBean() 兩次,得到的是不同的 Bean 實例。request (僅 Web 應用可用): 每一次 HTTP 請求都會產生一個新的 bean(請求 bean),該 bean 僅在當前 HTTP request 內有效。session (僅 Web 應用可用) : 每一次來自新 session 的 HTTP 請求都會產生一個新的 bean(會話 bean),該 bean 僅在當前 HTTP session 內有效。application/global-session (僅 Web 應用可用):每個 Web 應用在啟動時創建一個 Bean(應用 Bean),該 bean 僅在當前應用啟動時間內有效。websocket (僅 Web 應用可用):每一次 WebSocket 會話產生一個新的 bean。
?