Spring 注解解析

@Repository 存儲(chǔ)層Bean

首先使用 @Repository 將 DAO 類聲明為 Bean
package bookstore.dao;   
@Repository   
public class UserDaoImpl implements UserDao{ …… }   

其次,在xml配置文件中啟動(dòng)Spring的自動(dòng)掃描功能、
 <beans … > 
……
 <context:component-scan base-package=”bookstore.dao” /> 
……
 </beans> 
效果
如此,我們就不再需要在 XML 中顯式使用 <bean/> 進(jìn)行Bean 的配置。
Spring 在容器初始化時(shí)將**自動(dòng)掃描 base-package 指定的包及其子包下的所有 class文件,所有標(biāo)注了 @Repository 的類都將被注冊(cè)為 Spring Bean。

為什么 @Repository 只能標(biāo)注在 DAO 類上呢?這是因?yàn)樵撟⒔獾淖饔貌恢皇菍㈩愖R(shí)別為Bean?
同時(shí)它還能將所標(biāo)注的類中拋出的數(shù)據(jù)訪問異常封裝為 Spring 的數(shù)據(jù)訪問異常類型。
Spring本身提供了一個(gè)豐富的并且是與具體的數(shù)據(jù)訪問技術(shù)無關(guān)的數(shù)據(jù)訪問異常結(jié)構(gòu),用于封裝不同的持久層框架拋出的異常,使得異常獨(dú)立于底層的框架。

@Component **
是一個(gè)泛化的概念,僅僅表示
一個(gè)組件** (Bean) ,可以作用在任何層次。
@Service 業(yè)務(wù)層Bean :
通常作用在業(yè)務(wù)層,但是目前該功能與 @Component 相同。
@Controller 展示層Bean
通常作用在控制層,但是目前該功能與 @Component 相同。

通過在類上使用 @Repository、@Component、@Service 和 @Constroller 注解,Spring會(huì)自動(dòng)創(chuàng)建相應(yīng)的 BeanDefinition 對(duì)象,并注冊(cè)到 ApplicationContext 中。
這些類就成了 Spring受管組件。這三個(gè)注解除了作用于不同軟件層次的類,其使用方式與 @Repository 是完全相同的。

對(duì)于包含 name 屬性的 @Component、@Repository、 @Service 和@Controller,會(huì)把 name 取值作為 Bean 的名字。如果這個(gè)注解不包含 name值或是其他被自定義過濾器發(fā)現(xiàn)的組件,默認(rèn) Bean 名稱會(huì)是小寫開頭的非限定類名。
**@Autowired **
最后,說說 @Autowired Spring 2.5 引入了 @Autowired 注釋,它可以對(duì)類成員變量、方法及構(gòu)造函數(shù)進(jìn)行標(biāo)注,完成自動(dòng)裝配的工作。 通過 @Autowired的使用來消除 set ,get方法。

package com.baobaotao;     
public class Boss {     
    // 省略 get/setter     
@Autowired    
private Car car;     

@Autowired    
private Office office;    
  
@Override    
public String toString() {     
    return "car:" + car + "/n" + "office:" + office;     
}     
}     
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容