四种注解底层实现有什么区别呢?
来源:5-3 基于注解初始化IoC容器
王小east
2022-12-09 23:35:00
四种注解底层实现有什么区别呢?
如果在service类上使用@Repository,或者在dao类上使用@Controller,会怎样呢?
1回答
好帮手慕小蓝
2022-12-10
同学你好~
1.除@Component外的三个注解,都是派生自@Component的,所以都具有实例化对象的功能。
2.@Controller:Spring会遍历扫描出来的所有bean,过滤出那些添加了注解@Controller的bean,将Controller中所有添加了注解@RequestMapping的方法解析出来封装成RequestMappingInfo存储到RequestMappingHandlerMapping中的mappingRegistry。后续请求到达时,会从mappingRegistry中查找能够处理该请求的方法。
3.@Repository:Spring会将加入过@Repository的类,注入时使用代理类的方式,而不是原生类。如果使用@Component就会使用原生类。
4.@Service:官网文档中有明确的说明,其与@Component没有本质区别。只不过在分层开发时,为了更加明确,所以通常使用@Service。
祝学习愉快~