← Каталог
Spring Framework — Расширение через `BeanPostProcessor` и `BeanFactoryPostProcessor`
Фрагмент из «Spring Framework»: Расширение через `BeanPostProcessor` и `BeanFactoryPostProcessor`.
@Component
public class LoggingBeanPostProcessor implements BeanPostProcessor {
@Override
public Object postProcessAfterInitialization(Object bean, String beanName) {
if (bean.getClass().isAnnotationPresent(Loggable.class)) {
return Proxy.newProxyInstance(
bean.getClass().getClassLoader(),
bean.getClass().getInterfaces(),
(proxy, method, args) -> {
log.info("Calling {} with {}", method.getName(), args);
return method.invoke(bean, args);
}
);
}
return bean;
}
} @Component
public class LoggingBeanPostProcessor implements BeanPostProcessor {
@Override
public Object postProcessAfterInitialization(Object bean, String beanName) {
if (bean.getClass().isAnnotationPresent(Loggable.class)) {
return Proxy.newProxyInstance(
bean.getClass().getClassLoader(),
bean.getClass().getInterfaces(),
(proxy, method, args) -> {
log.info("Calling {} with {}", method.getName(), args);
return method.invoke(bean, args);
}
);
}
return bean;
}
}