Interceptar llamadas de método anotado sin AOP

¿Es posible interceptar la ejecución de un método que está anotado con una anotación personalizada sin usar ningún marco de AOP como AspectJ, Spring AOP, Guice, etc.? Tengo curiosidad por saber si alguno de los apis java predeterminados puede ser utilizado para este propósito (como Reflection).

Gracias.

Respuesta 1

Puede usar la reflexión para invocar métodos, pero no puede usarlo para interceptar invocaciones de métodos. Del mismo modo, puede crear Proxies con controladores de invocación dinámica con la Proxyclase, pero no puede interceptar el código existente que no se dirige a un proxy.

Por tanto, la respuesta es no.

Respuesta: 2

No puede interceptar directamente las llamadas a métodos de métodos existentes sin conectarse, por ejemplo, a la lógica de instanciación. Un enfoque es separar la lógica de instanciación en una fábrica que pueda emplear, por ejemplo, un Proxy .

public class FooFactry() {
     private InvocationHandler handler;

     public FooFactory(InvocationHandler handler) {
         this.handler = handler;
     }

     public Foo newInstance() {
        return (Foo) Proxy.newProxyInstance(Foo.class.getClassLoader(),
                              new Class[] { Foo.class },
                              handler);
     }
}

Puede usar una costumbre InvocationHandlerpara interceptar cualquier método emitido el Foo. También puede crear su propio contenedor para evitar proxys dinámicos, class FooWrapper extends Foo{}para lograr el mismo resultado.

Respuesta: 3

Estoy tratando de hacer una aplicación que se conecte a un servicio web y llame funciones desde él. He trabajado en conexiones HTTP que afectarán al servidor. Este me enviará datos. Pero puedo golpear ...

Estoy usando RHEL 5.4 linux y estoy escribiendo mis primeros programas de prueba de Java. Java y Java vienen de manera predeterminada, por lo que he podido ejecutar un programa Hello World. Quiero comprobar cuál es el actual ...

Ya he trabajado en eventos de calendario y para cada evento la alarma debe sonar con una notificación. El problema al que me enfrento es que si configuro más de un evento, el último evento establecido solo está notificando al usuario ...

Soy nuevo en EasyMock. Necesito probar mi clase usando EasyMock. pero aquí el problema es que mi clase tiene una clase interna y esta clase interna se instala en el método de la clase externa y llama al ...