MyMethodBeforeAdviceImpl.java
Код: Выделить всё
import org.springframework.aop.MethodBeforeAdvice;
import java.lang.reflect.Method;
public class MyMethodBeforeAdviceImpl implements MethodBeforeAdvice {
@Override
public void before(Method method, Object[] args, Object target) throws Throwable {
System.out.println("MyMethodBeforeAdviceImpl#before");
}
}
Код: Выделить всё
public interface MyService {
void serve();
}
Код: Выделить всё
public class MyServiceImpl implements MyService {
@Override
public void serve() {
System.out.println("MyServiceImpl#serve");
}
}
Код: Выделить всё
import org.springframework.aop.MethodBeforeAdvice;
import org.springframework.aop.framework.ProxyFactory;
import org.springframework.aop.framework.ProxyFactoryBean;
public class App {
public static void main(String[] args) {
final MyServiceImpl myService = new MyServiceImpl();
final MethodBeforeAdvice myMethodBeforeAdvice = new MyMethodBeforeAdviceImpl();
final ProxyFactory proxyFactory = new ProxyFactory();
proxyFactory.addAdvice(myMethodBeforeAdvice);
proxyFactory.setTarget(myService);
MyService proxyServiceFromFactory = (MyService) proxyFactory.getProxy();
proxyServiceFromFactory.serve();
final ProxyFactoryBean proxyFactoryBean = new ProxyFactoryBean();
proxyFactoryBean.addAdvice(myMethodBeforeAdvice);
proxyFactoryBean.setTarget(myService);
MyService proxyServiceFromFactoryBean = (MyService) proxyFactoryBean.getObject();
proxyServiceFromFactoryBean.serve();
System.exit(-1);
}
}
Код: Выделить всё
MyMethodBeforeAdviceImpl#before
MyServiceImpl#serve
MyMethodBeforeAdviceImpl#before
MyServiceImpl#serve
Фабрика для прокси-серверов AOP для программного использования, а не посредством
декларативной настройки в фабрике компонентов. Этот класс предоставляет простой способ
получения и настройки экземпляров прокси-сервера AOP в пользовательском коде.
Но мне так кажется как будто вы можете использовать ProxyFactoryBean для той же цели?
Как эти два класса служат разным целям?
Подробнее здесь: https://stackoverflow.com/questions/471 ... ring-frame
Мобильная версия