当前位置: 首页 > news >正文

南京百度快照优化排名苏州seo关键词优化报价

南京百度快照优化排名,苏州seo关键词优化报价,泰安五险一金的工作最新招聘,工商注册需要准备什么材料刚才写完了代码#xff0c;自测的时候#xff0c;出现了NPE问题。排查的时候发现是Lombok的坑#xff0c;以前也遇到过#xff0c;所以觉得有必要过来记录一下。我先描述一下现象#xff0c;我的代码里面订单服务A 需要调用缓存服务B#xff0c;服务B就是一个Bean#x… 刚才写完了代码自测的时候出现了NPE问题。排查的时候发现是Lombok的坑以前也遇到过所以觉得有必要过来记录一下。我先描述一下现象我的代码里面订单服务A 需要调用缓存服务B服务B就是一个Bean使用方式是这样的class ServiceA {//使用 Lombok 提供的setterSetterprivate ServiceB bXCacheService;public Data getData() {//这里出现了NPE问题bXCacheService.getSomeThing();}  }这个问题使用Lombok 的同学可能有人遇到过我用的是蚂蚁的SofaSpring也是类似的先说下bean初始化过程是通过反射调用set 方法初始化bean下面代码是我截取的部分代码Spring 中的初始化bean方法public void setValue(final Object object, Object valueToApply) throws Exception {//获取write方法实际就是setXXX方法final Method writeMethod  this.pd.getWriteMethod();if (!Modifier.isPublic(writeMethod.getDeclaringClass().getModifiers())  !writeMethod.isAccessible()) {if (System.getSecurityManager() ! null) {AccessController.doPrivileged(new PrivilegedActionObject() {Overridepublic Object run() {writeMethod.setAccessible(true);return null;}});} else {writeMethod.setAccessible(true);}}final Object value  valueToApply;if (System.getSecurityManager() ! null) {} else {// 通过反射 用set 方法注入属性writeMethod.invoke(getWrappedInstance(), value);} }问题就出在 Sofa 拼接 bean 变量 set 方法的方式例如如果我们希望初始化的 bean 名称为 cacheService那么 Sofa 拼接的 set 方法为 setCacheService也就是set 变量首字母大写剩余字符。但是如果 bean 名称是tCacheServicebean 首字母小写第二次字符是大写那 set 方法就变成了settCacheService当第二个字符是大写的时候set 不会设置变量 t 为大写 T。但是 Lombok 不是这样Lombok 的setter注解实现机制会让 tCacheService 的 setter 方法变成 setTCacheService(), 所以bean初始化的时候会找不到 WriteMethodbean注入失败报NPE问题。解决方法解决方法要么调整bean的命名方式不要让第二个字符是大写要么改变这种变量不使用Lombok 注入使用Idea / Eclipse 生成的setter 方法。也算是Lombok 和 Idea 生成 setter 方法的区别一般框架、中间件更偏向 Idea 的这种set 变量方式。另一个需要注意的问题还有一个不只是Lombok 要注意的点就是boolean 类型的变量严禁使用 is 开头因为无论是Lombok 还是Idea 默认生成的get 方法都是is打头丢掉多余的isset方法去掉is可能引发非预期的问题例如变量 boolean isOpen 和 变量 boolean open 变量的get方法名是一样的isOpen(); set 方法都是 setOpen(boolean isOpen);private boolean isOpen;public boolean isOpen() {return isOpen; }public void setOpen(boolean open) {isOpen  open; }常规编程规范里面会让返回值是 boolean 变量的方法名以 is开头但是变量本身不带is。// 开火开关  -- 集中参数中心配置项 private String fireSwitch; public boolean isOpenFire() {return StringUtils.equalsIgnoreCase( TRUE, fireSwitch); }往期推荐Java中List排序的3种方法面试官元素排序Comparable和Comparator有什么区别面试官HashSet是如何保证元素不重复的
http://www.zqtcl.cn/news/392238/

相关文章:

  • wordpress找回管理员密码网站关键词排名优化工具
  • 望城建设局网站网站建设与维护可行性报告
  • 免费php网站模板下载手机端网站如何优化
  • 自己做的网站 打开了没有图片注册工程公司名称大全
  • 做网站的团队业绩怎么写WordPress 去掉副标题
  • 学校网页网站模板wordpress更换域名还是之前链接
  • 市面上有什么搭建网站工作室石家庄做网站和宣传的
  • 视频图站主题 wordpress快速收录提交入口
  • 外贸视频网站投资理财网站开发
  • 专业建设网站多少钱铜川网站seo
  • 海外网站seo优化wordpress的代码逻辑
  • 怎样帮别人做网站哪有网站给光头强做面
  • 聊城营销网站建设价格网站设计论文框架
  • 成都哪家网站建设做得好介绍自己的家乡遵义网站建设
  • 阳春新农村建设网站欣赏网站
  • 永久免费企业网站建设杭州个人做网站
  • 博罗中山网站建设做网站的软件 知乎
  • 广州网站开发广州亦客网络解答wordpress换空间要改
  • 丽水企业网站开发企业erp系统是什么软件
  • 好看的网站设计个人发布信息的免费平台
  • 电商网站业务流程linux上传中文wordpress
  • 广州网站定制商家外贸seo网站推广
  • 许昌大成建设集团网站wordpress自动博客插件
  • wordpress网站地图插件中国来料加工网
  • 黑龙江做网站的公司上海企业网站建设公
  • 做公众号时图片的网站安徽建设工程造价信息网站
  • 网站开发的在淘宝上是什么类目深圳做网站的大公司
  • 手机网站 html5信阳哪里做网站
  • 网站服务器多少钱一月wordpress 博客宠物
  • 怎么制作网站游戏辽宁建设工程网