动态代理
hutool介绍页面中涉及了hutool对JDK动态代理的封装支持
https://github.com/dromara/hutool
查看在组件hutool下的InvocationHandler
实现
其中存在有四个类对其进行了实现,具体如下:
分别查看这四个类的invoke
方法实现,存在有以下利用的可能
JdkInterceptor
在其invoke方法的实现中,其能够反射调用代理类的对应方法,这个类和在spring-aop
中的一个比较常用的代理类JdkDynamicAopProxy
的作用相同,均能够反射调用代理对象的方法,下图为JdkDynamicAopProxy#invoke
的实现
-
这类代理类在JSON1链中也存在身影
-
同样在https://mp.weixin.qq.com/s/gl8lCAZq-8lMsMZ3_uWL2Q文中绕过高版本的getter触发问题是,也采用了代理类的方式进行绕过,类似的,这里我们也可以利用
JdkInterceptor
类进行绕过可将其换成JdkInterceptor类
-
还有就是在处理jackson getter触发不稳定是,通过代理目标对象进行更稳定的getter触发
同样可以替换成JdkInterceptor类进行处理
-
...
JDBC
其同样存在有数据库相关支持,全局搜索getDataSource
调用
在hutool组件中存在有15个类存在getDataSource
方法的实现
AbstractDSFactory
这里将会调用createDataSource
创建一个数据源
核心是
-
从
setting
属性中取出数据库的相关配置config -
从获取的数据库相关配置中获取键为
url
或者jdbcUrl
的值,作为后续JDBC连接的JDBC连接串 -
使用
createDataSource
进行DataSource对象的创建 -
并将其包装成
DataSourceWrapper
对象,后续将会调用其getConnection方法进行数据库的连接
寻找该抽象类的实现:
-
BeeDSFactory
:需要存在有beecp依赖 -
C3p0DSFactory
:需要有c3p0的依赖后续可以通过调用
ComboPooledDataSource#getConnection
方法触发JDBC连接 -
DbcpDSFactory
:需要具有dbcp2依赖后续通过
BasicDataSource#getConnnection
触发JDBC连接 -
....
-
JndiDSFactory
:不需要三方依赖从传入的
Setting
4A评测 - 免责申明
本站提供的一切软件、教程和内容信息仅限用于学习和研究目的。
不得将上述内容用于商业或者非法用途,否则一切后果请用户自负。
本站信息来自网络,版权争议与本站无关。您必须在下载后的24个小时之内,从您的电脑或手机中彻底删除上述内容。
如果您喜欢该程序,请支持正版,购买注册,得到更好的正版服务。如有侵权请邮件与我们联系处理。敬请谅解!
程序来源网络,不确保不包含木马病毒等危险内容,请在确保安全的情况下或使用虚拟机使用。
侵权违规投诉邮箱:4ablog168#gmail.com(#换成@)