Sunny Sachdeva
Sunny Sachdeva

Reputation: 289

create custom annotations which would run before and after every method in Java

I have the following requirement: before each method, I need to perform some set-ups, and, after each method, I need to perform some clean-ups. For example, after each method is executed, I need to dump logs in SQL Server.

How can I create custom annotations for this type of repetitive tasks?

Please note that, due to certain design considerations, I cannot accommodate JUnit in my application.

Upvotes: 1

Views: 1811

Answers (1)

msknapp
msknapp

Reputation: 1685

It sounds like you are trying to recreate spring aspects, see this:

http://docs.spring.io/spring/docs/2.0.x/reference/aop.html

However, you may feel like adding a dependency on spring is too large an undertaking, you could consider just depending on aspectj:

http://www.eclipse.org/aspectj/

As a last alternative, you could make your class implement an interface, and then write a "wrapper" implementation of that interface, that merely wraps another implementation and does before/after logic. That is by far the simplest way to do this, and I do that all the time.

One last alternative is to use a duck typed proxy:

http://docs.oracle.com/javase/6/docs/api/java/lang/reflect/Proxy.html

However, I don't recommend doing that.

On a side note, I have never heard of a project that can't accomodate junit or some kind of testing framework. If you are not planning to write unit tests, you're going to have an exponentially tough time writing large applications.

Upvotes: 3

Related Questions