<dependency>
<groupId>org.alchemy</groupId>
<artifactId>alchemy-annotations</artifactId>
<version>1.0.0</version>
</dependency>
import java.lang.annotation.ElementType;
import java.lang.annotation.Retention;
import java.lang.annotation.RetentionPolicy;
import java.lang.annotation.Target;
@Retention(RetentionPolicy.RUNTIME)
@Target(ElementType.METHOD)
public @interface Loggable {
}
public class Calculator {
@Loggable
public int add(int a, int b) {
return a + b;
}
}
import org.alchemy.annotations.runtime.MethodProcessor;
import org.alchemy.annotations.runtime.MetaObject;
public class LoggableProcessor implements MethodProcessor {
@Override
public void process(MetaObject metaObject) {
if (metaObject.isAnnotationPresent(Loggable.class)) {
System.out.println("Logging method: " + metaObject.getName());
}
}
}
import org.alchemy.annotations.runtime.ProcessorRegistry;
public class Main {
public static void main(String[] args) {
ProcessorRegistry.registerProcessor(new LoggableProcessor());
Calculator calculator = new Calculator();
calculator.add(2, 3);
}
}
Logging method: add