<context:component-scan base-package="com.example" /> 會自動掃描基礎包及其子包下的類,發現帶有 @Component、@Controller、@Service、@Repository 等註解的類,自動註冊為 Spring Bean。
注意:已包含 <context:annotation-config/> 功能,無需重複配置。
use-default-filters默認 true:掃描所有標準註解(@Component 及其子註解)。設為 false 可關閉默認掃描,配合子標簽精確控制。
| 屬性 | 說明 |
|---|---|
type="annotation" | 按註解類型過濾,expression 為註解全限定名 |
type="assignable" | 按類型繼承關係過濾 |
type="aspectj" | AspectJ 表達式 |
type="regex" | 正則匹配類名 |
type="custom" | 自定義 TypeFilter 實現 |
use-default-filters="false" 時,include-filter 為疊加而非替換,默認掃描仍生效。component-scan 重複掃描同一包導致 Bean 重複註冊(同名覆蓋或拋出異常)。base-package="com")啟動慢、誤註冊第三方類。component-scan。use-default-filters="false" 顯式聲明需掃描的註解類型。exclude-filter 剔除測試代碼、舊模組、配置類等非業務 Bean。@ComponentScan 註解在配置類上使用(Spring Boot 風格),類型安全且支持 IDE 重構。