晚安呀,我是MD224CH。
上周五正式发布了《我企图透过这首诗说你,T5800源标识符有多牛逼。》这首诗。
该文这种的几段叙述:
接着有位听众来问我:
是是不是把 JDK 源标识符中的带队标识符给注解掉的?
那个难题的确极好,归属于一个偶而用呵呵能起著良效的源标识符增容基本功。因此我下定决心写个该文来表明呵呵那个难题。
但那个基本功的确十分的单纯,单纯到一句话就能表知道,因此正像副标题说到的“言简意赅,单纯蛮横,但足够多称心”,这首诗也会十分的短。
具体来说,把难题换个TNUMBERAP,难道我能把源标识符注解了,那表明我能修正源标识符。因此,难题就变为了:我是不是去修正 JDK 的源标识符呢?
那个难题有许多个提问,但我这儿的提问很单纯。把源标识符复本这份出,原模原貌的放一份到他们的工程项目中方可。
就像这种:
接着你在采用的这时候,间接用你 CV 回来的源标识符,要是:
但我通常采用那个方式的这时候,CV 回来时,会把类中文名称重新命名呵呵,以之界定,其它的啥都不改。
再说无论是不是样吧,这种在你的工程项目里面有这份“源标识符”了,那个“源标识符”和 JDK 里面的源标识符一模一样,这种你就能随便进行修正了。
比如,我在调用 put 方式的这时候,加一点日志输出:
这种测试用例跑起来的这时候,就能间接输出你添加的内容:
你都能添加标识符了,注解标识符,甚至是修正标识符逻辑,那还不是手到擒来的事情吗?
对于一些比较复杂的场景,比如异步或者循环等等场景,当你想要在源标识符中加入输出语句方便进行学习和增容的这时候,你就可以用到这招。
这就是我这首诗要教你的两个有关 JDK 源标识符的增容基本功。
整体用处不大,但当你能想到用它的这时候,就是发挥良效的这时候。
难道话题都到这儿了,那么我再给你补充两个有关第三方框架的类似的增容基本功。
还是先举个例子。
比如我在工程项目中采用到了 @Async 注解,接着有两个自定义线程池,发起两个请求之后可以看到的确是采用了我的自定义线程池:
接着,难题就来了。
假设,我想让 @Async 注解支持 EL 表达式,也就是这种的写法:
目前,Spring 是不支持这种的配置的,当你这种配置并发起调用,会抛出这种的两个异常:
它会把 ${thread-pool.name} 认为是两个 Bean,接着 Spring 里面并没有这种的两个 Bean,因此抛出找不到 Bean 的异常。
那么是不是才能让 @Async 注解支持 EL 表达式呢?
我之前写过《舒服,给Spring贡献一波源标识符。》这首诗,里面用的就是那个案例,有兴趣的话可以去看看,我就不展开说了。
在该文里面,经过分析,我们知道只需要在 org.springframework.aop.interceptor.AsyncExecutionAspectSupport.findQualifiedExecutor(BeanFactory,String) 那个方式中,加入这几行标识符要是:
if(beanFactory instanceof ConfigurableBeanFactory) {
EmbeddedValueResolver embeddedValueResolver = new EmbeddedValueResolver((ConfigurableBeanFactory)beanFactory);
qualifier = embeddedValueResolver.resolveStringValue(qualifier);
}
但我当时采取的方案是透过 idea 的 Evaluate Expression 功能:
经过评论区提醒,其实用 CV 大法,更加间接、方便。
同样的道理,间接把 AsyncExecutionAspectSupport 那个类粘到我们他们的工程项目中去:
这儿需要注意的是,要保证包中文名称也一模一样,因为那个方式的底层逻辑是基于类加载机制实现的。
这种,我们就能针对我们他们工程项目中的 AsyncExecutionAspectSupport 类进行修正:
再次发起调用,这事儿就算成了:
那个方式,适用于任何你能拿到源标识符的任何第三方框架。
虽然,许多第三方框架里面都会主动留下足够多多的扩展点,以便采用者进行定制化开发。
因此我提供的那个方式好像用处并不是很大,但我当年看 Dubbo 源标识符的这时候,就是这种的看的。
就像这种,在源标识符里面加入了大量的输出语句,接着基于输出语句去做分析:
虽然现在想起来,更加正确的操作应该是基于它的 SPI 机制去做。
但,管它呢,再说当时我就是靠这种歪门邪道,也看的明知道白的。
好了,以上就本文的全部内容。
突出的就是两个言简意赅,单纯蛮横,又足够多称心。
玩去吧。
荒腔走板
周末玩了两天《塞尔达:王国之泪》,是真的好玩。
新技能完全释放了玩家们的创造力,当 Max 同学在海拉鲁大陆上采用两个木棍、四个轮子、一块板子、两个风扇造出归属于他们的第一辆车的这时候,简直是开心麻了,走到哪儿都要把车开上,走到哪儿都想着能不能搞个车出。
游戏中提供出的这种创造力,对于游戏开发者来说,他们肯定也不知道玩家基于他们开发的功能,最后会造出什么”离了大谱“的东西。
我在 B 站上也看到一些玩家的创造性视频,太夸张了,简直是掀起了海拉鲁大陆上的”工业革命“,飞机都有了,高达也不远了。
正像我在这首诗里面写的:过节了!耍疯了!开心麻了!
“这游戏才卖你 300 多,真的是太亏了。”
··············END··············
推荐👍:扯下@EventListener这个注解的神秘面纱。
你好呀,我是歪歪。我没进过一线大厂,没创过业,也没写过书,更不是技术专家,所以也没有什么亮眼的title。
当年高考,随缘调剂到了某二本院校计算机专业。纯属误打误撞,进入程序员的行列,之后开始了运气爆棚的程序员之路。
说起程序员之路还是有点意思,可以点击蓝字,查看我的程序员之路。