Spring@Repository@Service@Controller注解的区别

Posted 幽灵雾

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Spring@Repository@Service@Controller注解的区别相关的知识,希望对你有一定的参考价值。

【提问】

Spring的注解中,@Repository、@Service、@Controller注解有什么区别?

【解答】

三者均是@Component的派生注解,目的均是将类标记为需要构造并注入的Bean,@Repository,@Service,@Controller三者是用来标记一些特殊功能和用途的,并能够为编码进行明确的分层结构,为第三方框架留了很多的想象空间。
可以简单理解为:

@Repository、@Service,@Controller = {@Component +一些其他特殊功能}

具体区别:

1、标记用途不同

@Component 用来注解通用组件类
@Repository 用来注解持久层组件类,表示该组件用于对数据存储的处理
@Service 用来注解业务逻辑层组件类,表示该组件用于对业务逻辑的处理
@Repository 用来注解表现层组件类,表示该组件用于对交互展示的处理

2、附加功能不同

@Repository 能将所标注的类中抛出的数据访问异常封装为Spring的数据访问异常类型:Spring DataAccessException

@Service@Controller原声的Spring暂未对其做特殊处理

以上是关于Spring@Repository@Service@Controller注解的区别的主要内容,如果未能解决你的问题,请参考以下文章

Spring@Repository@Service@Controller注解的区别