open fun metricsInstrumentation()

in graphql-dgs-spring-boot-micrometer/src/main/kotlin/com/netflix/graphql/dgs/metrics/micrometer/DgsGraphQLMicrometerAutoConfiguration.kt [53:139]


    open fun metricsInstrumentation(
        dgsSchemaProvider: DgsSchemaProvider,
        meterRegistrySupplier: DgsMeterRegistrySupplier,
        tagsProvider: DgsGraphQLMetricsTagsProvider,
        properties: DgsGraphQLMetricsProperties,
        limitedTagMetricResolver: LimitedTagMetricResolver,
        optQuerySignatureRepository: Optional<QuerySignatureRepository>,
    ): DgsGraphQLMetricsInstrumentation =
        DgsGraphQLMetricsInstrumentation(
            schemaProvider = dgsSchemaProvider,
            registrySupplier = meterRegistrySupplier,
            tagsProvider = tagsProvider,
            properties = properties,
            limitedTagMetricResolver = limitedTagMetricResolver,
            optQuerySignatureRepository = optQuerySignatureRepository,
            autoTimer = PropertiesAutoTimer(properties.autotime),
        )

    @Bean
    @ConditionalOnProperty(
        prefix = "$AUTO_CONF_PREFIX.data-loader-instrumentation",
        name = ["enabled"],
        havingValue = "true",
        matchIfMissing = true,
    )
    open fun dataLoaderInstrumentationProvider(meterRegistrySupplier: DgsMeterRegistrySupplier): DgsDataLoaderInstrumentationProvider =
        DgsDataLoaderInstrumentationProvider(meterRegistrySupplier)

    @Bean
    open fun collatedMetricsTagsProvider(
        contextualTagCustomizer: Collection<DgsContextualTagCustomizer>,
        executionTagCustomizer: Collection<DgsExecutionTagCustomizer>,
        fieldFetchTagCustomizer: Collection<DgsFieldFetchTagCustomizer>,
    ): DgsGraphQLMetricsTagsProvider =
        DgsGraphQLCollatedMetricsTagsProvider(
            contextualTagCustomizer,
            executionTagCustomizer,
            fieldFetchTagCustomizer,
        )

    @Bean
    @ConditionalOnMissingBean
    open fun spectatorLimitedTagMetricResolve(properties: DgsGraphQLMetricsProperties): LimitedTagMetricResolver =
        SpectatorLimitedTagMetricResolver(properties.tags)

    @Configuration(proxyBeanMethods = false)
    @EnableConfigurationProperties(DgsGraphQLMetricsProperties::class)
    open class MetricsPropertiesConfiguration

    @Configuration
    @ConditionalOnProperty(
        prefix = AUTO_CONF_QUERY_SIG_PREFIX,
        name = ["enabled"],
        havingValue = "true",
        matchIfMissing = true,
    )
    open class QuerySignatureRepositoryConfiguration {
        companion object {
            const val AUTO_CONF_QUERY_SIG_CACHING_PREFIX = "$AUTO_CONF_QUERY_SIG_PREFIX.caching"
        }

        @Bean
        @ConditionalOnMissingBean(value = [QuerySignatureRepository::class])
        @ConditionalOnProperty(
            prefix = AUTO_CONF_QUERY_SIG_CACHING_PREFIX,
            name = ["enabled"],
            havingValue = "true",
            matchIfMissing = true,
        )
        open fun querySignatureCacheableRepository(
            properties: DgsGraphQLMetricsProperties,
            meterRegistrySupplier: DgsMeterRegistrySupplier,
            optCacheManager: Optional<CacheManager>,
        ): QuerySignatureRepository =
            CacheableQuerySignatureRepository(
                autoTimer = PropertiesAutoTimer(properties.autotime),
                meterRegistrySupplier = meterRegistrySupplier,
                optionalCacheManager = optCacheManager,
            )

        @Bean
        @ConditionalOnMissingBean(value = [QuerySignatureRepository::class])
        open fun simpleQuerySignatureRepository(
            properties: DgsGraphQLMetricsProperties,
            meterRegistrySupplier: DgsMeterRegistrySupplier,
        ): QuerySignatureRepository = SimpleQuerySignatureRepository(PropertiesAutoTimer(properties.autotime), meterRegistrySupplier)
    }