美文网首页
Java Reflection 学习

Java Reflection 学习

作者: 君子若莲 | 来源:发表于2018-05-04 18:50 被阅读7次

    四年前,从进入到现在公司的第一天起,就被告知,禁止使用反射,听说是之前发生过一起因为反射使用不当导致的生产事故,致使我对Java的反射没有过太多研究,虽然知道Spring也用到了反射,但很多细节没有去了解,最近一个关于日志的需求,用到了反射,在这里记录一下学习反射的过程。需求的场景是,我们给客户的业务系统提供了API,客户在调用API时当然会记录日志,我们在API内使用了logback,并且引入了logback的jar包,那么问题来了,经常会遇到引入的logback jar包和客户冲突的情况,所以api应该尽可能少的引入第三方依赖,为了解决这个问题,我们把logback进行了包重构,避免了jar包冲突的问题,但是也带来了新的问题,客户需要依赖我们重构之后的jar包,有些患有深度强迫症的客户偏要说,我已经引入了官方的logback 依赖,为什么还要用你重构之后的jar,你提供的这个是不是安全?跟领导讨论之后,决定提高API的灵活性,默认使用重构之后的logback,如果真遇到这种变态客户,就使用原生的logback依赖,这里就免不了要用到反射,代码里不能使用强引用(即引用带有完整包路径的class),而是需要程序在运行时判断是否能加载到重构之后的类,如果不能,就去加载原生的类,然后实例化,再调用对象的方法。未完待续。

    相关文章

      网友评论

          本文标题:Java Reflection 学习

          本文链接:https://www.haomeiwen.com/subject/ldhjrftx.html