标签:AOP

使用AOP的方式修改第三方jar包中的源码

发表于2年前(Jul 5, 2016 5:03:49 PM)  阅读 900  评论 0

分类: Java

标签: AOP 拦截器 修改源码 类加载 切面

一个好的工具库,一般都会提供灵活的接口给用户进行修改和扩展,但还是会有没有考虑的情况,或者总有原因会促使我们去修改源码。这里,笔者主要是面对需要修改源码中一个类的一个方法的情况,其他情况都可以类似解决,只是复杂度的问题。

修改源码有几种方式,我们可以将修改编译后的class文件,替换原来jar包里面的class文件,这种方法不推荐使用。还一种办法就是在自己项目工程里面加入新的同名,同包的类,这样虚拟机会优先加载项目中的class,这是一种比较好的方式。不过这种方式有些情况也不适用,如自己发布了一个jar包,里面有一个class就是修改的第三方jar包源码,这时,很有可能编译或者运行时加载的class就不是你需要的那个class了。如果运行时加载的class不是你所需要的class,我们还可以通过配置启动命令,指定优先加载的jar包来修改类加载顺序,我们在weblogic使用jpa2.0的时候,经常需要修改优先加载的jar包。这样问题解决了,但是需要后期部署做一些额外操作,所以也不算完美。

最完美的方式就是使用aop机制。使用aop机制,我们

......

Spring配置多数据源进行数据同步

发表于3年前(Jan 20, 2015 4:59:00 PM)  阅读 4624  评论 4

分类: Java 数据库 案例

标签: 数据同步 annotation 多数据源 多事务 动态切换 AOP 反射 模型转换 AbstractRoutingDataSource PlatformTransactionManager

本文主要可以解决以下几个问题:

Spring如何配置多数据源、多事务,以及如何动态切换。

Spring AOP机制的运用,以及对同一个切面(Joint Point)多个处理方法(Advice)执行顺序的设置,即AOP的Order的设定。

自定义注解Annotation的实现以及使用。

使用Java反射机制配合Annotation实现异构模型之间的自动转换。