java bean 慎用 is开头isXxx开头的属性,若必须得用,那么一定要记得 idea自动生成的 setter 和 getter会不标准,从而会引起问题,他自动生成后,需要手工再次进行修改,才可使用,要不然有可能引起各种问题
直接上例子:

然后用 Idea 自动生成 getter 和 setter
public class XyzBean {
//最普通的
private String name;
//Boolean类型,带is前缀(3处都要手工修改成标准的,若不手工修改,自己看后果)
private Boolean isHis;
//Boolean类型,没有is前缀(完全没有问题)
private Boolean noIs;
//String类型,带is前缀(完全没有问题)
private String isMan;
//Long类型,带is前缀,Integer一样,不举例了(完全没有问题)
private Long isLong;
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
//方法名这里少了is,应该是getIsHis
public Boolean getHis() {
return isHis;
}
//方法名这里少了is, 应该是 setIsSuccess
public void setHis(Boolean his) {//参数名,应该是 isHis
//这里又少了this关键字,应该是 this.isHis = isHis;
isHis = his;
}
public Boolean getNoIs() {
return noIs;
}
public void setNoIs(Boolean noIs) {
this.noIs = noIs;
}
public String getIsMan() {
return isMan;
}
public void setIsMan(String isMan) {
this.isMan = isMan;
}
public Long getIsLong() {
return isLong;
}
public void setIsLong(Long isLong) {
this.isLong = isLong;
}
}
假如用这个 XyzBean 做返回,我们把它 序列化成 json看下 会是什么样子的:
public class TestMain {
public static void main(String[] args) throws JsonProcessingException {
ObjectMapper objectMapper = new ObjectMapper();
XyzBean xyzBean = new XyzBean();
xyzBean.setName("我操");
xyzBean.setHis(true);
xyzBean.setNoIs(false);
xyzBean.setIsMan("yes");
xyzBean.setIsLong(1L);
System.out.println(objectMapper.writeValueAsString(xyzBean));
}
}
{"name":"我操","noIs":false,"isMan":"yes","isLong":1,"his":true}//根本就不存在 his 属性,我们都没有定义,怎么出来一个 这个
问题就出来了,属性名发生了变化,坑啊 草草草
解决方法,凡是 boolean 类型的 is开头的 不用 idea 自动生成,或生成后 自己手工修改3个地方。
我们修改下,再测试:


