@Component和@Repository、@Service、@Controller

zhifeng687發表於2015-12-20

Spring的註解形式:@Repository、@Service、@Controller,它們分別對應儲存層Bean,業務層Bean,和展示層Bean。

spring中的註解;

@Repository用於標註資料訪問元件,即DAO元件;
例:
@Repository
public class VentorDaoImpl implements iVentorDao {
}
在一個稍大的專案中,如果元件採用xml的bean定義來配置,顯然會增加配置檔案的體積,查詢以及維護起來也不太方便。
Spring2.5為我們引入了元件自動掃描機制,他在類路徑下尋找標註了上述註解的類,並把這些類納入進spring容器中管理。

它的作用和在xml檔案中使用bean節點配置元件時一樣的。要使用自動掃描機制,我們需要開啟以下配置資訊:
<?xml version="1.0" encoding="UTF-8" ?>
<beans xmlns="http://www.springframework.org/schema/beans"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns:context="http://www.springframework.org/schema/context"
xsi:schemaLocation="http://www.springframework.org/schema/beans
http://www.springframework.org/schema/beans/spring-beans-2.5.xsd
http://www.springframework.org/schema/context
http://www.springframework.org/schema/context/spring-context-2.5.xsd">

<context:component-scan base-package=”com.eric.spring”>
</beans>

下面說說@Componnet

@Component是類級別的註釋,它表明了被註釋的類是一個componnet,在使用基於註解的配置和類路徑掃描後,

標識為component的類會成為自動掃描的掃描物件。

其他類級別的註釋也可以被認為是component,通常是特殊型別的component:例如, @Repository註釋或AspectJ的@Aspect註釋。

譯自:spring官網 @Component API

@Repository、@Service、@Controller其實都可以認為是@Component的特例.

比如我們看看spring官網@Service的API介紹:

表明註釋類是一個“服務”,最初由領域驅動設計(DDD:Domain-Driven Design)定義為“作為模型中獨立的介面提供的操作,沒有封裝狀態。”
也可能表明一個類是“業務服務門面”(在核心J2EE模式意義上)或類似的東西。 這個註釋是一個通用的stereotype,個別團隊可能會縮小它們的語義並酌情使用。

這個註解作為@Component的一個特例,允許通過類路徑掃描來自動檢測實現類

譯自:spring官網 @Service API

相關文章