Create a gist now

Instantly share code, notes, and snippets.

What would you like to do?
access target behind spring proxy
// from
protected <T> T getTargetObject(Object proxy, Class<T> targetClass) throws Exception {
if (AopUtils.isJdkDynamicProxy(proxy)) {
return (T) ((Advised)proxy).getTargetSource().getTarget();
} else {
return (T) proxy; // expected to be cglib proxy then, which is simply a specialized class
// alternative for a proxied MultiResourceItemReader, beware works only if you configure StepScope with
// <bean class="org.springframework.batch.core.scope.StepScope" p:proxyTargetClass="true" />
if (proxy instanceof Advised) {
try {
Advised advised = (Advised) proxy;
Object obj = advised.getTargetSource().getTarget();
MultiResourceItemReader mrirTarget = (MultiResourceItemReader) obj;
// ... usage
} catch (Exception ex) {
throw new RuntimeException(ex);
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment