Что такое «Весенний способ» кода, написанный в Javassist. Я знаю, что Spring использует CGLib, но я уверен, что для весеннего мира есть несколько полезных хороших практик.Весенний путь Javassist
ProxyFactory factory = new ProxyFactory();
factory.setSuperclass(Dog.class);
factory.setFilter(
new MethodFilter() {
@Override
public boolean isHandled(Method method) {
return Modifier.isAbstract(method.getModifiers());
}
}
);
MethodHandler handler = new MethodHandler() {
@Override
public Object invoke(Object self, Method thisMethod, Method proceed, Object[] args) throws Throwable {
System.out.println("Handling " + thisMethod + " via the method handler");
return null;
}
};
Dog dog = (Dog) factory.create(new Class<?>[0], new Object[0], handler);
dog.bark();
dog.fetch();
Который производит этот выход:
Woof!
Handling public abstract void mock.Dog.fetch() via the method handler
Edit:
В настоящее время я использую CGLIB Enhancer, которая включена в Spring 3.2.x и я в сомнении о удобном способе и лучше практики.
Edit:
Я должен сказать, что мои прокси-классы не весной бобы. Весной они не управляются.
Мой вопрос был упрощенной версией моего требования. На самом деле мне нужен способ создания некоторых классов прокси по запросу. Трудная часть состоит в том, что это абстрактный класс. – Cemo