java bean 慎用 is开头isXxx开头的属性,若必须得用,那么一定要记得 idea自动生成的 setter 和 getter会不标准,从而会引起问题,他自动生成后,需要手工再次进行修改,才可使用,要不然有可能引起各种问题的更多相关文章
- Spring中用@Component、@Repository、@Service和 @Controller等标注的默认Bean名称会是小写开头的非限定类名
今天用调度平台去调用bean中的方法时,提示找不到bean.经查,发现是由于如果在标注上没有提供name属性值,则默认的bean名称是小写开头的,而不是大写开头的. 下面是其他文档参阅: 使用过滤器自 ...
- 【Spring】10、Spring中用@Component、@Repository、@Service和 @Controller等标注的默认Bean名称会是小写开头的非限定类名
@Service用于标注业务层组件(我们通常定义的service层就用这个) @Controller用于标注控制层组件(如struts中的action) @Repository用于标注数据访问组件,即 ...
- [转载]手工安全测试方法&修改建议
转载自: Web安全测试(一)-手工安全测试方法&修改建议 1.XSS(Cross-Site Script)跨站脚本攻击 XSS(Cross-Site Script):跨站脚本攻击. 它指的是 ...
- 什么是Java Bean
刚才看java中的注解,老是说注解引入的是个java Bean,那我就要问了,什么是Java Bean? 知乎引用:https://www.zhihu.com/question/19773379下杨博 ...
- Java bean与Spring、Spring MVC关系
Java Bean Java语言欠缺属性.事件.多重继承功能.所以,如果要在Java程序中实现一些面向对象编程的常见需求,只能手写大量胶水代码.Java Bean正是编写这套胶水代码的惯用模式或约定. ...
- Java bean 是个什么概念?
Java语言欠缺属性.事件.多重继承功能.所以,如果要在Java程序中实现一些面向对象编程的常见需求,只能手写大量胶水代码.Java Bean正是编写这套胶水代码的惯用模式或约定.这些约定包括getX ...
- 用大白话聊聊JavaSE -- 如何理解Java Bean(一)
首先,在开始本章之前,先说一个总的概念:所谓的Java Bean,就是一个java类,编译后成为了一个后缀名是 .class的文件.这就是Java Bean,很多初学者,包括当年的我自己,总是被这些专 ...
- 白话 Java Bean
所谓的Java Bean,就是一个java类,编译后成为了一个后缀名是 .class的文件.这就是Java Bean,不就是Java类吗? 1. 什么是 Java Bean? 很多培训机构在讲java ...
- Web安全测试(一)-手工安全测试方法&修改建议
常见问题 1.XSS(CrossSite Script)跨站脚本攻击 XSS(CrossSite Script)跨站脚本攻击.它指的是恶意攻击者往Web 页面里插入恶意 html代码,当用户浏览该页之 ...
- Java框架之Java Bean
链接 知乎https://www.zhihu.com/question/19773379 总结 符合一定规范的编写的Java类,不是一种技术,而是一种规范.大家对于这种规范,总结了很多开发技巧,工具函 ...
随机推荐
- 三、java连接mongo数据库
系列导航 一.linux单机版mongo安装(带密码验证) 二.mongo集群搭建 三.java连接mongo数据库 四.java对mongo数据库增删改查操作 五.mongo备份篇 mongoexp ...
- uniapp picker组件实现二级联动
https://blog.csdn.net/hxh_csdn/article/details/111504951 https://www.cnblogs.com/jstll/p/14149600.ht ...
- gitlab安装,移库,升级
概述 最近因为机房原因,需要把我们的本地代码库做移库操作. 针对gitlab的安装升级操作重新进行了梳理,记录一下. 环境 CENTOS6 CENTOS7 gitlab-ce-8.14.2 GITLA ...
- java基础-反射-day15
目录 1. 案例引入 2. Class 的理解 3. 反射的详细使用 4. Class 类都有哪些实例 5. 详细使用 6. 获取属性 7. 获取方法 8 获取类的 接口 注解 所在的包 9. 思考 ...
- cs 保研经验贴 | 英语口试
很多夏令营都有英语面试环节.但这其实是有迹可循的,多说几遍就熟练了. 无论是笔试面试,还是联系导师 联系 hr,这种自我推销的事情,都会越做越熟练的.希望发表也是如此吧-(来自博零菜鸟的碎碎念-) 目 ...
- @JsonIgnore 失效没起作用及 @JSONField(serialize = false)
项目中需要对接口返回的某一个字段进行屏蔽,返回给前端响应的时候,不显示某个字段. 第一时间想到在实体类屏蔽的属性字段上添加@JsonIgnore注解,但添加之后并没有起作用. 在网上搜索了下,使用 @ ...
- JavaScript合并多个数组
工作中经常会对数组进行合并,稍微总结一下常用的方法: concat JavaScript原生自带的函数,用法如下: let arr1 = [3, 5, 7]; let arr2 = [4, 78, 7 ...
- 07 - HTTP
HTTP 强烈推荐学习:HTTP | MDN 一 .基础概念 请求和响应报文 客户端发送一个请求报文给服务器,服务器根据请求报文中的信息进行处理,并将处理结果放入响应报文中返回给客户端. 请求报文结构 ...
- [转帖]OceanBase v4.2新增字符集GB18030_2022说明
OceanBase v4.2新增字符集GB18030_2022说明 https://open.oceanbase.com/blog/7698399520 1. 概述 GB18030 标准作为信息技术 ...
- [转帖]PG-用户|角色管理
https://www.cnblogs.com/binliubiao/p/14415203.html 1. 角色 决定发起连接的命令的初始访问权限.在PG中,角色和用户相当于是一样的对象.区别在于 ...