请问这个Converter是靠什么识别转换的?
1、如果编写了多个自定义转换器类,MyDateConverter,MyLongConverter,MyIntegerConverter...
配置文件中set集合也添加了所有自定义转换器类,是不是只要传入类型与返回类型的关系匹配上以后,就会自动转换? 如果是的话,那因为请求参数传入类型始终是字符串,返回类型如果与Controller方法类型不匹配,比如Long,本来可以自动转换的,但此时因为手动写了MyLongConverter,那个原来自动将字符串“123456”转换为Long型的123456,是不是失效了?
2、如果自定义的两个转换器,它们的重写方法convert()的参数类型与返回类型都相同,但是功能不同,spring会如何判断使用哪个转换器?
正在回答
同学你好,Converter是根据controller中参数的数据类型来进行匹配的,例如在Converter类的泛型中写的是“<String,Long>”,那么当参数中存在Long类型的参数时,就会根据Converter来进行转换。如果恰好两个Converter类的泛型写的完全一样,在<property name="converters">标签内部就不应当使用set标签,而是list标签,并且会按照声明的顺序来生效。
如果恰好在转换的时候,例如转换为Long类型的时候,既有可能使用A方案转换,也有可能使用B方案转换,那么不会使用Converter,而是直接String来接收参数,并单独调用封装了A方案或者B方案的转换方法。毕竟框架不是万能的,很多需要抉择的功能必须由程序设计者手动来指定。
祝学习愉快~
- 参与学习 2020 人
- 提交作业 1249 份
- 解答问题 1202 个
2024重磅革新,超百小时内容豪华升级,加速提升高级技能与高薪就业竞争力 课程紧贴企业最新人才需求,历经7年持续迭代,帮助万名学子入行转行 从零起点到高阶实战,学习路径稳健顺滑,成就从小白到工程师高薪
了解课程
恭喜解决一个难题,获得1积分~
来为老师/同学的回答评分吧
0 星