Spring 框架自誕生以來堅守簡化企業級開發宗旨。Spring 2.0 透過 XML Schema 與自定義命名空間大幅減少 XML 配置,利用 Java 5 泛型與註解特性。Spring 2.5 繼續此趨勢,為 Java 5+ 開發者提供進一步簡化且強大的新特性:註解驅動依賴注入、類路徑組件自動掃描、生命周期註解支持、新 Web 控制器模型、JUnit 4 整合、新 XML 命名空間等。本文為三篇系列首篇,聚焦核心容器配置簡化與註解功能。
Spring 核心現支持:@Resource、@PostConstruct、@PreDestroy。僅需註冊 CommonAnnotationBeanPostProcessor 或使用 <context:annotation-config/> 即可激活。
用於命名資源依賴注入,默認按 bean name 匹配,可標注在字段或 setter 上。無顯式名稱時以字段名/屬性名為默認值。找不到名稱匹配時回退類型匹配(可關閉)。支持 JNDI 查找(可強制或通過 mappedName)。建議仍引入 Spring bean 作間接層,降低耦合,利於測試環境替換實現。
分別觸發初始化與銷毀回調。結合了實現接口(無需配置)與自定義方法(低侵入)的優點:無需 XML 配置、屬 Java 標準語義、可在第三方庫通用、支持同一註解多方法皆被調用。
註冊 AutowiredAnnotationBeanPostProcessor 或 <context:annotation-config/> 激活。可用於字段、構造器、任意方法(非必須 setter,可多參數)。required=false 聲明可選依賴。類型衝突解決:primary="true" 標記主實例、@Qualifier 限定名稱、自定義 Qualifier 註解(可作元註解)、CustomAutowireConfigurer 註冊自定義類型。支持集合注入(注入所有匹配類型 bean)。可替代 Aware 接口注入 MessageSource、ResourceLoader、ApplicationContext 等基礎設施依賴。
Spring 2.0 引入 @Repository,2.5 新增 @Service、@Controller、通用 @Component。配合 <context:component-scan base-package="..."/> 自動偵測類路徑組件並註冊。支持過濾器自定義匹配規則(類型、AspectJ 表達式、正則)。自定義註解加 @Component 元註解即可被掃描。可顯式指定 bean name(@Service("petClinic"))。@Scope 定義作用域(如 session)。Qualifier 直接標注在目標類上(@Repository @VetSpecialty("dentistry")),無需 XML。
Spring 2.5 透過掌控 Java 註解力量大幅簡化配置:支持 JSR-250 通用註解、提供 @Autowired 細粒度控制、擴展構造型註解並結合組件掃描消除樣板 XML。新 context 命名空間提供精簡語法。XML 與註解無縫結合產生平衡方案:基礎設施複雜配置留在 XML,業務層高層配置受益於註解,同一 Application Context 內和諧共存。下篇將探討 Web 層註解新功能。