spring中使用@RequestBody,对应的bean中属性名大写注入为空的解决方法
2017-01-04 10:31
477 查看
最近做项目用到了spring的新特性@RequestBody,非常好用,客户端发送的json串直接给转换并且注入给bean,以前自己用都是按照SUN的java命名规范进行的项目开发,没发觉有什么异常。
给客户做项目,得按照客户的需求来,客户的需求是不受什么规范约束的,恰好客户给的需求是json串里面的变量名首字母全是大写,囧,如果按照常规java命名规则的话这是给class命名的方法。
等到做出几个接口之后,自己测试时,发现用@RequestBody死活将客户端传过来的变量赋不到相应的bean中,一时的感觉真是有点无奈,客户不按规则出牌,自己必须给他的不按规则买单。
经过思考,通常的Controller类是可以自己指定名字的,指定的方法就是@Controller("XXX"),那么与json串对应的bean里面的变量应该也是可以自用指定名字的,经过一番搜索终于找到了答案。
1.正确的处理方法:
给每个属性指定别名,指定的方法与controller类似,如下:
?
经过指定相应的名字后,我遇到的问题就被解决了。
2.分析出现错误的原因:
由于注入时,使用的是setName(...),setSex(...),按照java的命名规范,对应的变量,name和sex会被赋值,但是如果变量命名为Name和Sex的话,虽然生成的setter函数依然是setName(...),setSex(...),但是spring框架注入时就无法分辨到底是name还是Name,依然会按照命名规则来,所以依然会给name赋值,如果恰好没有按照命名规则来,使用的是Name的话,就无法完成注入。
3.结论:
编写java在没有其他原因的情况下,最还还是按照java编程规范来编写,毕竟是一套约定俗成的规则,大家都在按照这个规则在做事,如果不按常理出牌,那么出问题是不可避免的,出了这种问题解决起来也是相当的麻烦,毕竟spring框架不是谁都能改的。
给客户做项目,得按照客户的需求来,客户的需求是不受什么规范约束的,恰好客户给的需求是json串里面的变量名首字母全是大写,囧,如果按照常规java命名规则的话这是给class命名的方法。
等到做出几个接口之后,自己测试时,发现用@RequestBody死活将客户端传过来的变量赋不到相应的bean中,一时的感觉真是有点无奈,客户不按规则出牌,自己必须给他的不按规则买单。
经过思考,通常的Controller类是可以自己指定名字的,指定的方法就是@Controller("XXX"),那么与json串对应的bean里面的变量应该也是可以自用指定名字的,经过一番搜索终于找到了答案。
1.正确的处理方法:
给每个属性指定别名,指定的方法与controller类似,如下:
?
2.分析出现错误的原因:
由于注入时,使用的是setName(...),setSex(...),按照java的命名规范,对应的变量,name和sex会被赋值,但是如果变量命名为Name和Sex的话,虽然生成的setter函数依然是setName(...),setSex(...),但是spring框架注入时就无法分辨到底是name还是Name,依然会按照命名规则来,所以依然会给name赋值,如果恰好没有按照命名规则来,使用的是Name的话,就无法完成注入。
3.结论:
编写java在没有其他原因的情况下,最还还是按照java编程规范来编写,毕竟是一套约定俗成的规则,大家都在按照这个规则在做事,如果不按常理出牌,那么出问题是不可避免的,出了这种问题解决起来也是相当的麻烦,毕竟spring框架不是谁都能改的。
相关文章推荐
- spring中使用@RequestBody,对应的bean中属性名大写注入为空的解决方法
- spring中使用@RequestBody,对应的bean中属性名大写注入为空的解决方法
- spring对Filter和Servlet无法使用自动注入属性解决方法
- SpringMVC中出现" 400 Bad Request "错误(用@ResponseBody处理ajax传过来的json数据转成bean)的解决方法
- 使用Spring方法注入协调不同步的bean
- 使用springmvc @RequestBody 将form数据处理为Bean
- 在使用阿里的开源数据库同步服务otter时,使用Spring-Cache导致Spring找不到Bean方法时的解决方法
- SpringMVC中出现" 400 Bad Request "错误(用@ResponseBody处理ajax传过来的json数据转成bean)的解决方法
- spring 使用annotation 自动注册bean,并保证@Required,@Autowired的属性被注入
- Spring中使用Map、Set、List、数组、属性集合的注入方法配置文件
- 使用Spring配置shiro时,自定义Realm中属性无法使用注解注入解决办法
- SpringMVC中出现" 400 Bad Request "错误(用@ResponseBody处理ajax传过来的json数据转成bean)的解决方法
- Spring Bean 注入 1 - 构造方法注入,属性注入,自动装配
- 使用Spring方法注入协调不同步的bean
- 使用Spring配置shiro时,自定义Realm中属性无法使用注解注入解决办法
- Spring中使用Map、Set、List、数组、属性集合的注入方法配置文件
- Spring 4.2 方法注入解决单例Bean的原型Bean依赖问题
- Spring使用session,request,global sessiong作用域出现异常解决方法
- Spring通过set方法注入Bean属性
- 使用Spring配置shiro时,自定义Realm中属性无法使用注解注入解决办法