Spring基於註解的方式配置bean的例項
前邊我們講過了基於配置檔案建立bean例項的另外一種方式:即使用FacctoryBean的實現類來建立配置檔案中bean的例項。下邊我們講一講使用非常頻繁的基於註解的方式來建立bean的例項。
1.註解配置bean的例項
① Spring框架可以從classpath(src)下自動掃描、偵測和例項化帶有特定註解的元件(類)。
② 特定註解一般有@Component,基本註解,標識了一個受Spring管理的元件;@Repository,一般用於標識持久層的元件;@Service,一般用於標識業務層的元件;@Controller,一般用於標識表現層的元件。需要注意的是Spring框架時無法根據註解的內容區分識別不同的層級,我們只是將不同的註解標識在不同的層級上以利於觀察。
③ Spring在掃描到這些帶有特定註解的類之後,會給這些類建立對應的例項並且命名,相當於配置檔案中的id值。Spring採用預設的命名策略:
類名首字母小寫,代表這個類例項的id名稱。
也可以手動的在註解之後新增一個value屬性執行當前這個類的例項的名稱,如@Component(value="liucc")
④ Spring可以掃描這些元件,但是還必須在SpringIOC容器中進行配置,指定Spring掃描的具體的包及其子包下的類。
<context:component-scan base-package="com.liucc"> 注意包的層級(包之間也是有層級之分的)
當有多個同等級的包需要被掃描時,可用逗號將其分割即可。
⑤ 在掃描的過程中,如果我們希望只掃描某個特定的類,則需要用到屬性resource-pattern來指定特定的.class類
<context:component-san base-package="com.liucc.pojo" resource-pattern="autowired/*.class" >.
⑥ 我們還可以使用<context:component-san/>的子標籤<context:include-filter>和<context:exclude-filter>來指定只掃描的類或者排除掃描的類。
具體的方式可以使用type先指定包含或者排除方式,有annotation和assignble兩種。前者指定掃描類的註解型別,後者指明掃描類的全類名。
需要注意的是,如果我們使用<context:include-filter>,那麼還必須在<context:component-san>節點上將use-default-filter置為false,否則無法起作用。(預設為true)