proxies are only necessary for remote imho,
everything else that is going to leave on the server should have pojo ref instrumentation through the Advisable interface. This is the major POJO point that all references will be instrumented
let's discuss this.
So you overwrite the class new() in principle it means that you don't need to instrument the calling class.
If you need to instrument the calling class (as in field interception) then there is a dramatic drawback as we need to manage dependencies of classes being loaded.
I feel that functionalty ref vs proxy are the same except that
ref allows for transparent instrumentation of the tree of data introduced in cache. We can then do recursive inclusion of CacheAdvice and essentially dynamically instrument refs. You mentioned that the proxy approach would be a problem in Person.getAdress() but I don't see the point as you overwrite the "new of Adress()" as well. Maybe I am missing it?
I like the mental picture of instrumenting the references it allows of dynamic instrumentation. Say you insert something in cache, say you hold on to that reference outside the lookup of the cache. I guess they are the same and I fail to see a clear case when one is easier than the other.
I like the idea of instrumenting existing references :) that is what I call "introducing aspects" in a live reference and fuck what others think introduction is :)