使用spring註解@Autowired,@Component須要先配置schema:java
xmlns:context="http://www.springframework.org/schema/context" xsi:schemaLocation="http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context-2.5.xsd"
顯式的配置<context:annotation-config/> spring
該配置隱式註冊了多個對註解進行解析的處理器,例如:ui
AutowiredAnnotationBeanPostProcessor CommonAnnotationBeanPostProcessor PersistenceAnnotationBeanPostProcessor RequiredAnnotationBeanPostProcessor
另外:比較建議使用@Resource ,而不是@Autowired註解,由於Autowired是spring提供的,而Resource是J2EE提供的spa
@Resource註解說明:.net
@Resource和@Autowired同樣,也能夠標註在字段或屬性的setter方法上
code
@Resource默認是按照名稱裝配,名稱能夠根據name屬性來指定。當找不到與名稱匹配的bean時,纔會按類型裝配
component
若註解標註在字段上,且未指定name屬性,則默認取字段名做爲bean名稱,尋找依賴對象
orm
若註解標註在setter上且未指定name屬性,則默認取屬性名做爲bean名稱尋找依賴對象
xml
若是沒有指定name屬性,而且按照默認的名稱仍然找不到依賴對象時,它就會按照類型匹配,但只要指定了name屬性,就只能按照名稱匹配了對象
@Autowired註解說明:
@Autowired默認按照類型裝配對象的,默認狀況下它要求依賴對象必須存在
若是容許null值,能夠設置它的required屬性爲false,如@Autowired(required=false)
若想要按照名稱裝配,能夠結合@Qualifier註解一塊兒使用,如:
@Autowired(required=false)
@Qualifier("personDaoBean")
在spring 2.5以上,咱們引入組件自動掃描機制,它能夠在classpath下尋找標註了@Service,@Repository,@Autowired,@Component註解的類,並把他們放入到spring的容器中管理,他的做用和在xml中使用bean節點配置組件同樣,
使用自動掃描機制,須要配置<context:component-scan base-package="com.jadyer"/> ,啓動自動掃描其中base-package指定須要掃描的包,它會掃描指定包中的類和子包裏面類
@Service用於標註業務層組件
@Repository用於標註數據訪問組件,即DAO組件
@Controller用於標註控制層組件,如Struts中的Action
@Component泛指組件,當組件不要好歸類時,能夠使用這個註解進行標註