spring註解@Component、@controller、@service、@repository
一、@Component註解
- 作用:把普通pojo例項化到spring容器中,相當於之前xml配置檔案中的
<bean id="" class=""/>
) - Component註解也就是“Controller註解”、“Service註解”和“Repository註解”的通用註解,可以和它們起到相同的作用(在不清楚使用那個註解的時候,可以統統使用Component,為了程式碼邏輯清晰,還是建議使用具體的註解)。這四個註解都是類級別的, 可以不帶任何引數,也可以帶一個引數,代表bean名字,在進行注入的時候就可以通過名字進行注入了。
- 泛指各種元件,就是說當我們的類不屬於各種歸類的時候(不屬於@Controller、@Service等的時候),我們就可以使用@Component來標註這個類。
案例: <context:component-scan base-package=”com.*”>
上面的這個例子是引入Component元件的例子,其中base-package表示為需要掃描的所有子包。
二、@controller 註解
- 說明:功能與@Component類似,普通pojo例項化到spring容器中,相當於配置檔案中的:
<bean id="" class=""/>
; @Controller 負責註冊一個bean 到spring 上下文中,bean 的ID 預設為類名稱開頭字母小寫,你也可以自己指定; - 功能:類級別註解,用來宣告控制器類(前端控制器),相當於struts中的action層,@Controller 用於標記在一個類上,使用它標記的類就是一個SpringMVC Controller 物件。分發處理器將會掃描使用了該註解的類的方法。通俗來說,被Controller標記的類就是一個控制器,這個類中的方法,就是相應的動作。
- 控制器類上、和方法上,可以使用@RequestMapping註解:是一個用來處理請求地址對映的註解,可用於類或方法上:
(1)類上:表示類中的所有響應請求的方法都是以該地址作為父路徑。比如下圖中,跳轉到登入頁面的路徑就是localhost:8080/xxx-war/user/toLogin;
(2)方法上:表示當前方法的請求路徑;
三、@service註解
(1)、 不帶引數:@Service註解,是告訴Spring,當Spring要建立UserServiceImpl的的例項時,bean的名字預設叫做"userService",也就是類名的首字母小寫,這樣當Action需要使用UserServiceImpl的的例項時,就可以由Spring建立好的"userService",然後注入給Action。
(2)、 帶引數:@Service("userService")註解,是告訴Spring,當Spring要建立UserServiceImpl的的例項時,bean的名字必須叫做"userService",這樣當Action需要使用UserServiceImpl的的例項時,就可以由Spring建立好的"userService",然後注入給Action。
- 用於標註服務層,主要用來進行業務的邏輯處理,是類級別的註解,用於宣告Service類。用法參考“Component註解”。
- Service註解,可以帶引數或者不帶引數;
四、@repository註解
例如:@Repository(value="userDao")註解是告訴Spring,讓Spring建立一個名字叫“userDao”的UserDaoImpl例項。
- 用於標註資料訪問層,也可以說用於標註資料訪問元件,即DAO元件;
- Repository註解,同樣是可以帶引數,或者不帶引數;
共同點:被@controller 、@service、@repository 、@component 註解的類,都會把這些類納入進spring容器中進行管理