<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns:context="http://www.springframework.org/schema/context"
xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd http://www.springframework.org/schema/context https://www.springframework.org/schema/context/spring-context.xsd">
<!---->
<context:component-scan base-package="com.powernode.spring6.bean"/>
</beans>
<context:component-scan> 是 Spring 框架中的一個配置元素,用於自動掃描指定包(package)及其子包下的類,並自動註冊帶有特定註解的類為 Spring 容器中的 Bean。這使得開發者無需在 XML 配置檔案中顯式宣告每一個 Bean,簡化了配置過程。
在使用<context:component-scan> 時,通常需要指定 base-package 屬性,它指定了自動掃描的包路徑。Spring 會掃描這些包及其子包下的所有類,並查詢帶有 @Component、@Service、@Repository 和 @Controller 等註解的類。這些註解分別用於標識一般的元件、服務層元件、資料訪問層元件和控制器層元件。
一旦找到帶有這些註解的類,Spring 會自動將它們註冊為容器中的 Bean,這樣你就可以在其他地方透過自動裝配(如 @Autowired)來使用這些 Bean。
除了 base-package 屬性外,context:component-scan 還有其他一些屬性可以配置,如 use-default-filters、include-filter 和 exclude-filter,用於控制掃描的過濾邏輯。
此外,如果配置了 context:component-scan,那麼通常就不需要再配置 context:annotation-config/,因為 context:component-scan 已經包含了後者的功能,用於啟用對註解的支援。
總的來說,context:component-scan 是 Spring 框架中一個非常有用的配置元素,它簡化了 Bean 的宣告和配置過程,提高了開發效率。