Example usage for org.springframework.aop.framework ProxyConfig setProxyTargetClass

List of usage examples for org.springframework.aop.framework ProxyConfig setProxyTargetClass

Introduction

In this page you can find the example usage for org.springframework.aop.framework ProxyConfig setProxyTargetClass.

Prototype

public void setProxyTargetClass(boolean proxyTargetClass) 

Source Link

Document

Set whether to proxy the target class directly, instead of just proxying specific interfaces.

Usage

From source file:com.ryantenney.metrics.spring.config.AnnotationDrivenBeanDefinitionParser.java

@Override
public BeanDefinition parse(Element element, ParserContext parserContext) {
    final Object source = parserContext.extractSource(element);

    final CompositeComponentDefinition compDefinition = new CompositeComponentDefinition(element.getTagName(),
            source);//  w  ww .  j a  va 2  s .  c om
    parserContext.pushContainingComponent(compDefinition);

    String metricsBeanName = element.getAttribute("metric-registry");
    if (!StringUtils.hasText(metricsBeanName)) {
        metricsBeanName = registerComponent(parserContext,
                build(MetricRegistry.class, source, ROLE_APPLICATION));
    }

    String healthCheckBeanName = element.getAttribute("health-check-registry");
    if (!StringUtils.hasText(healthCheckBeanName)) {
        healthCheckBeanName = registerComponent(parserContext,
                build(HealthCheckRegistry.class, source, ROLE_APPLICATION));
    }

    final ProxyConfig proxyConfig = new ProxyConfig();

    if (StringUtils.hasText(element.getAttribute("expose-proxy"))) {
        proxyConfig.setExposeProxy(Boolean.valueOf(element.getAttribute("expose-proxy")));
    }

    if (StringUtils.hasText(element.getAttribute("proxy-target-class"))) {
        proxyConfig.setProxyTargetClass(Boolean.valueOf(element.getAttribute("proxy-target-class")));
    }

    //@formatter:off

    registerComponent(parserContext,
            build(MetricsBeanPostProcessorFactory.class, source, ROLE_INFRASTRUCTURE)
                    .setFactoryMethod("exceptionMetered").addConstructorArgReference(metricsBeanName)
                    .addConstructorArgValue(proxyConfig));

    registerComponent(parserContext,
            build(MetricsBeanPostProcessorFactory.class, source, ROLE_INFRASTRUCTURE)
                    .setFactoryMethod("metered").addConstructorArgReference(metricsBeanName)
                    .addConstructorArgValue(proxyConfig));

    registerComponent(parserContext,
            build(MetricsBeanPostProcessorFactory.class, source, ROLE_INFRASTRUCTURE).setFactoryMethod("timed")
                    .addConstructorArgReference(metricsBeanName).addConstructorArgValue(proxyConfig));

    registerComponent(parserContext, build(MetricsBeanPostProcessorFactory.class, source, ROLE_INFRASTRUCTURE)
            .setFactoryMethod("gauge").addConstructorArgReference(metricsBeanName));

    registerComponent(parserContext, build(MetricsBeanPostProcessorFactory.class, source, ROLE_INFRASTRUCTURE)
            .setFactoryMethod("injectMetric").addConstructorArgReference(metricsBeanName));

    registerComponent(parserContext, build(MetricsBeanPostProcessorFactory.class, source, ROLE_INFRASTRUCTURE)
            .setFactoryMethod("healthCheck").addConstructorArgReference(healthCheckBeanName));

    //@formatter:on

    parserContext.popAndRegisterContainingComponent();

    return null;
}