1.首先让我们看看四大注释是啥
Spring给我们提供了四个注释用来表示Bean的存在,他们分别是@Component、@Service、@Constroller还有我们的@Repository
2.@Component
其中@Component是一个笼统的表示,只是用来表示他所标注的类是一个需要转为Bean的类,但他是什么层次的类我们并不知道,由于现在对系统‘分层’这个强定义观念的存在@Component在工程开发中出现几率几近于无
3.@Service、@Constroller
@Service、@Constroller,为什么把这两个注释放一块呢,因为这两个注释在工程中出场几率相当之高,Spring作为一款优秀的IOC容器,@Service注释的主要最用就是将service的类标示出来交由框架去创建(也就是常说的控制反转),而@Constroller 就不是了,@Constroller 出现的次数虽然也很多,但是跟@Service情况是不一样的,在Spring中@Constroller 通常作用在控制层,功能与 @Component 相同,也就是然并卵,我们之所以会在工程中看到大量的@Constroller注释,是因为SpringMVC框架运用@Constroller+@RequestMapping注释处理转发。故@Constroller在Spring框架中的作用也不是很大
4.@Repository
@Repository也就是今天的主角,标识于DAO类上,作用是将类识别为Bean,同时它还能将所标注的类中抛出的数据访问异常封装为 Spring 的数据访问异常类型
即他有两个作用:
1,高速扫描器这个类是个DAO类。
2,如果DAO类报错了,@Repository会吧错误信息转换成Spring 的数据访问异常。
Spring本身提供了一个丰富的并且是与具体的数据访问技术无关的数据访问异常结构,用于封装不同的持久层框架抛出的异常,使得异常独立于底层的框架,这点很优秀但是,现在的工程开发框架是以整合框架为主流比如说:SSH,SSM等,整合框架的好处是将不同的功能交由不同的框架来做,是的效率最优化,而在整合框架中DAO层并不是Spring的主场,所以@Repository其实也是一点用也没有
5.总结
@Component+@Constroller+@Repository=傻瓜三兄弟orSpring小透明
@Service加粗加斜加红都不能完全的表达出他的重要性