public T getObject() throws Exception {
    final T mapper = getSqlSession().getMapper(this.mapperInterface);

    return Reflection.newProxy(this.mapperInterface, new InvocationHandler() {
      @Override
      public Object invoke(Object proxy, Method method, Object[] args) throws Throwable {
        long start = System.currentTimeMillis();
        TraceContext rpc = TraceContext.get();
        String parameters = getParameters(args);
        String iface = MapperFactoryBean.this.iface;
        rpc.reset().inc().setStamp(start).setIface(iface).setMethod(method.getName()).setParameter(parameters);
        try {
          return method.invoke(mapper, args);
        } catch (Exception e) {
          rpc.setFail(true).setReason(e.getMessage());
          LOG.error("{}.{}({})", iface, method.getName(), parameters, e);
          throw e;
        } finally {
          rpc.setCost(System.currentTimeMillis() - start);
          TraceRecorder.getInstance().post(rpc.copy());
        }
      }
    });
  }
public T getObject ( ) throws Exception { final T mapper = getSqlSession ( ) . getMapper ( this . mapperInterface ) ; return Reflection . newProxy ( this . mapperInterface , new InvocationHandler ( ) { @ Override public Object invoke ( Object proxy , Method method , Object [ ] args ) throws Throwable { long start = System . currentTimeMillis ( ) ; TraceContext rpc = TraceContext . get ( ) ; String parameters = getParameters ( args ) ; String iface = MapperFactoryBean . this . iface ; rpc . reset ( ) . inc ( ) . setStamp ( start ) . setIface ( iface ) . setMethod ( method . getName ( ) ) . setParameter ( parameters ) ; try { return method . invoke ( mapper , args ) ; } catch ( Exception e ) { rpc . setFail ( true ) . setReason ( e . getMessage ( ) ) ; LOG . error ( "{}.{}({})" , iface , method . getName ( ) , parameters , e ) ; throw e ; } finally { rpc . setCost ( System . currentTimeMillis ( ) - start ) ; TraceRecorder . getInstance ( ) . post ( rpc . copy ( ) ) ; } } } ) ; }
{@inheritDoc}