Spring典型註解-@Controller,@Component,@
這次看一下Spring典型的註解,@Controller,@Service,@Component,@Repository。這四個註解在我們開發中非常的常見,用於定義不同型別的beans。
程式碼
在spring原始碼包中,這四個註解的定義
// Component註解定義
@Target(ElementType.TYPE)
@Retention(RetentionPolicy.RUNTIME)
@Documented
public @interface Component {
String value() default "";
}
// Repository註解定義
@Target({ElementType.TYPE})
@Retention(RetentionPolicy.RUNTIME)
@Documented
@Component
public @interface Repository {
String value() default "";
}
// Service註解定義
@Target({ElementType.TYPE})
@Retention(RetentionPolicy.RUNTIME)
@Documented
@Component
public @interface Service {
String value() default "";
}
// Controller註解定義
@Target({ElementType.TYPE})
@Retention(RetentionPolicy.RUNTIME)
@Documented
@Component
public @interface Controller {
String value() default "";
}
可以看到,四個註解都可以說成事Component級別的註解,Spring框架自動掃描的註解也是檢測是否有Component註解標記。
@Component
這個註解主要用於標記一個類作為spring的元件,spring掃描的時候掃描的是這個註解。
標記@Component的類在spring的beanName中是類首字母小寫,其餘字母都一樣。
因為其它幾個常用典型註解也是Component,所以他們與Component有相同的beanName命名方式。
@Repository
這個註解用來標識這個類是用來直接訪問資料庫的,這個註解還有一個特點是“自動轉換(automatic translation)”。就是在標記 @Repositor發生異常的時候,會有一個處理器來處理異常,而不需要手動的再加try-catch塊。
為了啟用自動轉換異常的特性,我們需要宣告一個PersistenceExceptionTranslationPostProcessor的bean。
@Bean
public PersistenceExceptionTranslationPostProcessor exceptionTranslation() {
return new PersistenceExceptionTranslationPostProcessor();
}
或者在XML檔案中:
<bean class=
"org.springframework.dao.annotation.PersistenceExceptionTranslationPostProcessor"/>
@Service
應用的業務邏輯通常在service層實現,因為我們一般使用@Service註解標記這個類屬於業務邏輯層。
@Service
public class SyncPreAuthInfoService{
//....
}
@Controller
這個註解主要告訴Spring這個類作為控制器,可以看做標記為暴露給前端的入口。
@Controller
public class PayRecordsStatisticsController{
//...
}
最後
專案小的時候對這些註解沒有特別的區分,但專案如果變得越來越大,那麼就要劃分的細緻一些有一定的規則才方便大家的維護。有點像衣服,雖然都是衣服,但是有的是要穿出去開party的,有的是穿出去運動的,有的是休閒的。功能一樣,但是用途不是很相同。
- @Component spring基礎的註解,被spring管理的元件或bean
- @Repository 用於持久層,資料庫訪問層
- @Service 用於服務層,處理業務邏輯
- @Controller 用於呈現層,(spring-mvc)
參考
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/1600/viewspace-2817185/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- spring boot 註解@ComponentSpring Boot
- SpringMVC常用註解@Controller,@Service,@repository,@ComponentSpringMVCController
- 山寨一個Spring的@Component註解Spring
- @Component和@Repository、@Service、@ControllerController
- SpringMVC 解析(三) Controller 註解SpringMVCController
- @Controller基本註解的控制器Controller
- Spring註解Spring
- 【Spring註解】事務註解@TransactionalSpring
- Spring註解詳解Spring
- Spring5:@Autowired註解、@Resource註解和@Service註解Spring
- Spring常用註解Spring
- Spring註解大全Spring
- Spring boot註解Spring Boot
- Spring新註解Spring
- spring註解2Spring
- Spring 各種註解備註Spring
- SPRING-spring註解整理Spring
- Spring 註解程式設計之模式註解Spring程式設計模式
- spring @component的作用Spring
- Spring系列之新註解配置+Spring整合junit+註解注入Spring
- Spring Boot系列十八 Spring AOP + 註解實現統一註解Spring Boot
- Spring註解?啥玩意?Spring
- spring 框架常用註解Spring框架
- Spring : @SessionAttributes註解SpringSession
- Spring(使用註解配置)Spring
- Spring註解之@ImportSpringImport
- Spring 註解開發Spring
- Spring註解簡析Spring
- Spring註解系列——@PropertySourceSpring
- Spring-註解注入Spring
- spring註解開發Spring
- Spring MVC AOP通過自定義註解方式攔截Controller等實現日誌管理SpringMVCController
- Spring IoC 公共註解詳解Spring
- 聊聊springmvc中controller的方法的引數註解SpringMVCController
- SpringMVC 基於註解的Controller @RequestMapping @RequestParamSpringMVCControllerAPP
- Spring Cache快取註解Spring快取
- Spring @Transactional註解淺談Spring
- Spring中重要的註解Spring