Spring学习过程思考的两个问题
来源:互联网 发布:玩客云抢购软件3.0 编辑:程序博客网 时间:2024/06/12 00:57
最近在学习Spring的过程中,思考了很多问题。如下列举两个,有兴趣的同胞们一起想想:
问题区:
1·在标识表现层组件(controller文件)的@Controller注解上,修改为其它spring注解,如@Component,这样可行吗?
同样,在@Service的注解上,更改为其它注解,这样可行吗?
2·Mybatis和Spring结合是如何实现把DAO接口直接注入到Service层中的?
——————————————————————————————————
答案区:
1·不可行;可行
解析:
A网上解释:SpringMVC的定制功能:
在注入Spring的容器后,再取出来做自己定制的功能,Spring-MVC就是使用这样的方法。AbstractDetectingUrlHandlerMapping 中的 detectHandlers方法,这个方法取出了所有的bean,然后循环查找带有Controller的bean,并提取其中的RequestMapping信息
B自己理解:这就是SpringMVC的独特之处,因为它是一个前端控制器,它要做的就是根据请求的url来转发到相应的controller上的requestMapping里,如果换成spring其它的注解,detectHandlers方法就不会扫描到这个类,更不用谈requestMapping的注解了,so,404错误就出来了。
而在业务层上的@service注解换成spring可识别的其它注解也可行的原因在于:这个注解完成的工作是:被spring容器扫描后管理,能够被controller注入即可。
2·
网上答案:
配置文件中的MapperScannerConfigurer
自动扫描制定位置的Mapper接口,然后自动生成代理类,实现接口内容。这样在调用接口的时候,实际上是通过代理类去调用mybatis的xml中的sql语句。
<bean class="org.mybatis.spring.mapper.MapperScannerConfigurer"><propertyname="basePackage" value="org.mybatis.spring.sample.mapper"/></bean>
这段配置会扫描org.mybatis.spring.sample.mapper下的所有接口,然后创建各自接口的动态代理类。所以,只要在spring的配置文件中配置以上内容后,在service层直接注入mapper即可。
现在的关键便是Mybatis的MapperScannerConfigurer类是关键点了,在博客《Mybatis MapperScannerConfigurer 自动扫描 将Mapper接口生成代理注入到Spring》中给出很好的解释,但自己的理解还没到位,有兴趣的伙伴们可以一起交流。
- Spring学习过程思考的两个问题
- 学习SVM过程思考过的问题
- 两个多线程笔试问题引发的思考
- 两个问题的调试过程
- LeetCode Single Number I & II 都符合两个问题额外要求的 通用解法 与 思考过程
- LeetCode Single Number I & II 都符合两个问题额外要求的 通用解法 与 思考过程
- LeetCode Single Number I & II 都符合两个问题额外要求的 通用解法 与 思考过程
- 用模式思考问题的过程
- 学习ios一段过程后的思考
- 学习过程中交流引发的思考
- 学习Spring Security的过程中遇到的问题汇总
- 关于KotLin,在学习的过程中还需要思考的问题
- 学习Spring过程中发现的一个怪问题
- Spring mvc学习过程遇到的问题总结(1)
- 两个理发店的思考
- 昨天晚上思考了两个问题
- 乔布斯成功的简单秘方,坚持思考两个问题
- 学习spring和spring mvc过程中遇到的一些问题
- Django 发送邮件
- hirbernate出现StackOverflowError
- Mysql 执行持久层操作时一些优化查询速度方法
- OpenCV 之 神经网络 (一)
- Swift3之UIView
- Spring学习过程思考的两个问题
- 创建nexus 并上传和使用自己的jar包
- Unity中的C#与C++交互
- JNI DETECTED ERROR IN APPLICATION解决记录
- svn 的clean up 异常和删除操作
- spring boot 下 500 404 错误页面处理
- MySql学习一
- CSS
- 【扩展】SSM之配置quartz定时器