注:annotation-based configuration是一把雙刃劍,,與xml-based configuration相比,,有利有弊,其中利弊不在本文討論的范圍內(nèi),,不再多說(shuō),僅提醒各位根據(jù)自身的需要謹(jǐn)慎選擇,。
使用Annotaion似乎成了時(shí)尚和趨勢(shì),,spring2.5提供了一些Annotation,使開(kāi)發(fā)者可以簡(jiǎn)化我們的配置文件,。本文簡(jiǎn)單闡述一下spring2.5中的Annotation是如何使用的,,不做深層次的研究。 一,、配置文件可以簡(jiǎn)化到什么程度,? 使用annotation以前,我們要在xml配置文件中配置每一個(gè)我們用spring管理的bean,,有十個(gè)要寫十個(gè),,有一百個(gè)要寫一百個(gè)...... 使用annotation之后,,及至情況下,我們可以一個(gè)都bean都不寫,,那么我們的配置文件就要寫成下面的樣子: <?xml version="1.0" encoding="UTF-8"?> <beans xmlns="http://www./schema/beans" xmlns:xsi="http://www./2001/XMLSchema-instance" xmlns:context="http://www./schema/context" xsi:schemaLocation="http://www./schema/beans [url]http://www./schema/beans/spring-beans-2.5.xsd[/url] [url]http://www./schema/context[/url] [url]http://www./schema/context/spring-context-2.5.xsd[/url]" default-autowire="byName" default-lazy-init="true"> <context:annotation-config /> <context:component-scan base-package="org.example"> <context:include-filter type="regex" expression=".*Stub.*Repository"/> <context:exclude-filter type="annotation" expression="org.springframework.stereotype.Repository"/> </context:component-scan> </beans> 看看,,上面沒(méi)有一個(gè)<bean>標(biāo)簽吧!下面簡(jiǎn)單解釋一下下面的配置: 1) <beans>標(biāo)簽里面,,以前我們用DTD,,現(xiàn)在我們用的是XMLSchema-style,具體含義本文不講了(本文是“淺析”教程嘛) 2) <context:annotation-config />表示,,我們要使用Annotation-based的bean管理方式,。 3) <context:component-scan base-package="org.example">表示org.example包下的一些類使用Annotation-based的bean管理方式,換句話說(shuō)就是在這個(gè)包下的Annotation才會(huì)起作用,,其他包下的沒(méi)用,。 4) <context:include-filter和<context:exclude-filter就是用正則表達(dá)式來(lái)include和exclude指定包(就是org.example)想的一下bean。 二,、怎么什么聲明一個(gè)spring管理的bean,?怎么注入bean? 聲明:在bean上加注釋@Component,,例: package org.example; @Component("sampleBean") public class SampleBean{ //...... } 注入:在field,,seter等上加注釋@Autowired,例: package org.example; public class SampleBeanInjection{ private SampleBean sampleBean; @Autowired public setSampleBean(SampleBean sampleBean){ //...... } //...... } 如上的例子不是很恰當(dāng),,明眼人見(jiàn)諒,。 三、有哪些Annotation可用,? 在org.springframework.stereotype包下,,有用于聲明bean的Annotation: Component Controller Repository Service 在org.springframework.beans.factory.annotation包下,有用于注入bean的Annotation: Autowired Qualifier Required 在JSR-250的規(guī)范中(即j2ee的javax.annotation包下),,有@Resource用來(lái)注入bean,,其功能與@Autowired相似。 |
|