Home | 简体中文 | 繁体中文 | 杂文 | Github | 知乎专栏 | Facebook | Linkedin | Youtube | 打赏(Donations) | About
知乎专栏

1.25. Spring Boot Actuator

健康检查、审计、统计和监控

Maven 依赖

		
<dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-actuator</artifactId>
</dependency>		
		
		

1.25.1. 与 Spring Boot Actuator 有关的配置

application.properties

跨域配置

		
management.endpoints.web.cors.allowed-origins=https://example.com
management.endpoints.web.cors.allowed-methods=GET,POST		
		
		

禁用HTTP端点

如果您不想通过HTTP公开端点,则可以将管理端口设置为-1,如以下示例所示:

			
management.server.port=-1			
			
			

安全配置

			
security.basic.enabled=true
security.basic.path=/admin    #针对/admin路径进行认证
security.user.name=admin     #认证使用的用户名
security.user.password=password   #认证使用的密码
management.security.roles=SUPERUSER

management.port=11111   #actuator暴露接口使用的端口,为了和api接口使用的端口进行分离
management.context-path=/admin   #actuator暴露接口的前缀
management.security.enabled=true   #actuator是否需要安全保证

endpoints.metrics.sensitive=false   #actuator的metrics接口是否需要安全保证
endpoints.metrics.enabled=true

endpoints.health.sensitive=false  #actuator的health接口是否需要安全保证
endpoints.health.enabled=true			
			
			

修改 actuator 地址

		
management:
  endpoints:
    web:
      base-path: /monitor		
		
			

关机

配置文件中加入

		
management.endpoint.shutdown.enabled=true		
		
			
		
curl -X POST www.netkiller.cn:8080/actuator/shutdown	
		
			

actuator 接口

常规接口

		
neo@MacBook-Pro ~ % curl -s http://www.netkiller.cn:8080/actuator | jq
{
  "_links": {
    "self": {
      "href": "http://www.netkiller.cn:8080/actuator",
      "templated": false
    },
    "health": {
      "href": "http://www.netkiller.cn:8080/actuator/health",
      "templated": false
    },
    "health-component": {
      "href": "http://www.netkiller.cn:8080/actuator/health/{component}",
      "templated": true
    },
    "health-component-instance": {
      "href": "http://www.netkiller.cn:8080/actuator/health/{component}/{instance}",
      "templated": true
    },
    "info": {
      "href": "http://www.netkiller.cn:8080/actuator/info",
      "templated": false
    }
  }
}
		
		
		

暴漏所有接口

		
management:
  endpoints:
    web:
      exposure:
        include: "*"		
		
		

再次访问 /actuator

		
neo@MacBook-Pro-Neo ~/w/Architect (master)> curl -s https://www.netkiller.cn/actuator/ | jq
{
  "_links": {
    "self": {
      "href": "http://pre.ejiayou.com/ensd-channel-service/monitor",
      "templated": false
    },
    "archaius": {
      "href": "https://www.netkiller.cn/actuator/archaius",
      "templated": false
    },
    "nacosconfig": {
      "href": "https://www.netkiller.cn/actuator/nacosconfig",
      "templated": false
    },
    "nacosdiscovery": {
      "href": "https://www.netkiller.cn/actuator/nacosdiscovery",
      "templated": false
    },
    "auditevents": {
      "href": "https://www.netkiller.cn/actuator/auditevents",
      "templated": false
    },
    "beans": {
      "href": "https://www.netkiller.cn/actuator/beans",
      "templated": false
    },
    "caches-cache": {
      "href": "https://www.netkiller.cn/actuator/caches/{cache}",
      "templated": true
    },
    "caches": {
      "href": "https://www.netkiller.cn/actuator/caches",
      "templated": false
    },
    "health-component": {
      "href": "https://www.netkiller.cn/actuator/health/{component}",
      "templated": true
    },
    "health": {
      "href": "https://www.netkiller.cn/actuator/health",
      "templated": false
    },
    "health-component-instance": {
      "href": "https://www.netkiller.cn/actuator/health/{component}/{instance}",
      "templated": true
    },
    "conditions": {
      "href": "https://www.netkiller.cn/actuator/conditions",
      "templated": false
    },
    "configprops": {
      "href": "https://www.netkiller.cn/actuator/configprops",
      "templated": false
    },
    "env-toMatch": {
      "href": "https://www.netkiller.cn/actuator/env/{toMatch}",
      "templated": true
    },
    "env": {
      "href": "https://www.netkiller.cn/actuator/env",
      "templated": false
    },
    "info": {
      "href": "https://www.netkiller.cn/actuator/info",
      "templated": false
    },
    "loggers-name": {
      "href": "https://www.netkiller.cn/actuator/loggers/{name}",
      "templated": true
    },
    "loggers": {
      "href": "https://www.netkiller.cn/actuator/loggers",
      "templated": false
    },
    "heapdump": {
      "href": "https://www.netkiller.cn/actuator/heapdump",
      "templated": false
    },
    "threaddump": {
      "href": "https://www.netkiller.cn/actuator/threaddump",
      "templated": false
    },
    "metrics": {
      "href": "https://www.netkiller.cn/actuator/metrics",
      "templated": false
    },
    "metrics-requiredMetricName": {
      "href": "https://www.netkiller.cn/actuator/metrics/{requiredMetricName}",
      "templated": true
    },
    "scheduledtasks": {
      "href": "https://www.netkiller.cn/actuator/scheduledtasks",
      "templated": false
    },
    "httptrace": {
      "href": "https://www.netkiller.cn/actuator/httptrace",
      "templated": false
    },
    "mappings": {
      "href": "https://www.netkiller.cn/actuator/mappings",
      "templated": false
    },
    "refresh": {
      "href": "https://www.netkiller.cn/actuator/refresh",
      "templated": false
    },
    "features": {
      "href": "https://www.netkiller.cn/actuator/features",
      "templated": false
    },
    "service-registry": {
      "href": "https://www.netkiller.cn/actuator/service-registry",
      "templated": false
    }
  }
}		
		
		

Spring boot 2.3.0

		
neo@MacBook-Pro-M2 ~ % curl -s http://www.netkiller.cn:8080/actuator |jq
{
  "_links": {
    "self": {
      "href": "http://www.netkiller.cn:8080/actuator",
      "templated": false
    },
    "beans": {
      "href": "http://www.netkiller.cn:8080/actuator/beans",
      "templated": false
    },
    "caches-cache": {
      "href": "http://www.netkiller.cn:8080/actuator/caches/{cache}",
      "templated": true
    },
    "caches": {
      "href": "http://www.netkiller.cn:8080/actuator/caches",
      "templated": false
    },
    "health": {
      "href": "http://www.netkiller.cn:8080/actuator/health",
      "templated": false
    },
    "health-path": {
      "href": "http://www.netkiller.cn:8080/actuator/health/{*path}",
      "templated": true
    },
    "info": {
      "href": "http://www.netkiller.cn:8080/actuator/info",
      "templated": false
    },
    "conditions": {
      "href": "http://www.netkiller.cn:8080/actuator/conditions",
      "templated": false
    },
    "configprops": {
      "href": "http://www.netkiller.cn:8080/actuator/configprops",
      "templated": false
    },
    "configprops-prefix": {
      "href": "http://www.netkiller.cn:8080/actuator/configprops/{prefix}",
      "templated": true
    },
    "env": {
      "href": "http://www.netkiller.cn:8080/actuator/env",
      "templated": false
    },
    "env-toMatch": {
      "href": "http://www.netkiller.cn:8080/actuator/env/{toMatch}",
      "templated": true
    },
    "logfile": {
      "href": "http://www.netkiller.cn:8080/actuator/logfile",
      "templated": false
    },
    "loggers": {
      "href": "http://www.netkiller.cn:8080/actuator/loggers",
      "templated": false
    },
    "loggers-name": {
      "href": "http://www.netkiller.cn:8080/actuator/loggers/{name}",
      "templated": true
    },
    "heapdump": {
      "href": "http://www.netkiller.cn:8080/actuator/heapdump",
      "templated": false
    },
    "threaddump": {
      "href": "http://www.netkiller.cn:8080/actuator/threaddump",
      "templated": false
    },
    "metrics-requiredMetricName": {
      "href": "http://www.netkiller.cn:8080/actuator/metrics/{requiredMetricName}",
      "templated": true
    },
    "metrics": {
      "href": "http://www.netkiller.cn:8080/actuator/metrics",
      "templated": false
    },
    "scheduledtasks": {
      "href": "http://www.netkiller.cn:8080/actuator/scheduledtasks",
      "templated": false
    },
    "mappings": {
      "href": "http://www.netkiller.cn:8080/actuator/mappings",
      "templated": false
    }
  }
}		
		
		

1.25.2. 健康状态

curl www.netkiller.cn:8080/actuator/health

				
neo@MacBook-Pro ~ % curl -s http://www.netkiller.cn:8080/actuator/health | jq
{
  "status": "UP"
}
		
		

健康状态

详细的健康状态信息

			
management.endpoint.health.show-details=always			
			
			

			
neo@MacBook-Pro ~ % curl -s http://www.netkiller.cn:8080/actuator/health | jq
{
  "status": "UP",
  "details": {
    "diskSpace": {
      "status": "UP",
      "details": {
        "total": 250790436864,
        "free": 23556112384,
        "threshold": 10485760
      }
    }
  }
}			
			
			

1.25.2.1. 自定义健康检查

方案一
				
package cn.aigcsst.config;

import org.springframework.boot.health.contributor.AbstractHealthIndicator;
import org.springframework.boot.health.contributor.Health;
import org.springframework.stereotype.Component;

@Component
public class CustomHealthIndicator extends AbstractHealthIndicator {
    @Override
    protected void doHealthCheck(Health.Builder builder) throws Exception {
        builder.up().withDetail("netkiller", "OK");
//        builder.down().withDetail("Item", "xxx").withDetail("error", "xxxErrorCode");
    }
}
				
				
方案二
			
package cn.aigcsst.config;

import org.jspecify.annotations.Nullable;
import org.springframework.boot.health.contributor.Health;
import org.springframework.boot.health.contributor.HealthIndicator;
import org.springframework.stereotype.Component;

@Component
public class CustomHealthIndicator implements HealthIndicator {

    @Override
    public @Nullable Health health(boolean includeDetails) {
        return HealthIndicator.super.health(includeDetails);
    }

    @Override
    public @Nullable Health health() {
//        return null;
        // 执行自定义检查逻辑
        if (false) {
            // 健康状态为UP,可添加额外的详细信息
            return Health.up()
                    .withDetail("message", "订单服务连接正常")
                    .withDetail("version", "v1.0.0")
                    .withDetail("timestamp", System.currentTimeMillis())
                    .build();
        } else {
            // 健康状态为DOWN,添加错误信息
            return Health.down()
                    .withDetail("message", "订单服务连接失败")
                    .withDetail("error", "连接超时/服务未启动")
                    .build();
        }
    }
}

			
				

1.25.3. info 配置信息

application.properties 配置静态信息

返回 application.properties 文件中定义的 info 配置信息,如:

			
# info端点信息配置
info.app.name=spring-boot-example
info.app.version=v1.0.0		
			
			

			
neo@MacBook-Pro ~ % curl -s http://www.netkiller.cn:8080/actuator/info | jq   
{
  "app": {
    "name": "spring-boot-example",
    "version": "v1.0.0"
  }
}
			
			

动态信息

			
package cn.aigcsst.config;

import org.springframework.boot.actuate.info.Info;
import org.springframework.boot.actuate.info.InfoContributor;
import org.springframework.stereotype.Component;

import java.util.HashMap;
import java.util.Map;

@Component
public class CustomInfoContributor implements InfoContributor {

    @Override
    public void contribute(Info.Builder builder) {
        Map<String, Object> customInfo = new HashMap<>();
        customInfo.put("currentTime", System.currentTimeMillis());
        customInfo.put("serviceStatus", "running");
        customInfo.put("database", "MySQL 8.0");

        // 2. 将自定义信息添加到info端点
        builder.withDetail("custom", customInfo);
        // 也可以直接添加单个属性
        builder.withDetail("buildTime", "2025-01-01 10:00:00");
    }
}
			
			

输出信息

			
neo@Mac ~ % curl -s http://localhost:8080/actuator/info | jq
{
  "custom": {
    "currentTime": 1766126152379,
    "database": "MySQL 8.0",
    "serviceStatus": "running"
  },
  "buildTime": "2025-01-01 10:00:00"
}			
			
			

beans 信息

		
neo@MacBook-Pro-M2 ~ % curl -s http://www.netkiller.cn:8080/actuator/beans |jq       
{
  "contexts": {
    "watch-production": {
      "beans": {
        "spring.jpa-org.springframework.boot.autoconfigure.orm.jpa.JpaProperties": {
          "aliases": [],
          "scope": "singleton",
          "type": "org.springframework.boot.autoconfigure.orm.jpa.JpaProperties",
          "dependencies": []
        },
        "applicationTaskExecutor": {
          "aliases": [
            "taskExecutor"
          ],
          "scope": "singleton",
          "type": "org.springframework.scheduling.concurrent.ThreadPoolTaskExecutor",
          "resource": "class path resource [org/springframework/boot/autoconfigure/task/TaskExecutorConfigurations$TaskExecutorConfiguration.class]",
          "dependencies": [
            "org.springframework.boot.autoconfigure.task.TaskExecutorConfigurations$TaskExecutorConfiguration",
            "taskExecutorBuilder"
          ]
        },
        "healthEndpointGroups": {
          "aliases": [],
          "scope": "singleton",
          "type": "org.springframework.boot.actuate.autoconfigure.health.AutoConfiguredHealthEndpointGroups",
          "resource": "class path resource [org/springframework/boot/actuate/autoconfigure/health/HealthEndpointConfiguration.class]",
          "dependencies": [
            "org.springframework.boot.actuate.autoconfigure.health.HealthEndpointConfiguration",
            "org.springframework.boot.web.servlet.context.AnnotationConfigServletWebServerApplicationContext@18e36d14",
            "management.endpoint.health-org.springframework.boot.actuate.autoconfigure.health.HealthEndpointProperties"
          ]
        },
        "webConversionServiceProvider": {
          "aliases": [],
          "scope": "singleton",
          "type": "org.springdoc.core.providers.WebConversionServiceProvider",
          "resource": "class path resource [org/springdoc/core/configuration/SpringDocConfiguration$WebConversionServiceConfiguration.class]",
          "dependencies": [
            "org.springdoc.core.configuration.SpringDocConfiguration$WebConversionServiceConfiguration"
          ]
        },
        "management.endpoint.health-org.springframework.boot.actuate.autoconfigure.health.HealthEndpointProperties": {
          "aliases": [],
          "scope": "singleton",
          "type": "org.springframework.boot.actuate.autoconfigure.health.HealthEndpointProperties",
          "dependencies": []
        },
        "org.springframework.boot.autoconfigure.web.servlet.MultipartAutoConfiguration": {
          "aliases": [],
          "scope": "singleton",
          "type": "org.springframework.boot.autoconfigure.web.servlet.MultipartAutoConfiguration",
          "dependencies": [
            "spring.servlet.multipart-org.springframework.boot.autoconfigure.web.servlet.MultipartProperties"
          ]
        },
        "hikariDataSourceMeterBinder": {
          "aliases": [],
          "scope": "singleton",
          "type": "org.springframework.boot.actuate.autoconfigure.metrics.jdbc.DataSourcePoolMetricsAutoConfiguration$HikariDataSourceMetricsConfiguration$HikariDataSourceMeterBinder",
          "resource": "class path resource [org/springframework/boot/actuate/autoconfigure/metrics/jdbc/DataSourcePoolMetricsAutoConfiguration$HikariDataSourceMetricsConfiguration.class]",
          "dependencies": [
            "org.springframework.boot.actuate.autoconfigure.metrics.jdbc.DataSourcePoolMetricsAutoConfiguration$HikariDataSourceMetricsConfiguration"
          ]
        },
        "jdbcTemplate": {
          "aliases": [],
          "scope": "singleton",
          "type": "org.springframework.jdbc.core.JdbcTemplate",
          "resource": "class path resource [org/springframework/boot/autoconfigure/jdbc/JdbcTemplateConfiguration.class]",
          "dependencies": [
            "dataSourceScriptDatabaseInitializer",
            "org.springframework.boot.autoconfigure.jdbc.JdbcTemplateConfiguration",
            "dataSource",
            "spring.jdbc-org.springframework.boot.autoconfigure.jdbc.JdbcProperties"
          ]
        },
        "org.springframework.boot.actuate.autoconfigure.endpoint.web.WebEndpointAutoConfiguration": {
          "aliases": [],
          "scope": "singleton",
          "type": "org.springframework.boot.actuate.autoconfigure.endpoint.web.WebEndpointAutoConfiguration",
          "dependencies": [
            "org.springframework.boot.web.servlet.context.AnnotationConfigServletWebServerApplicationContext@18e36d14",
            "management.endpoints.web-org.springframework.boot.actuate.autoconfigure.endpoint.web.WebEndpointProperties"
          ]
        },
        "webEndpointPathMapper": {
          "aliases": [],
          "scope": "singleton",
          "type": "org.springframework.boot.actuate.autoconfigure.endpoint.web.MappingWebEndpointPathMapper",
          "resource": "class path resource [org/springframework/boot/actuate/autoconfigure/endpoint/web/WebEndpointAutoConfiguration.class]",
          "dependencies": [
            "org.springframework.boot.actuate.autoconfigure.endpoint.web.WebEndpointAutoConfiguration"
          ]
        },
        "org.springframework.boot.autoconfigure.orm.jpa.HibernateJpaConfiguration": {
          "aliases": [],
          "scope": "singleton",
          "type": "org.springframework.boot.autoconfigure.orm.jpa.HibernateJpaConfiguration",
          "dependencies": [
            "dataSource",
            "spring.jpa-org.springframework.boot.autoconfigure.orm.jpa.JpaProperties",
            "org.springframework.beans.factory.support.DefaultListableBeanFactory@37efd131",
            "spring.jpa.hibernate-org.springframework.boot.autoconfigure.orm.jpa.HibernateProperties"
          ]
        },
        "org.springframework.boot.actuate.autoconfigure.cache.CachesEndpointAutoConfiguration": {
          "aliases": [],
          "scope": "singleton",
          "type": "org.springframework.boot.actuate.autoconfigure.cache.CachesEndpointAutoConfiguration",
          "dependencies": []
        },
        "org.springframework.boot.autoconfigure.aop.AopAutoConfiguration$AspectJAutoProxyingConfiguration": {
          "aliases": [],
          "scope": "singleton",
          "type": "org.springframework.boot.autoconfigure.aop.AopAutoConfiguration$AspectJAutoProxyingConfiguration",
          "dependencies": []
        },
        "org.springframework.boot.autoconfigure.transaction.TransactionAutoConfiguration": {
          "aliases": [],
          "scope": "singleton",
          "type": "org.springframework.boot.autoconfigure.transaction.TransactionAutoConfiguration",
          "dependencies": []
        },
        "org.springframework.boot.autoconfigure.transaction.TransactionAutoConfiguration$EnableTransactionManagementConfiguration$CglibAutoProxyConfiguration": {
          "aliases": [],
          "scope": "singleton",
          "type": "org.springframework.boot.autoconfigure.transaction.TransactionAutoConfiguration$EnableTransactionManagementConfiguration$CglibAutoProxyConfiguration",
          "dependencies": []
        },
        "org.springframework.boot.autoconfigure.web.reactive.function.client.ClientHttpConnectorAutoConfiguration": {
          "aliases": [],
          "scope": "singleton",
          "type": "org.springframework.boot.autoconfigure.web.reactive.function.client.ClientHttpConnectorAutoConfiguration",
          "dependencies": []
        },
        "org.springdoc.webmvc.core.configuration.MultipleOpenApiSupportConfiguration": {
          "aliases": [],
          "scope": "singleton",
          "type": "org.springdoc.webmvc.core.configuration.MultipleOpenApiSupportConfiguration",
          "dependencies": []
        },
        "org.springframework.boot.actuate.autoconfigure.observation.web.client.WebClientObservationConfiguration": {
          "aliases": [],
          "scope": "singleton",
          "type": "org.springframework.boot.actuate.autoconfigure.observation.web.client.WebClientObservationConfiguration",
          "dependencies": []
        },
        "management.simple.metrics.export-org.springframework.boot.actuate.autoconfigure.metrics.export.simple.SimpleProperties": {
          "aliases": [],
          "scope": "singleton",
          "type": "org.springframework.boot.actuate.autoconfigure.metrics.export.simple.SimpleProperties",
          "dependencies": []
        },
        "beanNameViewResolver": {
          "aliases": [],
          "scope": "singleton",
          "type": "org.springframework.web.servlet.view.BeanNameViewResolver",
          "resource": "class path resource [org/springframework/boot/autoconfigure/web/servlet/error/ErrorMvcAutoConfiguration$WhitelabelErrorViewConfiguration.class]",
          "dependencies": [
            "org.springframework.boot.autoconfigure.web.servlet.error.ErrorMvcAutoConfiguration$WhitelabelErrorViewConfiguration"
          ]
        },
        "reactiveRedisTemplate": {
          "aliases": [],
          "scope": "singleton",
          "type": "org.springframework.data.redis.core.ReactiveRedisTemplate",
          "resource": "class path resource [org/springframework/boot/autoconfigure/data/redis/RedisReactiveAutoConfiguration.class]",
          "dependencies": [
            "org.springframework.boot.autoconfigure.data.redis.RedisReactiveAutoConfiguration",
            "redisConnectionFactory",
            "org.springframework.boot.web.servlet.context.AnnotationConfigServletWebServerApplicationContext@18e36d14"
          ]
        },
        "swaggerResourceResolver": {
          "aliases": [],
          "scope": "singleton",
          "type": "org.springdoc.webmvc.ui.SwaggerResourceResolver",
          "resource": "class path resource [org/springdoc/webmvc/ui/SwaggerConfig.class]",
          "dependencies": [
            "org.springdoc.webmvc.ui.SwaggerConfig",
            "org.springdoc.core.properties.SwaggerUiConfigProperties"
          ]
        },
        "org.springframework.boot.actuate.autoconfigure.endpoint.web.servlet.WebMvcEndpointManagementContextConfiguration": {
          "aliases": [],
          "scope": "singleton",
          "type": "org.springframework.boot.actuate.autoconfigure.endpoint.web.servlet.WebMvcEndpointManagementContextConfiguration",
          "dependencies": []
        },
        "viewResolver": {
          "aliases": [],
          "scope": "singleton",
          "type": "org.springframework.web.servlet.view.ContentNegotiatingViewResolver",
          "resource": "class path resource [org/springframework/boot/autoconfigure/web/servlet/WebMvcAutoConfiguration$WebMvcAutoConfigurationAdapter.class]",
          "dependencies": [
            "org.springframework.boot.autoconfigure.web.servlet.WebMvcAutoConfiguration$WebMvcAutoConfigurationAdapter",
            "org.springframework.beans.factory.support.DefaultListableBeanFactory@37efd131"
          ]
        },
        "toolsController": {
          "aliases": [],
          "scope": "singleton",
          "type": "cn.netkiller.controller.ToolsController",
          "resource": "URL [jar:nested:/app/watch-1.0-SNAPSHOT.jar/!BOOT-INF/classes/!/cn/netkiller/controller/ToolsController.class]",
          "dependencies": [
            "aliyunService",
            "psychoanalysisService",
            "baiduService",
            "audioService",
            "mqttService",
            "config"
          ]
        },
        "reactorResourceFactory": {
          "aliases": [],
          "scope": "singleton",
          "type": "org.springframework.http.client.ReactorResourceFactory",
          "resource": "class path resource [org/springframework/boot/autoconfigure/reactor/netty/ReactorNettyConfigurations$ReactorResourceFactoryConfiguration.class]",
          "dependencies": [
            "org.springframework.boot.autoconfigure.reactor.netty.ReactorNettyConfigurations$ReactorResourceFactoryConfiguration",
            "spring.reactor.netty-org.springframework.boot.autoconfigure.reactor.netty.ReactorNettyProperties"
          ]
        },
        "projectingArgumentResolverBeanPostProcessor": {
          "aliases": [],
          "scope": "singleton",
          "type": "org.springframework.data.web.config.ProjectingArgumentResolverRegistrar$ProjectingArgumentResolverBeanPostProcessor",
          "resource": "class path resource [org/springframework/data/web/config/ProjectingArgumentResolverRegistrar.class]",
          "dependencies": []
        },
        "tomcatServletWebServerFactoryCustomizer": {
          "aliases": [],
          "scope": "singleton",
          "type": "org.springframework.boot.autoconfigure.web.servlet.TomcatServletWebServerFactoryCustomizer",
          "resource": "class path resource [org/springframework/boot/autoconfigure/web/servlet/ServletWebServerFactoryAutoConfiguration.class]",
          "dependencies": [
            "org.springframework.boot.autoconfigure.web.servlet.ServletWebServerFactoryAutoConfiguration",
            "server-org.springframework.boot.autoconfigure.web.ServerProperties"
          ]
        },
        "server-org.springframework.boot.autoconfigure.web.ServerProperties": {
          "aliases": [],
          "scope": "singleton",
          "type": "org.springframework.boot.autoconfigure.web.ServerProperties",
          "dependencies": []
        },
        "redisConnectionDetails": {
          "aliases": [],
          "scope": "singleton",
          "type": "org.springframework.boot.autoconfigure.data.redis.PropertiesRedisConnectionDetails",
          "resource": "class path resource [org/springframework/boot/autoconfigure/data/redis/RedisAutoConfiguration.class]",
          "dependencies": [
            "org.springframework.boot.autoconfigure.data.redis.RedisAutoConfiguration",
            "spring.data.redis-org.springframework.boot.autoconfigure.data.redis.RedisProperties"
          ]
        },
        "messageConverters": {
          "aliases": [],
          "scope": "singleton",
          "type": "org.springframework.boot.autoconfigure.http.HttpMessageConverters",
          "resource": "class path resource [org/springframework/boot/autoconfigure/http/HttpMessageConvertersAutoConfiguration.class]",
          "dependencies": [
            "org.springframework.boot.autoconfigure.http.HttpMessageConvertersAutoConfiguration"
          ]
        },
        "websocketServletWebServerCustomizer": {
          "aliases": [],
          "scope": "singleton",
          "type": "org.springframework.boot.autoconfigure.websocket.servlet.TomcatWebSocketServletWebServerCustomizer",
          "resource": "class path resource [org/springframework/boot/autoconfigure/websocket/servlet/WebSocketServletAutoConfiguration$TomcatWebSocketConfiguration.class]",
          "dependencies": [
            "org.springframework.boot.autoconfigure.websocket.servlet.WebSocketServletAutoConfiguration$TomcatWebSocketConfiguration"
          ]
        },
        "configurationPropertiesReportEndpointWebExtension": {
          "aliases": [],
          "scope": "singleton",
          "type": "org.springframework.boot.actuate.context.properties.ConfigurationPropertiesReportEndpointWebExtension",
          "resource": "class path resource [org/springframework/boot/actuate/autoconfigure/context/properties/ConfigurationPropertiesReportEndpointAutoConfiguration.class]",
          "dependencies": [
            "org.springframework.boot.actuate.autoconfigure.context.properties.ConfigurationPropertiesReportEndpointAutoConfiguration",
            "configurationPropertiesReportEndpoint",
            "management.endpoint.configprops-org.springframework.boot.actuate.autoconfigure.context.properties.ConfigurationPropertiesReportEndpointProperties"
          ]
        },
        "redisCustomConversions": {
          "aliases": [],
          "scope": "singleton",
          "type": "org.springframework.data.redis.core.convert.RedisCustomConversions",
          "dependencies": []
        },
        "org.springframework.boot.autoconfigure.sql.init.SqlInitializationAutoConfiguration": {
          "aliases": [],
          "scope": "singleton",
          "type": "org.springframework.boot.autoconfigure.sql.init.SqlInitializationAutoConfiguration",
          "dependencies": []
        },
        "dataSourceScriptDatabaseInitializer": {
          "aliases": [],
          "scope": "singleton",
          "type": "org.springframework.boot.autoconfigure.sql.init.SqlDataSourceScriptDatabaseInitializer",
          "resource": "class path resource [org/springframework/boot/autoconfigure/sql/init/DataSourceInitializationConfiguration.class]",
          "dependencies": [
            "org.springframework.boot.autoconfigure.sql.init.DataSourceInitializationConfiguration",
            "dataSource",
            "spring.sql.init-org.springframework.boot.autoconfigure.sql.init.SqlInitializationProperties"
          ]
        },
        "meterRegistryPostProcessor": {
          "aliases": [],
          "scope": "singleton",
          "type": "org.springframework.boot.actuate.autoconfigure.metrics.MeterRegistryPostProcessor",
          "resource": "class path resource [org/springframework/boot/actuate/autoconfigure/metrics/MetricsAutoConfiguration.class]",
          "dependencies": [
            "org.springframework.boot.web.servlet.context.AnnotationConfigServletWebServerApplicationContext@18e36d14"
          ]
        },
        "org.springdoc.core.configuration.SpringDocSortConfiguration": {
          "aliases": [],
          "scope": "singleton",
          "type": "org.springdoc.core.configuration.SpringDocSortConfiguration",
          "dependencies": []
        },
        "org.springframework.boot.autoconfigure.jdbc.JdbcClientAutoConfiguration": {
          "aliases": [],
          "scope": "singleton",
          "type": "org.springframework.boot.autoconfigure.jdbc.JdbcClientAutoConfiguration",
          "dependencies": []
        },
        "endpointMediaTypes": {
          "aliases": [],
          "scope": "singleton",
          "type": "org.springframework.boot.actuate.endpoint.web.EndpointMediaTypes",
          "resource": "class path resource [org/springframework/boot/actuate/autoconfigure/endpoint/web/WebEndpointAutoConfiguration.class]",
          "dependencies": [
            "org.springframework.boot.actuate.autoconfigure.endpoint.web.WebEndpointAutoConfiguration"
          ]
        },
        "jvmCompilationMetrics": {
          "aliases": [],
          "scope": "singleton",
          "type": "io.micrometer.core.instrument.binder.jvm.JvmCompilationMetrics",
          "resource": "class path resource [org/springframework/boot/actuate/autoconfigure/metrics/JvmMetricsAutoConfiguration.class]",
          "dependencies": [
            "org.springframework.boot.actuate.autoconfigure.metrics.JvmMetricsAutoConfiguration"
          ]
        },
        "cacheMetricsRegistrar": {
          "aliases": [],
          "scope": "singleton",
          "type": "org.springframework.boot.actuate.metrics.cache.CacheMetricsRegistrar",
          "resource": "class path resource [org/springframework/boot/actuate/autoconfigure/metrics/cache/CacheMetricsRegistrarConfiguration.class]",
          "dependencies": [
            "org.springframework.boot.actuate.autoconfigure.metrics.cache.CacheMetricsRegistrarConfiguration"
          ]
        },
        "org.springframework.boot.actuate.autoconfigure.health.HealthEndpointWebExtensionConfiguration": {
          "aliases": [],
          "scope": "singleton",
          "type": "org.springframework.boot.actuate.autoconfigure.health.HealthEndpointWebExtensionConfiguration",
          "dependencies": []
        },
        "org.springframework.boot.autoconfigure.web.reactive.function.client.WebClientAutoConfiguration": {
          "aliases": [],
          "scope": "singleton",
          "type": "org.springframework.boot.autoconfigure.web.reactive.function.client.WebClientAutoConfiguration",
          "dependencies": []
        },
        "jdbcConnectionDetailsHikariBeanPostProcessor": {
          "aliases": [],
          "scope": "singleton",
          "type": "org.springframework.boot.autoconfigure.jdbc.HikariJdbcConnectionDetailsBeanPostProcessor",
          "resource": "class path resource [org/springframework/boot/autoconfigure/jdbc/DataSourceConfiguration$Hikari.class]",
          "dependencies": []
        },
        "org.springdoc.core.configuration.SpringDocKotlinConfiguration": {
          "aliases": [],
          "scope": "singleton",
          "type": "org.springdoc.core.configuration.SpringDocKotlinConfiguration",
          "dependencies": []
        },
        "spring.ssl-org.springframework.boot.autoconfigure.ssl.SslProperties": {
          "aliases": [],
          "scope": "singleton",
          "type": "org.springframework.boot.autoconfigure.ssl.SslProperties",
          "dependencies": []
        },
        "repositoryTagsProvider": {
          "aliases": [],
          "scope": "singleton",
          "type": "org.springframework.boot.actuate.metrics.data.DefaultRepositoryTagsProvider",
          "resource": "class path resource [org/springframework/boot/actuate/autoconfigure/metrics/data/RepositoryMetricsAutoConfiguration.class]",
          "dependencies": [
            "org.springframework.boot.actuate.autoconfigure.metrics.data.RepositoryMetricsAutoConfiguration"
          ]
        },
        "dbHealthContributor": {
          "aliases": [],
          "scope": "singleton",
          "type": "org.springframework.boot.actuate.jdbc.DataSourceHealthIndicator",
          "resource": "class path resource [org/springframework/boot/actuate/autoconfigure/jdbc/DataSourceHealthContributorAutoConfiguration.class]",
          "dependencies": [
            "org.springframework.boot.actuate.autoconfigure.jdbc.DataSourceHealthContributorAutoConfiguration",
            "dataSource",
            "management.health.db-org.springframework.boot.actuate.autoconfigure.jdbc.DataSourceHealthIndicatorProperties"
          ]
        },
        "dataSourcePoolMetadataMeterBinder": {
          "aliases": [],
          "scope": "singleton",
          "type": "org.springframework.boot.actuate.autoconfigure.metrics.jdbc.DataSourcePoolMetricsAutoConfiguration$DataSourcePoolMetadataMetricsConfiguration$DataSourcePoolMetadataMeterBinder",
          "resource": "class path resource [org/springframework/boot/actuate/autoconfigure/metrics/jdbc/DataSourcePoolMetricsAutoConfiguration$DataSourcePoolMetadataMetricsConfiguration.class]",
          "dependencies": [
            "org.springframework.boot.actuate.autoconfigure.metrics.jdbc.DataSourcePoolMetricsAutoConfiguration$DataSourcePoolMetadataMetricsConfiguration",
            "dataSource"
          ]
        },
        "webServerFactoryCustomizerBeanPostProcessor": {
          "aliases": [],
          "scope": "singleton",
          "type": "org.springframework.boot.web.server.WebServerFactoryCustomizerBeanPostProcessor",
          "dependencies": []
        },
        "metricsHttpClientUriTagFilter": {
          "aliases": [],
          "scope": "singleton",
          "type": "io.micrometer.core.instrument.config.MeterFilter$9",
          "resource": "class path resource [org/springframework/boot/actuate/autoconfigure/observation/web/client/HttpClientObservationsAutoConfiguration$MeterFilterConfiguration.class]",
          "dependencies": [
            "org.springframework.boot.actuate.autoconfigure.observation.web.client.HttpClientObservationsAutoConfiguration$MeterFilterConfiguration",
            "management.observations-org.springframework.boot.actuate.autoconfigure.observation.ObservationProperties",
            "management.metrics-org.springframework.boot.actuate.autoconfigure.metrics.MetricsProperties"
          ]
        },
        "timedAspect": {
          "aliases": [],
          "scope": "singleton",
          "type": "io.micrometer.core.aop.TimedAspect",
          "resource": "class path resource [org/springframework/boot/actuate/autoconfigure/metrics/MetricsAspectsAutoConfiguration.class]",
          "dependencies": [
            "org.springframework.boot.actuate.autoconfigure.metrics.MetricsAspectsAutoConfiguration",
            "simpleMeterRegistry"
          ]
        },
        "org.springframework.boot.autoconfigure.websocket.servlet.WebSocketServletAutoConfiguration": {
          "aliases": [],
          "scope": "singleton",
          "type": "org.springframework.boot.autoconfigure.websocket.servlet.WebSocketServletAutoConfiguration",
          "dependencies": []
        },
        "management.health.diskspace-org.springframework.boot.actuate.autoconfigure.system.DiskSpaceHealthIndicatorProperties": {
          "aliases": [],
          "scope": "singleton",
          "type": "org.springframework.boot.actuate.autoconfigure.system.DiskSpaceHealthIndicatorProperties",
          "dependencies": []
        },
        "org.springframework.boot.autoconfigure.gson.GsonAutoConfiguration": {
          "aliases": [],
          "scope": "singleton",
          "type": "org.springframework.boot.autoconfigure.gson.GsonAutoConfiguration",
          "dependencies": []
        },
        "controllerEndpointHandlerMapping": {
          "aliases": [],
          "scope": "singleton",
          "type": "org.springframework.boot.actuate.endpoint.web.servlet.ControllerEndpointHandlerMapping",
          "resource": "class path resource [org/springframework/boot/actuate/autoconfigure/endpoint/web/servlet/WebMvcEndpointManagementContextConfiguration.class]",
          "dependencies": [
            "org.springframework.boot.actuate.autoconfigure.endpoint.web.servlet.WebMvcEndpointManagementContextConfiguration",
            "controllerEndpointDiscoverer",
            "management.endpoints.web.cors-org.springframework.boot.actuate.autoconfigure.endpoint.web.CorsEndpointProperties",
            "management.endpoints.web-org.springframework.boot.actuate.autoconfigure.endpoint.web.WebEndpointProperties"
          ]
        },
        "webFluxSupportConverter": {
          "aliases": [],
          "scope": "singleton",
          "type": "org.springdoc.core.converters.WebFluxSupportConverter",
          "resource": "class path resource [org/springdoc/core/configuration/SpringDocConfiguration$SpringDocWebFluxSupportConfiguration.class]",
          "dependencies": [
            "org.springdoc.core.configuration.SpringDocConfiguration$SpringDocWebFluxSupportConfiguration",
            "springdocObjectMapperProvider"
          ]
        },
        "management.endpoint.env-org.springframework.boot.actuate.autoconfigure.env.EnvironmentEndpointProperties": {
          "aliases": [],
          "scope": "singleton",
          "type": "org.springframework.boot.actuate.autoconfigure.env.EnvironmentEndpointProperties",
          "dependencies": []
        },
        "org.springframework.boot.autoconfigure.jdbc.JdbcTemplateAutoConfiguration": {
          "aliases": [],
          "scope": "singleton",
          "type": "org.springframework.boot.autoconfigure.jdbc.JdbcTemplateAutoConfiguration",
          "dependencies": []
        },
        "org.springframework.boot.actuate.autoconfigure.management.ThreadDumpEndpointAutoConfiguration": {
          "aliases": [],
          "scope": "singleton",
          "type": "org.springframework.boot.actuate.autoconfigure.management.ThreadDumpEndpointAutoConfiguration",
          "dependencies": []
        },
        "org.springframework.boot.autoconfigure.availability.ApplicationAvailabilityAutoConfiguration": {
          "aliases": [],
          "scope": "singleton",
          "type": "org.springframework.boot.autoconfigure.availability.ApplicationAvailabilityAutoConfiguration",
          "dependencies": []
        },
        "config": {
          "aliases": [],
          "scope": "singleton",
          "type": "cn.netkiller.config.Config",
          "resource": "URL [jar:nested:/app/watch-1.0-SNAPSHOT.jar/!BOOT-INF/classes/!/cn/netkiller/config/Config.class]",
          "dependencies": []
        },
        "jdbcClient": {
          "aliases": [],
          "scope": "singleton",
          "type": "org.springframework.jdbc.core.simple.DefaultJdbcClient",
          "resource": "class path resource [org/springframework/boot/autoconfigure/jdbc/JdbcClientAutoConfiguration.class]",
          "dependencies": [
            "dataSourceScriptDatabaseInitializer",
            "org.springframework.boot.autoconfigure.jdbc.JdbcClientAutoConfiguration",
            "namedParameterJdbcTemplate"
          ]
        },
        "observabilitySchedulingConfigurer": {
          "aliases": [],
          "scope": "singleton",
          "type": "org.springframework.boot.actuate.autoconfigure.scheduling.ScheduledTasksObservabilityAutoConfiguration$ObservabilitySchedulingConfigurer",
          "resource": "class path resource [org/springframework/boot/actuate/autoconfigure/scheduling/ScheduledTasksObservabilityAutoConfiguration.class]",
          "dependencies": [
            "org.springframework.boot.actuate.autoconfigure.scheduling.ScheduledTasksObservabilityAutoConfiguration",
            "observationRegistry"
          ]
        },
        "metricsEndpoint": {
          "aliases": [],
          "scope": "singleton",
          "type": "org.springframework.boot.actuate.metrics.MetricsEndpoint",
          "resource": "class path resource [org/springframework/boot/actuate/autoconfigure/metrics/MetricsEndpointAutoConfiguration.class]",
          "dependencies": [
            "org.springframework.boot.actuate.autoconfigure.metrics.MetricsEndpointAutoConfiguration",
            "simpleMeterRegistry"
          ]
        },
        "management.observations-org.springframework.boot.actuate.autoconfigure.observation.ObservationProperties": {
          "aliases": [],
          "scope": "singleton",
          "type": "org.springframework.boot.actuate.autoconfigure.observation.ObservationProperties",
          "dependencies": []
        },
        "org.springframework.boot.autoconfigure.aop.AopAutoConfiguration": {
          "aliases": [],
          "scope": "singleton",
          "type": "org.springframework.boot.autoconfigure.aop.AopAutoConfiguration",
          "dependencies": []
        },
        "spring.cache-org.springframework.boot.autoconfigure.cache.CacheProperties": {
          "aliases": [],
          "scope": "singleton",
          "type": "org.springframework.boot.autoconfigure.cache.CacheProperties",
          "dependencies": []
        },
        "org.springframework.boot.actuate.autoconfigure.info.InfoContributorAutoConfiguration": {
          "aliases": [],
          "scope": "singleton",
          "type": "org.springframework.boot.actuate.autoconfigure.info.InfoContributorAutoConfiguration",
          "dependencies": []
        },
        "org.springframework.boot.actuate.autoconfigure.observation.ObservationAutoConfiguration$ObservedAspectConfiguration": {
          "aliases": [],
          "scope": "singleton",
          "type": "org.springframework.boot.actuate.autoconfigure.observation.ObservationAutoConfiguration$ObservedAspectConfiguration",
          "dependencies": []
        },
        "metricsObservationHandlerGrouping": {
          "aliases": [],
          "scope": "singleton",
          "type": "org.springframework.boot.actuate.autoconfigure.observation.ObservationHandlerGrouping",
          "resource": "class path resource [org/springframework/boot/actuate/autoconfigure/observation/ObservationAutoConfiguration$OnlyMetricsConfiguration.class]",
          "dependencies": [
            "org.springframework.boot.actuate.autoconfigure.observation.ObservationAutoConfiguration$OnlyMetricsConfiguration"
          ]
        },
        "org.springframework.boot.autoconfigure.web.servlet.ServletWebServerFactoryAutoConfiguration": {
          "aliases": [],
          "scope": "singleton",
          "type": "org.springframework.boot.autoconfigure.web.servlet.ServletWebServerFactoryAutoConfiguration",
          "dependencies": []
        },
        "spring.jpa.hibernate-org.springframework.boot.autoconfigure.orm.jpa.HibernateProperties": {
          "aliases": [],
          "scope": "singleton",
          "type": "org.springframework.boot.autoconfigure.orm.jpa.HibernateProperties",
          "dependencies": []
        },
        "environmentEndpoint": {
          "aliases": [],
          "scope": "singleton",
          "type": "org.springframework.boot.actuate.env.EnvironmentEndpoint",
          "resource": "class path resource [org/springframework/boot/actuate/autoconfigure/env/EnvironmentEndpointAutoConfiguration.class]",
          "dependencies": [
            "org.springframework.boot.actuate.autoconfigure.env.EnvironmentEndpointAutoConfiguration",
            "environment",
            "management.endpoint.env-org.springframework.boot.actuate.autoconfigure.env.EnvironmentEndpointProperties"
          ]
        },
        "kotlinCoroutinesReturnTypeParser": {
          "aliases": [],
          "scope": "singleton",
          "type": "org.springdoc.core.parsers.KotlinCoroutinesReturnTypeParser",
          "resource": "class path resource [org/springdoc/core/configuration/SpringDocKotlinConfiguration.class]",
          "dependencies": [
            "org.springdoc.core.configuration.SpringDocKotlinConfiguration"
          ]
        },
        "springDocCustomizers": {
          "aliases": [],
          "scope": "singleton",
          "type": "org.springdoc.core.customizers.SpringDocCustomizers",
          "resource": "class path resource [org/springdoc/core/configuration/SpringDocConfiguration.class]",
          "dependencies": [
            "org.springdoc.core.configuration.SpringDocConfiguration"
          ]
        },
        "jacksonCodecCustomizer": {
          "aliases": [],
          "scope": "singleton",
          "type": "org.springframework.boot.autoconfigure.http.codec.CodecsAutoConfiguration$JacksonCodecConfiguration$$Lambda/0x00007ff400a35068",
          "resource": "class path resource [org/springframework/boot/autoconfigure/http/codec/CodecsAutoConfiguration$JacksonCodecConfiguration.class]",
          "dependencies": [
            "org.springframework.boot.autoconfigure.http.codec.CodecsAutoConfiguration$JacksonCodecConfiguration",
            "jacksonObjectMapper"
          ]
        },
        "conventionErrorViewResolver": {
          "aliases": [],
          "scope": "singleton",
          "type": "org.springframework.boot.autoconfigure.web.servlet.error.DefaultErrorViewResolver",
          "resource": "class path resource [org/springframework/boot/autoconfigure/web/servlet/error/ErrorMvcAutoConfiguration$DefaultErrorViewResolverConfiguration.class]",
          "dependencies": [
            "org.springframework.boot.autoconfigure.web.servlet.error.ErrorMvcAutoConfiguration$DefaultErrorViewResolverConfiguration"
          ]
        },
        "org.springframework.boot.autoconfigure.web.servlet.WebMvcAutoConfiguration$EnableWebMvcConfiguration": {
          "aliases": [],
          "scope": "singleton",
          "type": "org.springframework.boot.autoconfigure.web.servlet.WebMvcAutoConfiguration$EnableWebMvcConfiguration",
          "dependencies": [
            "spring.mvc-org.springframework.boot.autoconfigure.web.servlet.WebMvcProperties",
            "spring.web-org.springframework.boot.autoconfigure.web.WebProperties",
            "org.springframework.beans.factory.support.DefaultListableBeanFactory@37efd131",
            "org.springframework.boot.autoconfigure.web.servlet.WebMvcAutoConfiguration$WebMvcAutoConfigurationAdapter",
            "swaggerWebMvcConfigurer",
            "org.springframework.data.web.config.SpringDataWebConfiguration",
            "endpointObjectMapperWebMvcConfigurer"
          ]
        },
        "org.springdoc.core.configuration.SpringDocConfiguration$OpenApiResourceAdvice": {
          "aliases": [],
          "scope": "singleton",
          "type": "org.springdoc.core.configuration.SpringDocConfiguration$OpenApiResourceAdvice",
          "dependencies": [
            "org.springdoc.core.configuration.SpringDocConfiguration"
          ]
        },
        "org.springframework.boot.actuate.autoconfigure.metrics.LogbackMetricsAutoConfiguration": {
          "aliases": [],
          "scope": "singleton",
          "type": "org.springframework.boot.actuate.autoconfigure.metrics.LogbackMetricsAutoConfiguration",
          "dependencies": []
        },
        "org.springframework.boot.actuate.autoconfigure.observation.web.client.HttpClientObservationsAutoConfiguration$MeterFilterConfiguration": {
          "aliases": [],
          "scope": "singleton",
          "type": "org.springframework.boot.actuate.autoconfigure.observation.web.client.HttpClientObservationsAutoConfiguration$MeterFilterConfiguration",
          "dependencies": []
        },
        "localeCharsetMappingsCustomizer": {
          "aliases": [],
          "scope": "singleton",
          "type": "org.springframework.boot.autoconfigure.web.servlet.HttpEncodingAutoConfiguration$LocaleCharsetMappingsCustomizer",
          "resource": "class path resource [org/springframework/boot/autoconfigure/web/servlet/HttpEncodingAutoConfiguration.class]",
          "dependencies": [
            "org.springframework.boot.autoconfigure.web.servlet.HttpEncodingAutoConfiguration"
          ]
        },
        "org.springframework.boot.actuate.autoconfigure.logging.LoggersEndpointAutoConfiguration": {
          "aliases": [],
          "scope": "singleton",
          "type": "org.springframework.boot.actuate.autoconfigure.logging.LoggersEndpointAutoConfiguration",
          "dependencies": []
        },
        "jsonMixinModuleEntries": {
          "aliases": [],
          "scope": "singleton",
          "type": "org.springframework.boot.jackson.JsonMixinModuleEntries",
          "resource": "class path resource [org/springframework/boot/autoconfigure/jackson/JacksonAutoConfiguration$JacksonMixinConfiguration.class]",
          "dependencies": [
            "org.springframework.boot.web.servlet.context.AnnotationConfigServletWebServerApplicationContext@18e36d14"
          ]
        },
        "formContentFilter": {
          "aliases": [],
          "scope": "singleton",
          "type": "org.springframework.boot.web.servlet.filter.OrderedFormContentFilter",
          "resource": "class path resource [org/springframework/boot/autoconfigure/web/servlet/WebMvcAutoConfiguration.class]",
          "dependencies": [
            "org.springframework.boot.autoconfigure.web.servlet.WebMvcAutoConfiguration"
          ]
        },
        "mockController": {
          "aliases": [],
          "scope": "singleton",
          "type": "cn.netkiller.controller.MockController",
          "resource": "URL [jar:nested:/app/watch-1.0-SNAPSHOT.jar/!BOOT-INF/classes/!/cn/netkiller/controller/MockController.class]",
          "dependencies": []
        },
        "pictureService": {
          "aliases": [],
          "scope": "singleton",
          "type": "cn.netkiller.service.PictureService",
          "resource": "URL [jar:nested:/app/watch-1.0-SNAPSHOT.jar/!BOOT-INF/classes/!/cn/netkiller/service/PictureService.class]",
          "dependencies": [
            "pictureRepository",
            "mqttService",
            "baiduService",
            "sessionStatusService"
          ]
        },
        "defaultViewResolver": {
          "aliases": [],
          "scope": "singleton",
          "type": "org.springframework.web.servlet.view.InternalResourceViewResolver",
          "resource": "class path resource [org/springframework/boot/autoconfigure/web/servlet/WebMvcAutoConfiguration$WebMvcAutoConfigurationAdapter.class]",
          "dependencies": [
            "org.springframework.boot.autoconfigure.web.servlet.WebMvcAutoConfiguration$WebMvcAutoConfigurationAdapter"
          ]
        },
        "keyValueMappingContext": {
          "aliases": [],
          "scope": "singleton",
          "type": "org.springframework.data.redis.core.mapping.RedisMappingContext",
          "dependencies": [
            "redisMappingConfiguration#0"
          ]
        },
        "org.springframework.boot.autoconfigure.transaction.TransactionAutoConfiguration$EnableTransactionManagementConfiguration": {
          "aliases": [],
          "scope": "singleton",
          "type": "org.springframework.boot.autoconfigure.transaction.TransactionAutoConfiguration$EnableTransactionManagementConfiguration",
          "dependencies": []
        },
        "routerFunctionMapping": {
          "aliases": [],
          "scope": "singleton",
          "type": "org.springframework.web.servlet.function.support.RouterFunctionMapping",
          "resource": "class path resource [org/springframework/boot/autoconfigure/web/servlet/WebMvcAutoConfiguration$EnableWebMvcConfiguration.class]",
          "dependencies": [
            "org.springframework.boot.autoconfigure.web.servlet.WebMvcAutoConfiguration$EnableWebMvcConfiguration",
            "mvcConversionService",
            "mvcResourceUrlProvider"
          ]
        },
        "jacksonObjectMapperBuilder": {
          "aliases": [],
          "scope": "prototype",
          "type": "org.springframework.http.converter.json.Jackson2ObjectMapperBuilder",
          "resource": "class path resource [org/springframework/boot/autoconfigure/jackson/JacksonAutoConfiguration$JacksonObjectMapperBuilderConfiguration.class]",
          "dependencies": [
            "org.springframework.boot.autoconfigure.jackson.JacksonAutoConfiguration$JacksonObjectMapperBuilderConfiguration",
            "org.springframework.boot.web.servlet.context.AnnotationConfigServletWebServerApplicationContext@18e36d14",
            "standardJacksonObjectMapperBuilderCustomizer"
          ]
        },
        "org.springframework.boot.autoconfigure.dao.PersistenceExceptionTranslationAutoConfiguration": {
          "aliases": [],
          "scope": "singleton",
          "type": "org.springframework.boot.autoconfigure.dao.PersistenceExceptionTranslationAutoConfiguration",
          "dependencies": []
        },
        "cacheManager": {
          "aliases": [],
          "scope": "singleton",
          "type": "org.springframework.data.redis.cache.RedisCacheManager",
          "resource": "class path resource [org/springframework/boot/autoconfigure/cache/RedisCacheConfiguration.class]",
          "dependencies": [
            "org.springframework.boot.autoconfigure.cache.RedisCacheConfiguration",
            "spring.cache-org.springframework.boot.autoconfigure.cache.CacheProperties",
            "cacheManagerCustomizers",
            "redisConnectionFactory",
            "org.springframework.boot.web.servlet.context.AnnotationConfigServletWebServerApplicationContext@18e36d14"
          ]
        },
        "spring.task.scheduling-org.springframework.boot.autoconfigure.task.TaskSchedulingProperties": {
          "aliases": [],
          "scope": "singleton",
          "type": "org.springframework.boot.autoconfigure.task.TaskSchedulingProperties",
          "dependencies": []
        },
        "spring.reactor-org.springframework.boot.autoconfigure.reactor.ReactorProperties": {
          "aliases": [],
          "scope": "singleton",
          "type": "org.springframework.boot.autoconfigure.reactor.ReactorProperties",
          "dependencies": []
        },
        "org.springframework.boot.autoconfigure.data.redis.RedisAutoConfiguration": {
          "aliases": [],
          "scope": "singleton",
          "type": "org.springframework.boot.autoconfigure.data.redis.RedisAutoConfiguration",
          "dependencies": []
        },
        "healthEndpointWebExtension": {
          "aliases": [],
          "scope": "singleton",
          "type": "org.springframework.boot.actuate.health.HealthEndpointWebExtension",
          "resource": "class path resource [org/springframework/boot/actuate/autoconfigure/health/HealthEndpointWebExtensionConfiguration.class]",
          "dependencies": [
            "org.springframework.boot.actuate.autoconfigure.health.HealthEndpointWebExtensionConfiguration",
            "healthContributorRegistry",
            "healthEndpointGroups",
            "management.endpoint.health-org.springframework.boot.actuate.autoconfigure.health.HealthEndpointProperties"
          ]
        },
        "multipartResolver": {
          "aliases": [],
          "scope": "singleton",
          "type": "org.springframework.web.multipart.support.StandardServletMultipartResolver",
          "resource": "class path resource [org/springframework/boot/autoconfigure/web/servlet/MultipartAutoConfiguration.class]",
          "dependencies": [
            "org.springframework.boot.autoconfigure.web.servlet.MultipartAutoConfiguration"
          ]
        },
        "sessionStatusService": {
          "aliases": [],
          "scope": "singleton",
          "type": "cn.netkiller.service.SessionStatusService",
          "resource": "URL [jar:nested:/app/watch-1.0-SNAPSHOT.jar/!BOOT-INF/classes/!/cn/netkiller/service/SessionStatusService.class]",
          "dependencies": [
            "sessionStatusRepository"
          ]
        },
        "org.springframework.boot.actuate.autoconfigure.endpoint.web.WebEndpointAutoConfiguration$WebEndpointServletConfiguration": {
          "aliases": [],
          "scope": "singleton",
          "type": "org.springframework.boot.actuate.autoconfigure.endpoint.web.WebEndpointAutoConfiguration$WebEndpointServletConfiguration",
          "dependencies": []
        },
        "requestMappingHandlerMapping": {
          "aliases": [],
          "scope": "singleton",
          "type": "org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerMapping",
          "resource": "class path resource [org/springframework/boot/autoconfigure/web/servlet/WebMvcAutoConfiguration$EnableWebMvcConfiguration.class]",
          "dependencies": [
            "org.springframework.boot.autoconfigure.web.servlet.WebMvcAutoConfiguration$EnableWebMvcConfiguration",
            "mvcContentNegotiationManager",
            "mvcConversionService",
            "mvcResourceUrlProvider"
          ]
        },
        "webExposeExcludePropertyEndpointFilter": {
          "aliases": [],
          "scope": "singleton",
          "type": "org.springframework.boot.actuate.autoconfigure.endpoint.expose.IncludeExcludeEndpointFilter",
          "resource": "class path resource [org/springframework/boot/actuate/autoconfigure/endpoint/web/WebEndpointAutoConfiguration.class]",
          "dependencies": [
            "org.springframework.boot.actuate.autoconfigure.endpoint.web.WebEndpointAutoConfiguration"
          ]
        },
        "lifecycleProcessor": {
          "aliases": [],
          "scope": "singleton",
          "type": "org.springframework.context.support.DefaultLifecycleProcessor",
          "resource": "class path resource [org/springframework/boot/autoconfigure/context/LifecycleAutoConfiguration.class]",
          "dependencies": [
            "org.springframework.boot.autoconfigure.context.LifecycleAutoConfiguration",
            "spring.lifecycle-org.springframework.boot.autoconfigure.context.LifecycleProperties"
          ]
        },
        "requestMappingHandlerAdapter": {
          "aliases": [],
          "scope": "singleton",
          "type": "org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter",
          "resource": "class path resource [org/springframework/boot/autoconfigure/web/servlet/WebMvcAutoConfiguration$EnableWebMvcConfiguration.class]",
          "dependencies": [
            "org.springframework.boot.autoconfigure.web.servlet.WebMvcAutoConfiguration$EnableWebMvcConfiguration",
            "mvcContentNegotiationManager",
            "mvcConversionService",
            "mvcValidator"
          ]
        },
        "tomcatMetricsBinder": {
          "aliases": [],
          "scope": "singleton",
          "type": "org.springframework.boot.actuate.metrics.web.tomcat.TomcatMetricsBinder",
          "resource": "class path resource [org/springframework/boot/actuate/autoconfigure/metrics/web/tomcat/TomcatMetricsAutoConfiguration.class]",
          "dependencies": [
            "org.springframework.boot.actuate.autoconfigure.metrics.web.tomcat.TomcatMetricsAutoConfiguration",
            "simpleMeterRegistry"
          ]
        },
        "org.springdoc.core.configuration.SpringDocConfiguration$SpringDocSpringDataWebPropertiesProvider": {
          "aliases": [],
          "scope": "singleton",
          "type": "org.springdoc.core.configuration.SpringDocConfiguration$SpringDocSpringDataWebPropertiesProvider",
          "dependencies": []
        },
        "org.springframework.boot.actuate.autoconfigure.metrics.jdbc.DataSourcePoolMetricsAutoConfiguration$DataSourcePoolMetadataMetricsConfiguration": {
          "aliases": [],
          "scope": "singleton",
          "type": "org.springframework.boot.actuate.autoconfigure.metrics.jdbc.DataSourcePoolMetricsAutoConfiguration$DataSourcePoolMetadataMetricsConfiguration",
          "dependencies": []
        },
        "org.springframework.boot.actuate.autoconfigure.endpoint.web.ServletEndpointManagementContextConfiguration$WebMvcServletEndpointManagementContextConfiguration": {
          "aliases": [],
          "scope": "singleton",
          "type": "org.springframework.boot.actuate.autoconfigure.endpoint.web.ServletEndpointManagementContextConfiguration$WebMvcServletEndpointManagementContextConfiguration",
          "dependencies": []
        },
        "org.springframework.data.jpa.repository.support.JpaEvaluationContextExtension": {
          "aliases": [],
          "scope": "singleton",
          "type": "org.springframework.data.jpa.repository.support.JpaEvaluationContextExtension",
          "dependencies": []
        },
        "org.springframework.boot.autoconfigure.context.LifecycleAutoConfiguration": {
          "aliases": [],
          "scope": "singleton",
          "type": "org.springframework.boot.autoconfigure.context.LifecycleAutoConfiguration",
          "dependencies": []
        },
        "org.springframework.boot.actuate.autoconfigure.logging.LogFileWebEndpointAutoConfiguration": {
          "aliases": [],
          "scope": "singleton",
          "type": "org.springframework.boot.actuate.autoconfigure.logging.LogFileWebEndpointAutoConfiguration",
          "dependencies": []
        },
        "spring.info-org.springframework.boot.autoconfigure.info.ProjectInfoProperties": {
          "aliases": [],
          "scope": "singleton",
          "type": "org.springframework.boot.autoconfigure.info.ProjectInfoProperties",
          "dependencies": []
        },
        "org.springframework.boot.autoconfigure.jdbc.DataSourceTransactionManagerAutoConfiguration": {
          "aliases": [],
          "scope": "singleton",
          "type": "org.springframework.boot.autoconfigure.jdbc.DataSourceTransactionManagerAutoConfiguration",
          "dependencies": []
        },
        "org.springframework.boot.actuate.autoconfigure.metrics.MetricsEndpointAutoConfiguration": {
          "aliases": [],
          "scope": "singleton",
          "type": "org.springframework.boot.actuate.autoconfigure.metrics.MetricsEndpointAutoConfiguration",
          "dependencies": []
        },
        "infoEndpoint": {
          "aliases": [],
          "scope": "singleton",
          "type": "org.springframework.boot.actuate.info.InfoEndpoint",
          "resource": "class path resource [org/springframework/boot/actuate/autoconfigure/info/InfoEndpointAutoConfiguration.class]",
          "dependencies": [
            "org.springframework.boot.actuate.autoconfigure.info.InfoEndpointAutoConfiguration"
          ]
        },
        "org.springframework.boot.actuate.autoconfigure.observation.web.servlet.WebMvcObservationAutoConfiguration$MeterFilterConfiguration": {
          "aliases": [],
          "scope": "singleton",
          "type": "org.springframework.boot.actuate.autoconfigure.observation.web.servlet.WebMvcObservationAutoConfiguration$MeterFilterConfiguration",
          "dependencies": []
        },
        "org.springframework.boot.autoconfigure.jdbc.DataSourceTransactionManagerAutoConfiguration$JdbcTransactionManagerConfiguration": {
          "aliases": [],
          "scope": "singleton",
          "type": "org.springframework.boot.autoconfigure.jdbc.DataSourceTransactionManagerAutoConfiguration$JdbcTransactionManagerConfiguration",
          "dependencies": []
        },
        "org.springframework.boot.autoconfigure.jdbc.DataSourceAutoConfiguration": {
          "aliases": [],
          "scope": "singleton",
          "type": "org.springframework.boot.autoconfigure.jdbc.DataSourceAutoConfiguration",
          "dependencies": []
        },
        "lettuceMetrics": {
          "aliases": [],
          "scope": "singleton",
          "type": "org.springframework.boot.actuate.autoconfigure.metrics.redis.LettuceMetricsAutoConfiguration$$Lambda/0x00007ff40055ba28",
          "resource": "class path resource [org/springframework/boot/actuate/autoconfigure/metrics/redis/LettuceMetricsAutoConfiguration.class]",
          "dependencies": [
            "org.springframework.boot.actuate.autoconfigure.metrics.redis.LettuceMetricsAutoConfiguration",
            "simpleMeterRegistry",
            "micrometerOptions"
          ]
        },
        "metricsRepositoryMethodInvocationListenerBeanPostProcessor": {
          "aliases": [],
          "scope": "singleton",
          "type": "org.springframework.boot.actuate.autoconfigure.metrics.data.MetricsRepositoryMethodInvocationListenerBeanPostProcessor",
          "resource": "class path resource [org/springframework/boot/actuate/autoconfigure/metrics/data/RepositoryMetricsAutoConfiguration.class]",
          "dependencies": []
        },
        "org.springdoc.core.configuration.SpringDocConfiguration$QuerydslProvider": {
          "aliases": [],
          "scope": "singleton",
          "type": "org.springdoc.core.configuration.SpringDocConfiguration$QuerydslProvider",
          "dependencies": []
        },
        "redisCacheMeterBinderProvider": {
          "aliases": [],
          "scope": "singleton",
          "type": "org.springframework.boot.actuate.metrics.cache.RedisCacheMeterBinderProvider",
          "resource": "class path resource [org/springframework/boot/actuate/autoconfigure/metrics/cache/CacheMeterBinderProvidersConfiguration$RedisCacheMeterBinderProviderConfiguration.class]",
          "dependencies": [
            "org.springframework.boot.actuate.autoconfigure.metrics.cache.CacheMeterBinderProvidersConfiguration$RedisCacheMeterBinderProviderConfiguration"
          ]
        },
        "classLoaderMetrics": {
          "aliases": [],
          "scope": "singleton",
          "type": "io.micrometer.core.instrument.binder.jvm.ClassLoaderMetrics",
          "resource": "class path resource [org/springframework/boot/actuate/autoconfigure/metrics/JvmMetricsAutoConfiguration.class]",
          "dependencies": [
            "org.springframework.boot.actuate.autoconfigure.metrics.JvmMetricsAutoConfiguration"
          ]
        },
        "observationRestTemplateCustomizer": {
          "aliases": [],
          "scope": "singleton",
          "type": "org.springframework.boot.actuate.metrics.web.client.ObservationRestTemplateCustomizer",
          "resource": "class path resource [org/springframework/boot/actuate/autoconfigure/observation/web/client/RestTemplateObservationConfiguration.class]",
          "dependencies": [
            "org.springframework.boot.actuate.autoconfigure.observation.web.client.RestTemplateObservationConfiguration",
            "observationRegistry",
            "management.observations-org.springframework.boot.actuate.autoconfigure.observation.ObservationProperties"
          ]
        },
        "knife4j-com.github.xiaoymin.knife4j.spring.configuration.Knife4jProperties": {
          "aliases": [],
          "scope": "singleton",
          "type": "com.github.xiaoymin.knife4j.spring.configuration.Knife4jProperties",
          "dependencies": []
        },
        "org.springframework.boot.autoconfigure.context.ConfigurationPropertiesAutoConfiguration": {
          "aliases": [],
          "scope": "singleton",
          "type": "org.springframework.boot.autoconfigure.context.ConfigurationPropertiesAutoConfiguration",
          "dependencies": []
        },
        "org.springframework.boot.autoconfigure.ssl.SslAutoConfiguration": {
          "aliases": [],
          "scope": "singleton",
          "type": "org.springframework.boot.autoconfigure.ssl.SslAutoConfiguration",
          "dependencies": [
            "spring.ssl-org.springframework.boot.autoconfigure.ssl.SslProperties"
          ]
        },
        "org.springframework.boot.autoconfigure.internalCachingMetadataReaderFactory": {
          "aliases": [],
          "scope": "singleton",
          "type": "org.springframework.core.type.classreading.CachingMetadataReaderFactory",
          "dependencies": []
        },
        "knife4jJakartaOperationCustomizer": {
          "aliases": [],
          "scope": "singleton",
          "type": "com.github.xiaoymin.knife4j.spring.extension.Knife4jJakartaOperationCustomizer",
          "resource": "class path resource [com/github/xiaoymin/knife4j/spring/configuration/Knife4jAutoConfiguration.class]",
          "dependencies": [
            "com.github.xiaoymin.knife4j.spring.configuration.Knife4jAutoConfiguration"
          ]
        },
        "fileWatcher": {
          "aliases": [],
          "scope": "singleton",
          "type": "org.springframework.boot.autoconfigure.ssl.FileWatcher",
          "resource": "class path resource [org/springframework/boot/autoconfigure/ssl/SslAutoConfiguration.class]",
          "dependencies": [
            "org.springframework.boot.autoconfigure.ssl.SslAutoConfiguration"
          ]
        },
        "org.springframework.boot.autoconfigure.jackson.JacksonAutoConfiguration$ParameterNamesModuleConfiguration": {
          "aliases": [],
          "scope": "singleton",
          "type": "org.springframework.boot.autoconfigure.jackson.JacksonAutoConfiguration$ParameterNamesModuleConfiguration",
          "dependencies": []
        },
        "sortResolver": {
          "aliases": [],
          "scope": "singleton",
          "type": "org.springframework.data.web.SortHandlerMethodArgumentResolver",
          "resource": "class path resource [org/springframework/data/web/config/SpringDataWebConfiguration.class]",
          "dependencies": [
            "org.springframework.data.web.config.SpringDataWebConfiguration"
          ]
        },
        "org.springframework.boot.autoconfigure.sql.init.DataSourceInitializationConfiguration": {
          "aliases": [],
          "scope": "singleton",
          "type": "org.springframework.boot.autoconfigure.sql.init.DataSourceInitializationConfiguration",
          "dependencies": []
        },
        "baiduService": {
          "aliases": [],
          "scope": "singleton",
          "type": "cn.netkiller.service.BaiduService$$SpringCGLIB$$0",
          "resource": "URL [jar:nested:/app/watch-1.0-SNAPSHOT.jar/!BOOT-INF/classes/!/cn/netkiller/service/BaiduService.class]",
          "dependencies": [
            "sessionStatusService",
            "psychoanalysisService"
          ]
        },
        "org.springframework.boot.actuate.autoconfigure.audit.AuditEventsEndpointAutoConfiguration": {
          "aliases": [],
          "scope": "singleton",
          "type": "org.springframework.boot.actuate.autoconfigure.audit.AuditEventsEndpointAutoConfiguration",
          "dependencies": []
        },
        "errorAttributes": {
          "aliases": [],
          "scope": "singleton",
          "type": "org.springframework.boot.web.servlet.error.DefaultErrorAttributes",
          "resource": "class path resource [org/springframework/boot/autoconfigure/web/servlet/error/ErrorMvcAutoConfiguration.class]",
          "dependencies": [
            "org.springframework.boot.autoconfigure.web.servlet.error.ErrorMvcAutoConfiguration"
          ]
        },
        "observationWebClientCustomizer": {
          "aliases": [],
          "scope": "singleton",
          "type": "org.springframework.boot.actuate.metrics.web.reactive.client.ObservationWebClientCustomizer",
          "resource": "class path resource [org/springframework/boot/actuate/autoconfigure/observation/web/client/WebClientObservationConfiguration.class]",
          "dependencies": [
            "org.springframework.boot.actuate.autoconfigure.observation.web.client.WebClientObservationConfiguration",
            "observationRegistry",
            "management.observations-org.springframework.boot.actuate.autoconfigure.observation.ObservationProperties",
            "management.metrics-org.springframework.boot.actuate.autoconfigure.metrics.MetricsProperties"
          ]
        },
        "beanNameHandlerMapping": {
          "aliases": [],
          "scope": "singleton",
          "type": "org.springframework.web.servlet.handler.BeanNameUrlHandlerMapping",
          "resource": "class path resource [org/springframework/boot/autoconfigure/web/servlet/WebMvcAutoConfiguration$EnableWebMvcConfiguration.class]",
          "dependencies": [
            "org.springframework.boot.autoconfigure.web.servlet.WebMvcAutoConfiguration$EnableWebMvcConfiguration",
            "mvcConversionService",
            "mvcResourceUrlProvider"
          ]
        },
        "org.springframework.boot.actuate.autoconfigure.health.HealthEndpointConfiguration": {
          "aliases": [],
          "scope": "singleton",
          "type": "org.springframework.boot.actuate.autoconfigure.health.HealthEndpointConfiguration",
          "dependencies": []
        },
        "org.springframework.boot.actuate.autoconfigure.metrics.cache.CacheMeterBinderProvidersConfiguration$RedisCacheMeterBinderProviderConfiguration": {
          "aliases": [],
          "scope": "singleton",
          "type": "org.springframework.boot.actuate.autoconfigure.metrics.cache.CacheMeterBinderProvidersConfiguration$RedisCacheMeterBinderProviderConfiguration",
          "dependencies": []
        },
        "org.springframework.boot.autoconfigure.info.ProjectInfoAutoConfiguration": {
          "aliases": [],
          "scope": "singleton",
          "type": "org.springframework.boot.autoconfigure.info.ProjectInfoAutoConfiguration",
          "dependencies": [
            "spring.info-org.springframework.boot.autoconfigure.info.ProjectInfoProperties"
          ]
        },
        "psychoanalysisService": {
          "aliases": [],
          "scope": "singleton",
          "type": "cn.netkiller.service.PsychoanalysisService$$SpringCGLIB$$0",
          "resource": "URL [jar:nested:/app/watch-1.0-SNAPSHOT.jar/!BOOT-INF/classes/!/cn/netkiller/service/PsychoanalysisService.class]",
          "dependencies": [
            "psychoanalysisRepository",
            "chatGPT"
          ]
        },
        "org.springframework.boot.autoconfigure.web.servlet.ServletWebServerFactoryConfiguration$EmbeddedTomcat": {
          "aliases": [],
          "scope": "singleton",
          "type": "org.springframework.boot.autoconfigure.web.servlet.ServletWebServerFactoryConfiguration$EmbeddedTomcat",
          "dependencies": []
        },
        "org.springframework.boot.actuate.autoconfigure.management.HeapDumpWebEndpointAutoConfiguration": {
          "aliases": [],
          "scope": "singleton",
          "type": "org.springframework.boot.actuate.autoconfigure.management.HeapDumpWebEndpointAutoConfiguration",
          "dependencies": []
        },
        "org.springframework.boot.autoconfigure.jdbc.DataSourceConfiguration$Hikari": {
          "aliases": [],
          "scope": "singleton",
          "type": "org.springframework.boot.autoconfigure.jdbc.DataSourceConfiguration$Hikari",
          "dependencies": []
        },
        "springDataWebPropertiesProvider": {
          "aliases": [],
          "scope": "singleton",
          "type": "org.springdoc.core.providers.SpringDataWebPropertiesProvider",
          "resource": "class path resource [org/springdoc/core/configuration/SpringDocConfiguration$SpringDocSpringDataWebPropertiesProvider.class]",
          "dependencies": [
            "org.springdoc.core.configuration.SpringDocConfiguration$SpringDocSpringDataWebPropertiesProvider"
          ]
        },
        "responseBuilder": {
          "aliases": [],
          "scope": "singleton",
          "type": "org.springdoc.core.service.GenericResponseService",
          "resource": "class path resource [org/springdoc/webmvc/core/configuration/SpringDocWebMvcConfiguration.class]",
          "dependencies": [
            "org.springdoc.webmvc.core.configuration.SpringDocWebMvcConfiguration",
            "operationBuilder",
            "genericReturnTypeParser",
            "kotlinCoroutinesReturnTypeParser",
            "org.springdoc.core.properties.SpringDocConfigProperties",
            "propertyResolverUtils"
          ]
        },
        "org.springframework.data.web.config.SpringDataJacksonConfiguration": {
          "aliases": [],
          "scope": "singleton",
          "type": "org.springframework.data.web.config.SpringDataJacksonConfiguration",
          "dependencies": []
        },
        "org.springframework.boot.actuate.autoconfigure.metrics.cache.CacheMetricsRegistrarConfiguration": {
          "aliases": [],
          "scope": "singleton",
          "type": "org.springframework.boot.actuate.autoconfigure.metrics.cache.CacheMetricsRegistrarConfiguration",
          "dependencies": [
            "simpleMeterRegistry",
            "redisCacheMeterBinderProvider",
            "cacheManager"
          ]
        },
        "management.metrics-org.springframework.boot.actuate.autoconfigure.metrics.MetricsProperties": {
          "aliases": [],
          "scope": "singleton",
          "type": "org.springframework.boot.actuate.autoconfigure.metrics.MetricsProperties",
          "dependencies": []
        },
        "swaggerWelcome": {
          "aliases": [],
          "scope": "singleton",
          "type": "org.springdoc.webmvc.ui.SwaggerWelcomeWebMvc",
          "resource": "class path resource [org/springdoc/webmvc/ui/SwaggerConfig.class]",
          "dependencies": [
            "org.springdoc.webmvc.ui.SwaggerConfig",
            "org.springdoc.core.properties.SwaggerUiConfigProperties",
            "org.springdoc.core.properties.SpringDocConfigProperties",
            "org.springdoc.core.properties.SwaggerUiConfigParameters",
            "springWebProvider"
          ]
        },
        "flashMapManager": {
          "aliases": [],
          "scope": "singleton",
          "type": "org.springframework.web.servlet.support.SessionFlashMapManager",
          "resource": "class path resource [org/springframework/boot/autoconfigure/web/servlet/WebMvcAutoConfiguration$EnableWebMvcConfiguration.class]",
          "dependencies": [
            "org.springframework.boot.autoconfigure.web.servlet.WebMvcAutoConfiguration$EnableWebMvcConfiguration"
          ]
        },
        "org.springframework.boot.autoconfigure.task.TaskSchedulingConfigurations$TaskSchedulerBuilderConfiguration": {
          "aliases": [],
          "scope": "singleton",
          "type": "org.springframework.boot.autoconfigure.task.TaskSchedulingConfigurations$TaskSchedulerBuilderConfiguration",
          "dependencies": []
        },
        "pictureRepository": {
          "aliases": [],
          "scope": "singleton",
          "type": "cn.netkiller.repository.PictureRepository",
          "resource": "cn.netkiller.repository.PictureRepository defined in @EnableJpaRepositories declared on Application",
          "dependencies": [
            "jpa.named-queries#2",
            "jpa.PictureRepository.fragments#0",
            "jpaSharedEM_entityManagerFactory",
            "jpaMappingContext"
          ]
        },
        "requestBuilder": {
          "aliases": [],
          "scope": "singleton",
          "type": "org.springdoc.webmvc.core.service.RequestService",
          "resource": "class path resource [org/springdoc/webmvc/core/configuration/SpringDocWebMvcConfiguration.class]",
          "dependencies": [
            "org.springdoc.webmvc.core.configuration.SpringDocWebMvcConfiguration",
            "parameterBuilder",
            "requestBodyBuilder",
            "operationBuilder",
            "localSpringDocParameterNameDiscoverer"
          ]
        },
        "redisHealthContributor": {
          "aliases": [],
          "scope": "singleton",
          "type": "org.springframework.boot.actuate.data.redis.RedisReactiveHealthIndicator",
          "resource": "class path resource [org/springframework/boot/actuate/autoconfigure/data/redis/RedisReactiveHealthContributorAutoConfiguration.class]",
          "dependencies": [
            "org.springframework.boot.actuate.autoconfigure.data.redis.RedisReactiveHealthContributorAutoConfiguration"
          ]
        },
        "org.springframework.boot.autoconfigure.netty.NettyAutoConfiguration": {
          "aliases": [],
          "scope": "singleton",
          "type": "org.springframework.boot.autoconfigure.netty.NettyAutoConfiguration",
          "dependencies": [
            "spring.netty-org.springframework.boot.autoconfigure.netty.NettyProperties"
          ]
        },
        "healthHttpCodeStatusMapper": {
          "aliases": [],
          "scope": "singleton",
          "type": "org.springframework.boot.actuate.health.SimpleHttpCodeStatusMapper",
          "resource": "class path resource [org/springframework/boot/actuate/autoconfigure/health/HealthEndpointConfiguration.class]",
          "dependencies": [
            "org.springframework.boot.actuate.autoconfigure.health.HealthEndpointConfiguration",
            "management.endpoint.health-org.springframework.boot.actuate.autoconfigure.health.HealthEndpointProperties"
          ]
        },
        "psychoanalysisRepository": {
          "aliases": [],
          "scope": "singleton",
          "type": "cn.netkiller.repository.PsychoanalysisRepository",
          "resource": "cn.netkiller.repository.PsychoanalysisRepository defined in @EnableJpaRepositories declared on Application",
          "dependencies": [
            "jpa.named-queries#4",
            "jpa.PsychoanalysisRepository.fragments#0",
            "jpaSharedEM_entityManagerFactory",
            "jpaMappingContext"
          ]
        },
        "defaultCodecCustomizer": {
          "aliases": [],
          "scope": "singleton",
          "type": "org.springframework.boot.autoconfigure.http.codec.CodecsAutoConfiguration$DefaultCodecsConfiguration$$Lambda/0x00007ff400a34e48",
          "resource": "class path resource [org/springframework/boot/autoconfigure/http/codec/CodecsAutoConfiguration$DefaultCodecsConfiguration.class]",
          "dependencies": [
            "org.springframework.boot.autoconfigure.http.codec.CodecsAutoConfiguration$DefaultCodecsConfiguration",
            "spring.codec-org.springframework.boot.autoconfigure.codec.CodecProperties"
          ]
        },
        "statusController": {
          "aliases": [],
          "scope": "singleton",
          "type": "cn.netkiller.controller.StatusController",
          "resource": "URL [jar:nested:/app/watch-1.0-SNAPSHOT.jar/!BOOT-INF/classes/!/cn/netkiller/controller/StatusController.class]",
          "dependencies": [
            "sessionStatusRepository"
          ]
        },
        "org.springframework.boot.actuate.autoconfigure.metrics.jdbc.DataSourcePoolMetricsAutoConfiguration": {
          "aliases": [],
          "scope": "singleton",
          "type": "org.springframework.boot.actuate.autoconfigure.metrics.jdbc.DataSourcePoolMetricsAutoConfiguration",
          "dependencies": []
        },
        "metricsRepositoryMethodInvocationListener": {
          "aliases": [],
          "scope": "singleton",
          "type": "org.springframework.boot.actuate.metrics.data.MetricsRepositoryMethodInvocationListener",
          "resource": "class path resource [org/springframework/boot/actuate/autoconfigure/metrics/data/RepositoryMetricsAutoConfiguration.class]",
          "dependencies": [
            "org.springframework.boot.actuate.autoconfigure.metrics.data.RepositoryMetricsAutoConfiguration",
            "repositoryTagsProvider"
          ]
        },
        "uptimeMetrics": {
          "aliases": [],
          "scope": "singleton",
          "type": "io.micrometer.core.instrument.binder.system.UptimeMetrics",
          "resource": "class path resource [org/springframework/boot/actuate/autoconfigure/metrics/SystemMetricsAutoConfiguration.class]",
          "dependencies": [
            "org.springframework.boot.actuate.autoconfigure.metrics.SystemMetricsAutoConfiguration"
          ]
        },
        "controllerExposeExcludePropertyEndpointFilter": {
          "aliases": [],
          "scope": "singleton",
          "type": "org.springframework.boot.actuate.autoconfigure.endpoint.expose.IncludeExcludeEndpointFilter",
          "resource": "class path resource [org/springframework/boot/actuate/autoconfigure/endpoint/web/WebEndpointAutoConfiguration.class]",
          "dependencies": [
            "org.springframework.boot.actuate.autoconfigure.endpoint.web.WebEndpointAutoConfiguration"
          ]
        },
        "pathMappedEndpoints": {
          "aliases": [],
          "scope": "singleton",
          "type": "org.springframework.boot.actuate.endpoint.web.PathMappedEndpoints",
          "resource": "class path resource [org/springframework/boot/actuate/autoconfigure/endpoint/web/WebEndpointAutoConfiguration.class]",
          "dependencies": [
            "org.springframework.boot.actuate.autoconfigure.endpoint.web.WebEndpointAutoConfiguration",
            "servletEndpointDiscoverer",
            "webEndpointDiscoverer",
            "controllerEndpointDiscoverer"
          ]
        },
        "jvmThreadMetrics": {
          "aliases": [],
          "scope": "singleton",
          "type": "io.micrometer.core.instrument.binder.jvm.JvmThreadMetrics",
          "resource": "class path resource [org/springframework/boot/actuate/autoconfigure/metrics/JvmMetricsAutoConfiguration.class]",
          "dependencies": [
            "org.springframework.boot.actuate.autoconfigure.metrics.JvmMetricsAutoConfiguration"
          ]
        },
        "scheduledTasksEndpoint": {
          "aliases": [],
          "scope": "singleton",
          "type": "org.springframework.boot.actuate.scheduling.ScheduledTasksEndpoint",
          "resource": "class path resource [org/springframework/boot/actuate/autoconfigure/scheduling/ScheduledTasksEndpointAutoConfiguration.class]",
          "dependencies": [
            "org.springframework.boot.actuate.autoconfigure.scheduling.ScheduledTasksEndpointAutoConfiguration"
          ]
        },
        "indexPageTransformer": {
          "aliases": [],
          "scope": "singleton",
          "type": "org.springdoc.webmvc.ui.SwaggerIndexPageTransformer",
          "resource": "class path resource [org/springdoc/webmvc/ui/SwaggerConfig.class]",
          "dependencies": [
            "org.springdoc.webmvc.ui.SwaggerConfig",
            "org.springdoc.core.properties.SwaggerUiConfigProperties",
            "org.springdoc.core.properties.SwaggerUiOAuthProperties",
            "org.springdoc.core.properties.SwaggerUiConfigParameters",
            "swaggerWelcome",
            "springdocObjectMapperProvider"
          ]
        },
        "org.springframework.data.web.config.ProjectingArgumentResolverRegistrar": {
          "aliases": [],
          "scope": "singleton",
          "type": "org.springframework.data.web.config.ProjectingArgumentResolverRegistrar",
          "dependencies": []
        },
        "heapDumpWebEndpoint": {
          "aliases": [],
          "scope": "singleton",
          "type": "org.springframework.boot.actuate.management.HeapDumpWebEndpoint",
          "resource": "class path resource [org/springframework/boot/actuate/autoconfigure/management/HeapDumpWebEndpointAutoConfiguration.class]",
          "dependencies": [
            "org.springframework.boot.actuate.autoconfigure.management.HeapDumpWebEndpointAutoConfiguration"
          ]
        },
        "managementServletContext": {
          "aliases": [],
          "scope": "singleton",
          "type": "org.springframework.boot.actuate.autoconfigure.web.servlet.ServletManagementContextAutoConfiguration$$Lambda/0x00007ff400ae9a58",
          "resource": "class path resource [org/springframework/boot/actuate/autoconfigure/web/servlet/ServletManagementContextAutoConfiguration.class]",
          "dependencies": [
            "org.springframework.boot.actuate.autoconfigure.web.servlet.ServletManagementContextAutoConfiguration",
            "management.endpoints.web-org.springframework.boot.actuate.autoconfigure.endpoint.web.WebEndpointProperties"
          ]
        },
        "spring.gson-org.springframework.boot.autoconfigure.gson.GsonProperties": {
          "aliases": [],
          "scope": "singleton",
          "type": "org.springframework.boot.autoconfigure.gson.GsonProperties",
          "dependencies": []
        },
        "fileDescriptorMetrics": {
          "aliases": [],
          "scope": "singleton",
          "type": "io.micrometer.core.instrument.binder.system.FileDescriptorMetrics",
          "resource": "class path resource [org/springframework/boot/actuate/autoconfigure/metrics/SystemMetricsAutoConfiguration.class]",
          "dependencies": [
            "org.springframework.boot.actuate.autoconfigure.metrics.SystemMetricsAutoConfiguration"
          ]
        },
        "org.springframework.boot.autoconfigure.aop.AopAutoConfiguration$AspectJAutoProxyingConfiguration$CglibAutoProxyConfiguration": {
          "aliases": [],
          "scope": "singleton",
          "type": "org.springframework.boot.autoconfigure.aop.AopAutoConfiguration$AspectJAutoProxyingConfiguration$CglibAutoProxyConfiguration",
          "dependencies": []
        },
        "org.springframework.boot.actuate.autoconfigure.health.ReactiveHealthEndpointConfiguration": {
          "aliases": [],
          "scope": "singleton",
          "type": "org.springframework.boot.actuate.autoconfigure.health.ReactiveHealthEndpointConfiguration",
          "dependencies": []
        },
        "org.springframework.boot.actuate.autoconfigure.metrics.cache.CacheMeterBinderProvidersConfiguration": {
          "aliases": [],
          "scope": "singleton",
          "type": "org.springframework.boot.actuate.autoconfigure.metrics.cache.CacheMeterBinderProvidersConfiguration",
          "dependencies": []
        },
        "org.springframework.boot.actuate.autoconfigure.observation.ObservationAutoConfiguration$MeterObservationHandlerConfiguration$OnlyMetricsMeterObservationHandlerConfiguration": {
          "aliases": [],
          "scope": "singleton",
          "type": "org.springframework.boot.actuate.autoconfigure.observation.ObservationAutoConfiguration$MeterObservationHandlerConfiguration$OnlyMetricsMeterObservationHandlerConfiguration",
          "dependencies": []
        },
        "environmentEndpointWebExtension": {
          "aliases": [],
          "scope": "singleton",
          "type": "org.springframework.boot.actuate.env.EnvironmentEndpointWebExtension",
          "resource": "class path resource [org/springframework/boot/actuate/autoconfigure/env/EnvironmentEndpointAutoConfiguration.class]",
          "dependencies": [
            "org.springframework.boot.actuate.autoconfigure.env.EnvironmentEndpointAutoConfiguration",
            "environmentEndpoint",
            "management.endpoint.env-org.springframework.boot.actuate.autoconfigure.env.EnvironmentEndpointProperties"
          ]
        },
        "restClientBuilderConfigurer": {
          "aliases": [],
          "scope": "singleton",
          "type": "org.springframework.boot.autoconfigure.web.client.RestClientBuilderConfigurer",
          "resource": "class path resource [org/springframework/boot/autoconfigure/web/client/RestClientAutoConfiguration.class]",
          "dependencies": [
            "org.springframework.boot.autoconfigure.web.client.RestClientAutoConfiguration"
          ]
        },
        "mvcValidator": {
          "aliases": [],
          "scope": "singleton",
          "type": "org.springframework.boot.autoconfigure.validation.ValidatorAdapter",
          "resource": "class path resource [org/springframework/boot/autoconfigure/web/servlet/WebMvcAutoConfiguration$EnableWebMvcConfiguration.class]",
          "dependencies": [
            "org.springframework.boot.autoconfigure.web.servlet.WebMvcAutoConfiguration$EnableWebMvcConfiguration"
          ]
        },
        "conditionsReportEndpoint": {
          "aliases": [],
          "scope": "singleton",
          "type": "org.springframework.boot.actuate.autoconfigure.condition.ConditionsReportEndpoint",
          "resource": "class path resource [org/springframework/boot/actuate/autoconfigure/condition/ConditionsReportEndpointAutoConfiguration.class]",
          "dependencies": [
            "org.springframework.boot.actuate.autoconfigure.condition.ConditionsReportEndpointAutoConfiguration",
            "org.springframework.boot.web.servlet.context.AnnotationConfigServletWebServerApplicationContext@18e36d14"
          ]
        },
        "applicationAvailability": {
          "aliases": [],
          "scope": "singleton",
          "type": "org.springframework.boot.availability.ApplicationAvailabilityBean",
          "resource": "class path resource [org/springframework/boot/autoconfigure/availability/ApplicationAvailabilityAutoConfiguration.class]",
          "dependencies": [
            "org.springframework.boot.autoconfigure.availability.ApplicationAvailabilityAutoConfiguration"
          ]
        },
        "org.springdoc.webmvc.ui.SwaggerConfig": {
          "aliases": [],
          "scope": "singleton",
          "type": "org.springdoc.webmvc.ui.SwaggerConfig",
          "dependencies": []
        },
        "mvcResourceUrlProvider": {
          "aliases": [],
          "scope": "singleton",
          "type": "org.springframework.web.servlet.resource.ResourceUrlProvider",
          "resource": "class path resource [org/springframework/boot/autoconfigure/web/servlet/WebMvcAutoConfiguration$EnableWebMvcConfiguration.class]",
          "dependencies": [
            "org.springframework.boot.autoconfigure.web.servlet.WebMvcAutoConfiguration$EnableWebMvcConfiguration"
          ]
        },
        "org.springframework.boot.actuate.autoconfigure.web.server.ManagementContextAutoConfiguration$SameManagementContextConfiguration$EnableSameManagementContextConfiguration": {
          "aliases": [],
          "scope": "singleton",
          "type": "org.springframework.boot.actuate.autoconfigure.web.server.ManagementContextAutoConfiguration$SameManagementContextConfiguration$EnableSameManagementContextConfiguration",
          "dependencies": []
        },
        "reactorClientHttpConnectorFactory": {
          "aliases": [],
          "scope": "singleton",
          "type": "org.springframework.boot.autoconfigure.web.reactive.function.client.ReactorClientHttpConnectorFactory",
          "resource": "class path resource [org/springframework/boot/autoconfigure/web/reactive/function/client/ClientHttpConnectorFactoryConfiguration$ReactorNetty.class]",
          "dependencies": [
            "org.springframework.boot.autoconfigure.web.reactive.function.client.ClientHttpConnectorFactoryConfiguration$ReactorNetty",
            "reactorResourceFactory"
          ]
        },
        "org.springframework.boot.autoconfigure.task.TaskExecutorConfigurations$SimpleAsyncTaskExecutorBuilderConfiguration": {
          "aliases": [],
          "scope": "singleton",
          "type": "org.springframework.boot.autoconfigure.task.TaskExecutorConfigurations$SimpleAsyncTaskExecutorBuilderConfiguration",
          "dependencies": [
            "spring.task.execution-org.springframework.boot.autoconfigure.task.TaskExecutionProperties"
          ]
        },
        "servletEndpointRegistrar": {
          "aliases": [],
          "scope": "singleton",
          "type": "org.springframework.boot.actuate.endpoint.web.ServletEndpointRegistrar",
          "resource": "class path resource [org/springframework/boot/actuate/autoconfigure/endpoint/web/ServletEndpointManagementContextConfiguration$WebMvcServletEndpointManagementContextConfiguration.class]",
          "dependencies": [
            "org.springframework.boot.actuate.autoconfigure.endpoint.web.ServletEndpointManagementContextConfiguration$WebMvcServletEndpointManagementContextConfiguration",
            "management.endpoints.web-org.springframework.boot.actuate.autoconfigure.endpoint.web.WebEndpointProperties",
            "servletEndpointDiscoverer",
            "dispatcherServletRegistration"
          ]
        },
        "dumpEndpoint": {
          "aliases": [],
          "scope": "singleton",
          "type": "org.springframework.boot.actuate.management.ThreadDumpEndpoint",
          "resource": "class path resource [org/springframework/boot/actuate/autoconfigure/management/ThreadDumpEndpointAutoConfiguration.class]",
          "dependencies": [
            "org.springframework.boot.actuate.autoconfigure.management.ThreadDumpEndpointAutoConfiguration"
          ]
        },
        "springdocObjectMapperProvider": {
          "aliases": [],
          "scope": "singleton",
          "type": "org.springdoc.core.providers.ObjectMapperProvider",
          "resource": "class path resource [org/springdoc/core/configuration/SpringDocConfiguration.class]",
          "dependencies": [
            "org.springdoc.core.configuration.SpringDocConfiguration",
            "org.springdoc.core.properties.SpringDocConfigProperties"
          ]
        },
        "org.springframework.boot.actuate.autoconfigure.endpoint.web.ServletEndpointManagementContextConfiguration": {
          "aliases": [],
          "scope": "singleton",
          "type": "org.springframework.boot.actuate.autoconfigure.endpoint.web.ServletEndpointManagementContextConfiguration",
          "dependencies": []
        },
        "org.springframework.boot.autoconfigure.data.redis.RedisReactiveAutoConfiguration": {
          "aliases": [],
          "scope": "singleton",
          "type": "org.springframework.boot.autoconfigure.data.redis.RedisReactiveAutoConfiguration",
          "dependencies": []
        },
        "knife4j.basic-com.github.xiaoymin.knife4j.spring.configuration.Knife4jHttpBasic": {
          "aliases": [],
          "scope": "singleton",
          "type": "com.github.xiaoymin.knife4j.spring.configuration.Knife4jHttpBasic",
          "dependencies": []
        },
        "hikariPoolDataSourceMetadataProvider": {
          "aliases": [],
          "scope": "singleton",
          "type": "org.springframework.boot.autoconfigure.jdbc.metadata.DataSourcePoolMetadataProvidersConfiguration$HikariPoolDataSourceMetadataProviderConfiguration$$Lambda/0x00007ff4005b7c00",
          "resource": "class path resource [org/springframework/boot/autoconfigure/jdbc/metadata/DataSourcePoolMetadataProvidersConfiguration$HikariPoolDataSourceMetadataProviderConfiguration.class]",
          "dependencies": [
            "org.springframework.boot.autoconfigure.jdbc.metadata.DataSourcePoolMetadataProvidersConfiguration$HikariPoolDataSourceMetadataProviderConfiguration"
          ]
        },
        "org.springframework.boot.autoconfigure.task.TaskSchedulingConfigurations$SimpleAsyncTaskSchedulerBuilderConfiguration": {
          "aliases": [],
          "scope": "singleton",
          "type": "org.springframework.boot.autoconfigure.task.TaskSchedulingConfigurations$SimpleAsyncTaskSchedulerBuilderConfiguration",
          "dependencies": [
            "spring.task.scheduling-org.springframework.boot.autoconfigure.task.TaskSchedulingProperties"
          ]
        },
        "org.springframework.boot.autoconfigure.cache.CacheAutoConfiguration$CacheManagerEntityManagerFactoryDependsOnPostProcessor": {
          "aliases": [],
          "scope": "singleton",
          "type": "org.springframework.boot.autoconfigure.cache.CacheAutoConfiguration$CacheManagerEntityManagerFactoryDependsOnPostProcessor",
          "dependencies": []
        },
        "org.springframework.boot.autoconfigure.task.TaskExecutorConfigurations$TaskExecutorBuilderConfiguration": {
          "aliases": [],
          "scope": "singleton",
          "type": "org.springframework.boot.autoconfigure.task.TaskExecutorConfigurations$TaskExecutorBuilderConfiguration",
          "dependencies": []
        },
        "org.springframework.boot.autoconfigure.context.PropertyPlaceholderAutoConfiguration": {
          "aliases": [],
          "scope": "singleton",
          "type": "org.springframework.boot.autoconfigure.context.PropertyPlaceholderAutoConfiguration",
          "dependencies": []
        },
        "org.springframework.boot.actuate.autoconfigure.observation.ObservationAutoConfiguration$MeterObservationHandlerConfiguration": {
          "aliases": [],
          "scope": "singleton",
          "type": "org.springframework.boot.actuate.autoconfigure.observation.ObservationAutoConfiguration$MeterObservationHandlerConfiguration",
          "dependencies": []
        },
        "nettyWebServerFactoryCustomizer": {
          "aliases": [],
          "scope": "singleton",
          "type": "org.springframework.boot.autoconfigure.web.embedded.NettyWebServerFactoryCustomizer",
          "resource": "class path resource [org/springframework/boot/autoconfigure/web/embedded/EmbeddedWebServerFactoryCustomizerAutoConfiguration$NettyWebServerFactoryCustomizerConfiguration.class]",
          "dependencies": [
            "org.springframework.boot.autoconfigure.web.embedded.EmbeddedWebServerFactoryCustomizerAutoConfiguration$NettyWebServerFactoryCustomizerConfiguration",
            "environment",
            "server-org.springframework.boot.autoconfigure.web.ServerProperties"
          ]
        },
        "org.springframework.boot.autoconfigure.web.servlet.WebMvcAutoConfiguration$WebMvcAutoConfigurationAdapter": {
          "aliases": [],
          "scope": "singleton",
          "type": "org.springframework.boot.autoconfigure.web.servlet.WebMvcAutoConfiguration$WebMvcAutoConfigurationAdapter",
          "dependencies": [
            "spring.web-org.springframework.boot.autoconfigure.web.WebProperties",
            "spring.mvc-org.springframework.boot.autoconfigure.web.servlet.WebMvcProperties",
            "org.springframework.beans.factory.support.DefaultListableBeanFactory@37efd131"
          ]
        },
        "org.springframework.data.web.config.SpringDataWebConfiguration": {
          "aliases": [],
          "scope": "singleton",
          "type": "org.springframework.data.web.config.SpringDataWebConfiguration",
          "dependencies": [
            "org.springframework.boot.web.servlet.context.AnnotationConfigServletWebServerApplicationContext@18e36d14"
          ]
        },
        "errorPageRegistrarBeanPostProcessor": {
          "aliases": [],
          "scope": "singleton",
          "type": "org.springframework.boot.web.server.ErrorPageRegistrarBeanPostProcessor",
          "dependencies": []
        },
        "mvcConversionService": {
          "aliases": [],
          "scope": "singleton",
          "type": "org.springframework.boot.autoconfigure.web.format.WebConversionService",
          "resource": "class path resource [org/springframework/boot/autoconfigure/web/servlet/WebMvcAutoConfiguration$EnableWebMvcConfiguration.class]",
          "dependencies": [
            "org.springframework.boot.autoconfigure.web.servlet.WebMvcAutoConfiguration$EnableWebMvcConfiguration"
          ]
        },
        "redisTemplate": {
          "aliases": [],
          "scope": "singleton",
          "type": "org.springframework.data.redis.core.RedisTemplate",
          "resource": "class path resource [org/springframework/boot/autoconfigure/data/redis/RedisAutoConfiguration.class]",
          "dependencies": [
            "org.springframework.boot.autoconfigure.data.redis.RedisAutoConfiguration",
            "redisConnectionFactory"
          ]
        },
        "memberService": {
          "aliases": [],
          "scope": "singleton",
          "type": "cn.netkiller.service.MemberService",
          "resource": "URL [jar:nested:/app/watch-1.0-SNAPSHOT.jar/!BOOT-INF/classes/!/cn/netkiller/service/MemberService.class]",
          "dependencies": []
        },
        "spring.codec-org.springframework.boot.autoconfigure.codec.CodecProperties": {
          "aliases": [],
          "scope": "singleton",
          "type": "org.springframework.boot.autoconfigure.codec.CodecProperties",
          "dependencies": []
        },
        "controllerEndpointDiscoverer": {
          "aliases": [],
          "scope": "singleton",
          "type": "org.springframework.boot.actuate.endpoint.web.annotation.ControllerEndpointDiscoverer",
          "resource": "class path resource [org/springframework/boot/actuate/autoconfigure/endpoint/web/WebEndpointAutoConfiguration.class]",
          "dependencies": [
            "org.springframework.boot.actuate.autoconfigure.endpoint.web.WebEndpointAutoConfiguration"
          ]
        },
        "diskSpaceHealthIndicator": {
          "aliases": [],
          "scope": "singleton",
          "type": "org.springframework.boot.actuate.system.DiskSpaceHealthIndicator",
          "resource": "class path resource [org/springframework/boot/actuate/autoconfigure/system/DiskSpaceHealthContributorAutoConfiguration.class]",
          "dependencies": [
            "org.springframework.boot.actuate.autoconfigure.system.DiskSpaceHealthContributorAutoConfiguration",
            "management.health.diskspace-org.springframework.boot.actuate.autoconfigure.system.DiskSpaceHealthIndicatorProperties"
          ]
        },
        "jvmMemoryMetrics": {
          "aliases": [],
          "scope": "singleton",
          "type": "io.micrometer.core.instrument.binder.jvm.JvmMemoryMetrics",
          "resource": "class path resource [org/springframework/boot/actuate/autoconfigure/metrics/JvmMetricsAutoConfiguration.class]",
          "dependencies": [
            "org.springframework.boot.actuate.autoconfigure.metrics.JvmMetricsAutoConfiguration"
          ]
        },
        "storyService": {
          "aliases": [],
          "scope": "singleton",
          "type": "cn.netkiller.service.StoryService$$SpringCGLIB$$0",
          "resource": "URL [jar:nested:/app/watch-1.0-SNAPSHOT.jar/!BOOT-INF/classes/!/cn/netkiller/service/StoryService.class]",
          "dependencies": [
            "pictureRepository",
            "mqttService",
            "baiduService",
            "sessionStatusService",
            "pictureService",
            "psychoanalysisService",
            "stableDiffusionService",
            "audioService",
            "warningService",
            "chatService",
            "chatGPT",
            "aliyunService"
          ]
        },
        "modelConverterRegistrar": {
          "aliases": [],
          "scope": "singleton",
          "type": "org.springdoc.core.converters.ModelConverterRegistrar",
          "resource": "class path resource [org/springdoc/core/configuration/SpringDocConfiguration.class]",
          "dependencies": [
            "org.springdoc.core.configuration.SpringDocConfiguration",
            "org.springdoc.core.properties.SpringDocConfigProperties"
          ]
        },
        "restClientSsl": {
          "aliases": [],
          "scope": "singleton",
          "type": "org.springframework.boot.autoconfigure.web.client.AutoConfiguredRestClientSsl",
          "resource": "class path resource [org/springframework/boot/autoconfigure/web/client/RestClientAutoConfiguration.class]",
          "dependencies": [
            "org.springframework.boot.autoconfigure.web.client.RestClientAutoConfiguration",
            "sslBundleRegistry"
          ]
        },
        "org.springframework.boot.actuate.autoconfigure.condition.ConditionsReportEndpointAutoConfiguration": {
          "aliases": [],
          "scope": "singleton",
          "type": "org.springframework.boot.actuate.autoconfigure.condition.ConditionsReportEndpointAutoConfiguration",
          "dependencies": []
        },
        "com.github.xiaoymin.knife4j.spring.configuration.Knife4jAutoConfiguration": {
          "aliases": [],
          "scope": "singleton",
          "type": "com.github.xiaoymin.knife4j.spring.configuration.Knife4jAutoConfiguration$$SpringCGLIB$$0",
          "dependencies": [
            "knife4j-com.github.xiaoymin.knife4j.spring.configuration.Knife4jProperties",
            "environment"
          ]
        },
        "logFileWebEndpoint": {
          "aliases": [],
          "scope": "singleton",
          "type": "org.springframework.boot.actuate.logging.LogFileWebEndpoint",
          "resource": "class path resource [org/springframework/boot/actuate/autoconfigure/logging/LogFileWebEndpointAutoConfiguration.class]",
          "dependencies": [
            "org.springframework.boot.actuate.autoconfigure.logging.LogFileWebEndpointAutoConfiguration",
            "management.endpoint.logfile-org.springframework.boot.actuate.autoconfigure.logging.LogFileWebEndpointProperties"
          ]
        },
        "mvcPathMatcher": {
          "aliases": [],
          "scope": "singleton",
          "type": "org.springframework.util.AntPathMatcher",
          "resource": "class path resource [org/springframework/boot/autoconfigure/web/servlet/WebMvcAutoConfiguration$EnableWebMvcConfiguration.class]",
          "dependencies": [
            "org.springframework.boot.autoconfigure.web.servlet.WebMvcAutoConfiguration$EnableWebMvcConfiguration"
          ]
        },
        "org.springframework.boot.actuate.autoconfigure.metrics.redis.LettuceMetricsAutoConfiguration": {
          "aliases": [],
          "scope": "singleton",
          "type": "org.springframework.boot.actuate.autoconfigure.metrics.redis.LettuceMetricsAutoConfiguration",
          "dependencies": []
        },
        "handlerExceptionResolver": {
          "aliases": [],
          "scope": "singleton",
          "type": "org.springframework.web.servlet.handler.HandlerExceptionResolverComposite",
          "resource": "class path resource [org/springframework/boot/autoconfigure/web/servlet/WebMvcAutoConfiguration$EnableWebMvcConfiguration.class]",
          "dependencies": [
            "org.springframework.boot.autoconfigure.web.servlet.WebMvcAutoConfiguration$EnableWebMvcConfiguration",
            "mvcContentNegotiationManager"
          ]
        },
        "routerFunctionProvider": {
          "aliases": [],
          "scope": "singleton",
          "type": "org.springdoc.webmvc.core.providers.RouterFunctionWebMvcProvider",
          "resource": "class path resource [org/springdoc/webmvc/core/configuration/SpringDocWebMvcConfiguration$SpringDocWebMvcRouterConfiguration.class]",
          "dependencies": [
            "org.springdoc.webmvc.core.configuration.SpringDocWebMvcConfiguration$SpringDocWebMvcRouterConfiguration"
          ]
        },
        "redisKeyValueTemplate": {
          "aliases": [],
          "scope": "singleton",
          "type": "org.springframework.data.redis.core.RedisKeyValueTemplate",
          "dependencies": [
            "redisKeyValueAdapter",
            "keyValueMappingContext"
          ]
        },
        "basicErrorController": {
          "aliases": [],
          "scope": "singleton",
          "type": "org.springframework.boot.autoconfigure.web.servlet.error.BasicErrorController",
          "resource": "class path resource [org/springframework/boot/autoconfigure/web/servlet/error/ErrorMvcAutoConfiguration.class]",
          "dependencies": [
            "org.springframework.boot.autoconfigure.web.servlet.error.ErrorMvcAutoConfiguration",
            "errorAttributes"
          ]
        },
        "pingHealthContributor": {
          "aliases": [],
          "scope": "singleton",
          "type": "org.springframework.boot.actuate.health.PingHealthIndicator",
          "resource": "class path resource [org/springframework/boot/actuate/autoconfigure/health/HealthContributorAutoConfiguration.class]",
          "dependencies": [
            "org.springframework.boot.actuate.autoconfigure.health.HealthContributorAutoConfiguration"
          ]
        },
        "org.springdoc.core.configuration.SpringDocConfiguration$SpringDocWebFluxSupportConfiguration": {
          "aliases": [],
          "scope": "singleton",
          "type": "org.springdoc.core.configuration.SpringDocConfiguration$SpringDocWebFluxSupportConfiguration",
          "dependencies": []
        },
        "mappingsEndpoint": {
          "aliases": [],
          "scope": "singleton",
          "type": "org.springframework.boot.actuate.web.mappings.MappingsEndpoint",
          "resource": "class path resource [org/springframework/boot/actuate/autoconfigure/web/mappings/MappingsEndpointAutoConfiguration.class]",
          "dependencies": [
            "org.springframework.boot.actuate.autoconfigure.web.mappings.MappingsEndpointAutoConfiguration",
            "org.springframework.boot.web.servlet.context.AnnotationConfigServletWebServerApplicationContext@18e36d14"
          ]
        },
        "sortOpenAPIConverter": {
          "aliases": [],
          "scope": "singleton",
          "type": "org.springdoc.core.converters.SortOpenAPIConverter",
          "resource": "class path resource [org/springdoc/core/configuration/SpringDocSortConfiguration.class]",
          "dependencies": [
            "org.springdoc.core.configuration.SpringDocSortConfiguration",
            "springdocObjectMapperProvider"
          ]
        },
        "healthEndpointGroupMembershipValidator": {
          "aliases": [],
          "scope": "singleton",
          "type": "org.springframework.boot.actuate.autoconfigure.health.HealthEndpointConfiguration$HealthEndpointGroupMembershipValidator",
          "resource": "class path resource [org/springframework/boot/actuate/autoconfigure/health/HealthEndpointConfiguration.class]",
          "dependencies": [
            "org.springframework.boot.actuate.autoconfigure.health.HealthEndpointConfiguration",
            "management.endpoint.health-org.springframework.boot.actuate.autoconfigure.health.HealthEndpointProperties",
            "healthContributorRegistry"
          ]
        },
        "org.springframework.boot.autoconfigure.http.codec.CodecsAutoConfiguration$JacksonCodecConfiguration": {
          "aliases": [],
          "scope": "singleton",
          "type": "org.springframework.boot.autoconfigure.http.codec.CodecsAutoConfiguration$JacksonCodecConfiguration",
          "dependencies": []
        },
        "org.springframework.boot.autoconfigure.cache.CacheAutoConfiguration": {
          "aliases": [],
          "scope": "singleton",
          "type": "org.springframework.boot.autoconfigure.cache.CacheAutoConfiguration",
          "dependencies": []
        },
        "org.springframework.boot.autoconfigure.http.GsonHttpMessageConvertersConfiguration": {
          "aliases": [],
          "scope": "singleton",
          "type": "org.springframework.boot.autoconfigure.http.GsonHttpMessageConvertersConfiguration",
          "dependencies": []
        },
        "spring.datasource-org.springframework.boot.autoconfigure.jdbc.DataSourceProperties": {
          "aliases": [],
          "scope": "singleton",
          "type": "org.springframework.boot.autoconfigure.jdbc.DataSourceProperties",
          "dependencies": []
        },
        "namedParameterJdbcTemplate": {
          "aliases": [],
          "scope": "singleton",
          "type": "org.springframework.jdbc.core.namedparam.NamedParameterJdbcTemplate",
          "resource": "class path resource [org/springframework/boot/autoconfigure/jdbc/NamedParameterJdbcTemplateConfiguration.class]",
          "dependencies": [
            "dataSourceScriptDatabaseInitializer",
            "org.springframework.boot.autoconfigure.jdbc.NamedParameterJdbcTemplateConfiguration",
            "jdbcTemplate"
          ]
        },
        "simpleAsyncTaskExecutorBuilder": {
          "aliases": [],
          "scope": "singleton",
          "type": "org.springframework.boot.task.SimpleAsyncTaskExecutorBuilder",
          "resource": "class path resource [org/springframework/boot/autoconfigure/task/TaskExecutorConfigurations$SimpleAsyncTaskExecutorBuilderConfiguration.class]",
          "dependencies": [
            "org.springframework.boot.autoconfigure.task.TaskExecutorConfigurations$SimpleAsyncTaskExecutorBuilderConfiguration"
          ]
        },
        "spring.web-org.springframework.boot.autoconfigure.web.WebProperties": {
          "aliases": [],
          "scope": "singleton",
          "type": "org.springframework.boot.autoconfigure.web.WebProperties",
          "dependencies": []
        },
        "mvcViewResolver": {
          "aliases": [],
          "scope": "singleton",
          "type": "org.springframework.web.servlet.view.ViewResolverComposite",
          "resource": "class path resource [org/springframework/boot/autoconfigure/web/servlet/WebMvcAutoConfiguration$EnableWebMvcConfiguration.class]",
          "dependencies": [
            "org.springframework.boot.autoconfigure.web.servlet.WebMvcAutoConfiguration$EnableWebMvcConfiguration",
            "mvcContentNegotiationManager"
          ]
        },
        "simpleConfig": {
          "aliases": [],
          "scope": "singleton",
          "type": "org.springframework.boot.actuate.autoconfigure.metrics.export.simple.SimplePropertiesConfigAdapter",
          "resource": "class path resource [org/springframework/boot/actuate/autoconfigure/metrics/export/simple/SimpleMetricsExportAutoConfiguration.class]",
          "dependencies": [
            "org.springframework.boot.actuate.autoconfigure.metrics.export.simple.SimpleMetricsExportAutoConfiguration",
            "management.simple.metrics.export-org.springframework.boot.actuate.autoconfigure.metrics.export.simple.SimpleProperties"
          ]
        },
        "org.springframework.boot.actuate.autoconfigure.observation.web.client.RestClientObservationConfiguration": {
          "aliases": [],
          "scope": "singleton",
          "type": "org.springframework.boot.actuate.autoconfigure.observation.web.client.RestClientObservationConfiguration",
          "dependencies": []
        },
        "org.springframework.boot.actuate.autoconfigure.web.servlet.ServletManagementContextAutoConfiguration": {
          "aliases": [],
          "scope": "singleton",
          "type": "org.springframework.boot.actuate.autoconfigure.web.servlet.ServletManagementContextAutoConfiguration",
          "dependencies": []
        },
        "observationRegistry": {
          "aliases": [],
          "scope": "singleton",
          "type": "io.micrometer.observation.SimpleObservationRegistry",
          "resource": "class path resource [org/springframework/boot/actuate/autoconfigure/observation/ObservationAutoConfiguration.class]",
          "dependencies": [
            "org.springframework.boot.actuate.autoconfigure.observation.ObservationAutoConfiguration"
          ]
        },
        "mvcUriComponentsContributor": {
          "aliases": [],
          "scope": "singleton",
          "type": "org.springframework.web.method.support.CompositeUriComponentsContributor",
          "resource": "class path resource [org/springframework/boot/autoconfigure/web/servlet/WebMvcAutoConfiguration$EnableWebMvcConfiguration.class]",
          "dependencies": [
            "org.springframework.boot.autoconfigure.web.servlet.WebMvcAutoConfiguration$EnableWebMvcConfiguration",
            "mvcConversionService",
            "requestMappingHandlerAdapter"
          ]
        },
        "webClientBuilder": {
          "aliases": [],
          "scope": "prototype",
          "type": "org.springframework.web.reactive.function.client.WebClient$Builder",
          "resource": "class path resource [org/springframework/boot/autoconfigure/web/reactive/function/client/WebClientAutoConfiguration.class]",
          "dependencies": []
        },
        "org.springframework.boot.actuate.autoconfigure.web.server.ManagementContextAutoConfiguration": {
          "aliases": [],
          "scope": "singleton",
          "type": "org.springframework.boot.actuate.autoconfigure.web.server.ManagementContextAutoConfiguration",
          "dependencies": []
        },
        "endpointObjectMapper": {
          "aliases": [],
          "scope": "singleton",
          "type": "org.springframework.boot.actuate.autoconfigure.endpoint.jackson.JacksonEndpointAutoConfiguration$$Lambda/0x00007ff400a51c30",
          "resource": "class path resource [org/springframework/boot/actuate/autoconfigure/endpoint/jackson/JacksonEndpointAutoConfiguration.class]",
          "dependencies": [
            "org.springframework.boot.actuate.autoconfigure.endpoint.jackson.JacksonEndpointAutoConfiguration"
          ]
        },
        "jpaSharedEM_entityManagerFactory": {
          "aliases": [],
          "scope": "singleton",
          "type": "jdk.proxy2.$Proxy155",
          "dependencies": [
            "entityManagerFactory"
          ]
        },
        "application": {
          "aliases": [],
          "scope": "singleton",
          "type": "cn.netkiller.Application$$SpringCGLIB$$0",
          "dependencies": []
        },
        "httpMessageConvertersRestClientCustomizer": {
          "aliases": [],
          "scope": "singleton",
          "type": "org.springframework.boot.autoconfigure.web.client.HttpMessageConvertersRestClientCustomizer",
          "resource": "class path resource [org/springframework/boot/autoconfigure/web/client/RestClientAutoConfiguration.class]",
          "dependencies": [
            "org.springframework.boot.autoconfigure.web.client.RestClientAutoConfiguration"
          ]
        },
        "redisMappingConfiguration#0": {
          "aliases": [],
          "scope": "singleton",
          "type": "org.springframework.data.redis.core.convert.MappingConfiguration",
          "dependencies": [
            "redisIndexConfiguration#0",
            "redisKeyspaceConfiguration#0"
          ]
        },
        "taskExecutorBuilder": {
          "aliases": [],
          "scope": "singleton",
          "type": "org.springframework.boot.task.TaskExecutorBuilder",
          "resource": "class path resource [org/springframework/boot/autoconfigure/task/TaskExecutorConfigurations$TaskExecutorBuilderConfiguration.class]",
          "dependencies": [
            "org.springframework.boot.autoconfigure.task.TaskExecutorConfigurations$TaskExecutorBuilderConfiguration",
            "spring.task.execution-org.springframework.boot.autoconfigure.task.TaskExecutionProperties"
          ]
        },
        "org.springframework.boot.autoconfigure.jdbc.JdbcTemplateConfiguration": {
          "aliases": [],
          "scope": "singleton",
          "type": "org.springframework.boot.autoconfigure.jdbc.JdbcTemplateConfiguration",
          "dependencies": []
        },
        "queryDslQuerydslPredicateOperationCustomizer": {
          "aliases": [],
          "scope": "singleton",
          "type": "org.springdoc.core.customizers.QuerydslPredicateOperationCustomizer",
          "resource": "class path resource [org/springdoc/core/configuration/SpringDocConfiguration$QuerydslProvider.class]",
          "dependencies": [
            "org.springdoc.core.configuration.SpringDocConfiguration$QuerydslProvider",
            "org.springdoc.core.properties.SpringDocConfigProperties"
          ]
        },
        "org.springframework.boot.actuate.autoconfigure.endpoint.jackson.JacksonEndpointAutoConfiguration": {
          "aliases": [],
          "scope": "singleton",
          "type": "org.springframework.boot.actuate.autoconfigure.endpoint.jackson.JacksonEndpointAutoConfiguration",
          "dependencies": []
        },
        "multipleOpenApiResource": {
          "aliases": [],
          "scope": "singleton",
          "type": "org.springdoc.webmvc.api.MultipleOpenApiWebMvcResource",
          "resource": "class path resource [org/springdoc/webmvc/core/configuration/MultipleOpenApiSupportConfiguration.class]",
          "dependencies": [
            "org.springdoc.webmvc.core.configuration.MultipleOpenApiSupportConfiguration",
            "adminApi",
            "requestBuilder",
            "responseBuilder",
            "operationBuilder",
            "org.springdoc.core.properties.SpringDocConfigProperties",
            "springDocProviders",
            "springDocCustomizers"
          ]
        },
        "platformTransactionManagerCustomizers": {
          "aliases": [],
          "scope": "singleton",
          "type": "org.springframework.boot.autoconfigure.transaction.TransactionManagerCustomizers",
          "resource": "class path resource [org/springframework/boot/autoconfigure/transaction/TransactionManagerCustomizationAutoConfiguration.class]",
          "dependencies": [
            "org.springframework.boot.autoconfigure.transaction.TransactionManagerCustomizationAutoConfiguration"
          ]
        },
        "requestBodyBuilder": {
          "aliases": [],
          "scope": "singleton",
          "type": "org.springdoc.core.service.RequestBodyService",
          "resource": "class path resource [org/springdoc/core/configuration/SpringDocConfiguration.class]",
          "dependencies": [
            "org.springdoc.core.configuration.SpringDocConfiguration",
            "parameterBuilder"
          ]
        },
        "endpointCachingOperationInvokerAdvisor": {
          "aliases": [],
          "scope": "singleton",
          "type": "org.springframework.boot.actuate.endpoint.invoker.cache.CachingOperationInvokerAdvisor",
          "resource": "class path resource [org/springframework/boot/actuate/autoconfigure/endpoint/EndpointAutoConfiguration.class]",
          "dependencies": [
            "org.springframework.boot.actuate.autoconfigure.endpoint.EndpointAutoConfiguration",
            "environment"
          ]
        },
        "defaultServletHandlerMapping": {
          "aliases": [],
          "scope": "singleton",
          "type": "org.springframework.web.servlet.HandlerMapping",
          "resource": "class path resource [org/springframework/boot/autoconfigure/web/servlet/WebMvcAutoConfiguration$EnableWebMvcConfiguration.class]",
          "dependencies": [
            "org.springframework.boot.autoconfigure.web.servlet.WebMvcAutoConfiguration$EnableWebMvcConfiguration"
          ]
        },
        "swaggerWebMvcConfigurer": {
          "aliases": [],
          "scope": "singleton",
          "type": "org.springdoc.webmvc.ui.SwaggerWebMvcConfigurer",
          "resource": "class path resource [org/springdoc/webmvc/ui/SwaggerConfig.class]",
          "dependencies": [
            "org.springdoc.webmvc.ui.SwaggerConfig",
            "org.springdoc.core.properties.SwaggerUiConfigParameters",
            "indexPageTransformer",
            "swaggerResourceResolver"
          ]
        },
        "persistenceExceptionTranslationPostProcessor": {
          "aliases": [],
          "scope": "singleton",
          "type": "org.springframework.dao.annotation.PersistenceExceptionTranslationPostProcessor",
          "resource": "class path resource [org/springframework/boot/autoconfigure/dao/PersistenceExceptionTranslationAutoConfiguration.class]",
          "dependencies": [
            "environment"
          ]
        },
        "management.health.db-org.springframework.boot.actuate.autoconfigure.jdbc.DataSourceHealthIndicatorProperties": {
          "aliases": [],
          "scope": "singleton",
          "type": "org.springframework.boot.actuate.autoconfigure.jdbc.DataSourceHealthIndicatorProperties",
          "dependencies": []
        },
        "observationRegistryPostProcessor": {
          "aliases": [],
          "scope": "singleton",
          "type": "org.springframework.boot.actuate.autoconfigure.observation.ObservationRegistryPostProcessor",
          "resource": "class path resource [org/springframework/boot/actuate/autoconfigure/observation/ObservationAutoConfiguration.class]",
          "dependencies": []
        },
        "spring.data.web-org.springframework.boot.autoconfigure.data.web.SpringDataWebProperties": {
          "aliases": [],
          "scope": "singleton",
          "type": "org.springframework.boot.autoconfigure.data.web.SpringDataWebProperties",
          "dependencies": []
        },
        "characterEncodingFilter": {
          "aliases": [],
          "scope": "singleton",
          "type": "org.springframework.boot.web.servlet.filter.OrderedCharacterEncodingFilter",
          "resource": "class path resource [org/springframework/boot/autoconfigure/web/servlet/HttpEncodingAutoConfiguration.class]",
          "dependencies": [
            "org.springframework.boot.autoconfigure.web.servlet.HttpEncodingAutoConfiguration"
          ]
        },
        "sortCustomizer": {
          "aliases": [],
          "scope": "singleton",
          "type": "org.springframework.boot.autoconfigure.data.web.SpringDataWebAutoConfiguration$$Lambda/0x00007ff400a7b1f8",
          "resource": "class path resource [org/springframework/boot/autoconfigure/data/web/SpringDataWebAutoConfiguration.class]",
          "dependencies": [
            "org.springframework.boot.autoconfigure.data.web.SpringDataWebAutoConfiguration"
          ]
        },
        "webEndpointDiscoverer": {
          "aliases": [],
          "scope": "singleton",
          "type": "org.springframework.boot.actuate.endpoint.web.annotation.WebEndpointDiscoverer",
          "resource": "class path resource [org/springframework/boot/actuate/autoconfigure/endpoint/web/WebEndpointAutoConfiguration.class]",
          "dependencies": [
            "org.springframework.boot.actuate.autoconfigure.endpoint.web.WebEndpointAutoConfiguration",
            "endpointOperationParameterMapper",
            "endpointMediaTypes"
          ]
        },
        "org.springframework.boot.autoconfigure.web.servlet.DispatcherServletAutoConfiguration$DispatcherServletRegistrationConfiguration": {
          "aliases": [],
          "scope": "singleton",
          "type": "org.springframework.boot.autoconfigure.web.servlet.DispatcherServletAutoConfiguration$DispatcherServletRegistrationConfiguration",
          "dependencies": []
        },
        "preserveErrorControllerTargetClassPostProcessor": {
          "aliases": [],
          "scope": "singleton",
          "type": "org.springframework.boot.autoconfigure.web.servlet.error.ErrorMvcAutoConfiguration$PreserveErrorControllerTargetClassPostProcessor",
          "resource": "class path resource [org/springframework/boot/autoconfigure/web/servlet/error/ErrorMvcAutoConfiguration.class]",
          "dependencies": []
        },
        "org.springframework.boot.autoconfigure.jackson.JacksonAutoConfiguration$JacksonObjectMapperBuilderConfiguration": {
          "aliases": [],
          "scope": "singleton",
          "type": "org.springframework.boot.autoconfigure.jackson.JacksonAutoConfiguration$JacksonObjectMapperBuilderConfiguration",
          "dependencies": []
        },
        "org.springframework.boot.autoconfigure.web.reactive.function.client.ClientHttpConnectorFactoryConfiguration$ReactorNetty": {
          "aliases": [],
          "scope": "singleton",
          "type": "org.springframework.boot.autoconfigure.web.reactive.function.client.ClientHttpConnectorFactoryConfiguration$ReactorNetty",
          "dependencies": []
        },
        "openAPIBuilder": {
          "aliases": [],
          "scope": "prototype",
          "type": "org.springdoc.core.service.OpenAPIService",
          "resource": "class path resource [org/springdoc/core/configuration/SpringDocConfiguration.class]",
          "dependencies": [
            "org.springdoc.core.configuration.SpringDocConfiguration",
            "securityParser",
            "org.springdoc.core.properties.SpringDocConfigProperties",
            "propertyResolverUtils"
          ]
        },
        "logbackMetrics": {
          "aliases": [],
          "scope": "singleton",
          "type": "io.micrometer.core.instrument.binder.logging.LogbackMetrics",
          "resource": "class path resource [org/springframework/boot/actuate/autoconfigure/metrics/LogbackMetricsAutoConfiguration.class]",
          "dependencies": [
            "org.springframework.boot.actuate.autoconfigure.metrics.LogbackMetricsAutoConfiguration"
          ]
        },
        "management.info-org.springframework.boot.actuate.autoconfigure.info.InfoContributorProperties": {
          "aliases": [],
          "scope": "singleton",
          "type": "org.springframework.boot.actuate.autoconfigure.info.InfoContributorProperties",
          "dependencies": []
        },
        "org.springframework.boot.actuate.autoconfigure.metrics.data.RepositoryMetricsAutoConfiguration": {
          "aliases": [],
          "scope": "singleton",
          "type": "org.springframework.boot.actuate.autoconfigure.metrics.data.RepositoryMetricsAutoConfiguration",
          "dependencies": [
            "management.metrics-org.springframework.boot.actuate.autoconfigure.metrics.MetricsProperties"
          ]
        },
        "propertySourcesPlaceholderConfigurer": {
          "aliases": [],
          "scope": "singleton",
          "type": "org.springframework.context.support.PropertySourcesPlaceholderConfigurer",
          "resource": "class path resource [org/springframework/boot/autoconfigure/context/PropertyPlaceholderAutoConfiguration.class]",
          "dependencies": []
        },
        "org.springframework.boot.autoconfigure.transaction.TransactionManagerCustomizationAutoConfiguration": {
          "aliases": [],
          "scope": "singleton",
          "type": "org.springframework.boot.autoconfigure.transaction.TransactionManagerCustomizationAutoConfiguration",
          "dependencies": []
        },
        "org.springframework.boot.autoconfigure.transaction.jta.JtaAutoConfiguration": {
          "aliases": [],
          "scope": "singleton",
          "type": "org.springframework.boot.autoconfigure.transaction.jta.JtaAutoConfiguration",
          "dependencies": []
        },
        "management.endpoints.web.cors-org.springframework.boot.actuate.autoconfigure.endpoint.web.CorsEndpointProperties": {
          "aliases": [],
          "scope": "singleton",
          "type": "org.springframework.boot.actuate.autoconfigure.endpoint.web.CorsEndpointProperties",
          "dependencies": []
        },
        "stringHttpMessageConverter": {
          "aliases": [],
          "scope": "singleton",
          "type": "org.springframework.http.converter.StringHttpMessageConverter",
          "resource": "class path resource [org/springframework/boot/autoconfigure/http/HttpMessageConvertersAutoConfiguration$StringHttpMessageConverterConfiguration.class]",
          "dependencies": [
            "org.springframework.boot.autoconfigure.http.HttpMessageConvertersAutoConfiguration$StringHttpMessageConverterConfiguration",
            "environment"
          ]
        },
        "org.springframework.boot.autoconfigure.data.redis.RedisRepositoriesAutoConfiguration": {
          "aliases": [],
          "scope": "singleton",
          "type": "org.springframework.boot.autoconfigure.data.redis.RedisRepositoriesAutoConfiguration",
          "dependencies": []
        },
        "org.springframework.boot.autoconfigure.web.embedded.EmbeddedWebServerFactoryCustomizerAutoConfiguration$TomcatWebServerFactoryCustomizerConfiguration": {
          "aliases": [],
          "scope": "singleton",
          "type": "org.springframework.boot.autoconfigure.web.embedded.EmbeddedWebServerFactoryCustomizerAutoConfiguration$TomcatWebServerFactoryCustomizerConfiguration",
          "dependencies": []
        },
        "chatGPT": {
          "aliases": [],
          "scope": "singleton",
          "type": "cn.netkiller.component.ChatGPT$$SpringCGLIB$$0",
          "resource": "URL [jar:nested:/app/watch-1.0-SNAPSHOT.jar/!BOOT-INF/classes/!/cn/netkiller/component/ChatGPT.class]",
          "dependencies": []
        },
        "jsonComponentModule": {
          "aliases": [],
          "scope": "singleton",
          "type": "org.springframework.boot.jackson.JsonComponentModule",
          "resource": "class path resource [org/springframework/boot/autoconfigure/jackson/JacksonAutoConfiguration.class]",
          "dependencies": [
            "org.springframework.boot.autoconfigure.jackson.JacksonAutoConfiguration"
          ]
        },
        "org.springdoc.core.configuration.SpringDocUIConfiguration": {
          "aliases": [],
          "scope": "singleton",
          "type": "org.springdoc.core.configuration.SpringDocUIConfiguration",
          "dependencies": []
        },
        "org.springframework.boot.actuate.autoconfigure.web.mappings.MappingsEndpointAutoConfiguration$ServletWebConfiguration$SpringMvcConfiguration": {
          "aliases": [],
          "scope": "singleton",
          "type": "org.springframework.boot.actuate.autoconfigure.web.mappings.MappingsEndpointAutoConfiguration$ServletWebConfiguration$SpringMvcConfiguration",
          "dependencies": []
        },
        "entityManagerFactoryBuilder": {
          "aliases": [],
          "scope": "singleton",
          "type": "org.springframework.boot.orm.jpa.EntityManagerFactoryBuilder",
          "resource": "class path resource [org/springframework/boot/autoconfigure/orm/jpa/HibernateJpaConfiguration.class]",
          "dependencies": [
            "org.springframework.boot.autoconfigure.orm.jpa.HibernateJpaConfiguration",
            "jpaVendorAdapter"
          ]
        },
        "org.springframework.boot.autoconfigure.web.embedded.EmbeddedWebServerFactoryCustomizerAutoConfiguration": {
          "aliases": [],
          "scope": "singleton",
          "type": "org.springframework.boot.autoconfigure.web.embedded.EmbeddedWebServerFactoryCustomizerAutoConfiguration",
          "dependencies": []
        },
        "audioService": {
          "aliases": [],
          "scope": "singleton",
          "type": "cn.netkiller.component.AudioService",
          "resource": "URL [jar:nested:/app/watch-1.0-SNAPSHOT.jar/!BOOT-INF/classes/!/cn/netkiller/component/AudioService.class]",
          "dependencies": []
        },
        "mappingJackson2HttpMessageConverter": {
          "aliases": [],
          "scope": "singleton",
          "type": "org.springframework.http.converter.json.MappingJackson2HttpMessageConverter",
          "resource": "class path resource [org/springframework/boot/autoconfigure/http/JacksonHttpMessageConvertersConfiguration$MappingJackson2HttpMessageConverterConfiguration.class]",
          "dependencies": [
            "org.springframework.boot.autoconfigure.http.JacksonHttpMessageConvertersConfiguration$MappingJackson2HttpMessageConverterConfiguration",
            "jacksonObjectMapper"
          ]
        },
        "org.springframework.boot.actuate.autoconfigure.env.EnvironmentEndpointAutoConfiguration": {
          "aliases": [],
          "scope": "singleton",
          "type": "org.springframework.boot.actuate.autoconfigure.env.EnvironmentEndpointAutoConfiguration",
          "dependencies": []
        },
        "org.springframework.boot.autoconfigure.jdbc.DataSourceJmxConfiguration": {
          "aliases": [],
          "scope": "singleton",
          "type": "org.springframework.boot.autoconfigure.jdbc.DataSourceJmxConfiguration",
          "dependencies": []
        },
        "org.springframework.boot.actuate.autoconfigure.data.redis.RedisReactiveHealthContributorAutoConfiguration": {
          "aliases": [],
          "scope": "singleton",
          "type": "org.springframework.boot.actuate.autoconfigure.data.redis.RedisReactiveHealthContributorAutoConfiguration",
          "dependencies": [
            "redisConnectionFactory"
          ]
        },
        "stableDiffusionService": {
          "aliases": [],
          "scope": "singleton",
          "type": "cn.netkiller.service.StableDiffusionService$$SpringCGLIB$$0",
          "resource": "URL [jar:nested:/app/watch-1.0-SNAPSHOT.jar/!BOOT-INF/classes/!/cn/netkiller/service/StableDiffusionService.class]",
          "dependencies": [
            "aliyunService",
            "pictureService",
            "sessionStatusService",
            "mqttService"
          ]
        },
        "spring.reactor.netty-org.springframework.boot.autoconfigure.reactor.netty.ReactorNettyProperties": {
          "aliases": [],
          "scope": "singleton",
          "type": "org.springframework.boot.autoconfigure.reactor.netty.ReactorNettyProperties",
          "dependencies": []
        },
        "healthStatusAggregator": {
          "aliases": [],
          "scope": "singleton",
          "type": "org.springframework.boot.actuate.health.SimpleStatusAggregator",
          "resource": "class path resource [org/springframework/boot/actuate/autoconfigure/health/HealthEndpointConfiguration.class]",
          "dependencies": [
            "org.springframework.boot.actuate.autoconfigure.health.HealthEndpointConfiguration",
            "management.endpoint.health-org.springframework.boot.actuate.autoconfigure.health.HealthEndpointProperties"
          ]
        },
        "org.springframework.boot.actuate.autoconfigure.metrics.SystemMetricsAutoConfiguration": {
          "aliases": [],
          "scope": "singleton",
          "type": "org.springframework.boot.actuate.autoconfigure.metrics.SystemMetricsAutoConfiguration",
          "dependencies": []
        },
        "management.server-org.springframework.boot.actuate.autoconfigure.web.server.ManagementServerProperties": {
          "aliases": [],
          "scope": "singleton",
          "type": "org.springframework.boot.actuate.autoconfigure.web.server.ManagementServerProperties",
          "dependencies": []
        },
        "servletWebServerFactoryCustomizer": {
          "aliases": [],
          "scope": "singleton",
          "type": "org.springframework.boot.autoconfigure.web.servlet.ServletWebServerFactoryCustomizer",
          "resource": "class path resource [org/springframework/boot/autoconfigure/web/servlet/ServletWebServerFactoryAutoConfiguration.class]",
          "dependencies": [
            "org.springframework.boot.autoconfigure.web.servlet.ServletWebServerFactoryAutoConfiguration",
            "server-org.springframework.boot.autoconfigure.web.ServerProperties"
          ]
        },
        "mvcUrlPathHelper": {
          "aliases": [],
          "scope": "singleton",
          "type": "org.springframework.web.util.UrlPathHelper",
          "resource": "class path resource [org/springframework/boot/autoconfigure/web/servlet/WebMvcAutoConfiguration$EnableWebMvcConfiguration.class]",
          "dependencies": [
            "org.springframework.boot.autoconfigure.web.servlet.WebMvcAutoConfiguration$EnableWebMvcConfiguration"
          ]
        },
        "transactionTemplate": {
          "aliases": [],
          "scope": "singleton",
          "type": "org.springframework.transaction.support.TransactionTemplate",
          "resource": "class path resource [org/springframework/boot/autoconfigure/transaction/TransactionAutoConfiguration$TransactionTemplateConfiguration.class]",
          "dependencies": [
            "org.springframework.boot.autoconfigure.transaction.TransactionAutoConfiguration$TransactionTemplateConfiguration",
            "transactionManager"
          ]
        },
        "jpa.named-queries#4": {
          "aliases": [],
          "scope": "singleton",
          "type": "org.springframework.data.repository.core.support.PropertiesBasedNamedQueries",
          "dependencies": []
        },
        "nullableKotlinRequestParameterCustomizer": {
          "aliases": [],
          "scope": "singleton",
          "type": "org.springdoc.core.configuration.SpringDocKotlinConfiguration$$Lambda/0x00007ff400aa6460",
          "resource": "class path resource [org/springdoc/core/configuration/SpringDocKotlinConfiguration.class]",
          "dependencies": [
            "org.springdoc.core.configuration.SpringDocKotlinConfiguration"
          ]
        },
        "org.springframework.boot.actuate.autoconfigure.metrics.startup.StartupTimeMetricsListenerAutoConfiguration": {
          "aliases": [],
          "scope": "singleton",
          "type": "org.springframework.boot.actuate.autoconfigure.metrics.startup.StartupTimeMetricsListenerAutoConfiguration",
          "dependencies": []
        },
        "servletMappingDescriptionProvider": {
          "aliases": [],
          "scope": "singleton",
          "type": "org.springframework.boot.actuate.web.mappings.servlet.ServletsMappingDescriptionProvider",
          "resource": "class path resource [org/springframework/boot/actuate/autoconfigure/web/mappings/MappingsEndpointAutoConfiguration$ServletWebConfiguration.class]",
          "dependencies": [
            "org.springframework.boot.actuate.autoconfigure.web.mappings.MappingsEndpointAutoConfiguration$ServletWebConfiguration"
          ]
        },
        "org.springframework.boot.autoconfigure.task.TaskSchedulingConfigurations$ThreadPoolTaskSchedulerBuilderConfiguration": {
          "aliases": [],
          "scope": "singleton",
          "type": "org.springframework.boot.autoconfigure.task.TaskSchedulingConfigurations$ThreadPoolTaskSchedulerBuilderConfiguration",
          "dependencies": []
        },
        "org.springdoc.core.configuration.SpringDocConfiguration$WebConversionServiceConfiguration": {
          "aliases": [],
          "scope": "singleton",
          "type": "org.springdoc.core.configuration.SpringDocConfiguration$WebConversionServiceConfiguration",
          "dependencies": []
        },
        "org.springdoc.webmvc.core.configuration.SpringDocWebMvcConfiguration$SpringDocWebMvcActuatorConfiguration": {
          "aliases": [],
          "scope": "singleton",
          "type": "org.springdoc.webmvc.core.configuration.SpringDocWebMvcConfiguration$SpringDocWebMvcActuatorConfiguration",
          "dependencies": []
        },
        "stringRedisTemplate": {
          "aliases": [],
          "scope": "singleton",
          "type": "org.springframework.data.redis.core.StringRedisTemplate",
          "resource": "class path resource [org/springframework/boot/autoconfigure/data/redis/RedisAutoConfiguration.class]",
          "dependencies": [
            "org.springframework.boot.autoconfigure.data.redis.RedisAutoConfiguration",
            "redisConnectionFactory"
          ]
        },
        "org.springframework.boot.actuate.autoconfigure.scheduling.ScheduledTasksObservabilityAutoConfiguration": {
          "aliases": [],
          "scope": "singleton",
          "type": "org.springframework.boot.actuate.autoconfigure.scheduling.ScheduledTasksObservabilityAutoConfiguration",
          "dependencies": []
        },
        "org.springframework.boot.actuate.autoconfigure.observation.ObservationAutoConfiguration": {
          "aliases": [],
          "scope": "singleton",
          "type": "org.springframework.boot.actuate.autoconfigure.observation.ObservationAutoConfiguration",
          "dependencies": []
        },
        "spring.sql.init-org.springframework.boot.autoconfigure.sql.init.SqlInitializationProperties": {
          "aliases": [],
          "scope": "singleton",
          "type": "org.springframework.boot.autoconfigure.sql.init.SqlInitializationProperties",
          "dependencies": []
        },
        "reactiveHealthContributorRegistry": {
          "aliases": [],
          "scope": "singleton",
          "type": "org.springframework.boot.actuate.autoconfigure.health.AutoConfiguredReactiveHealthContributorRegistry",
          "resource": "class path resource [org/springframework/boot/actuate/autoconfigure/health/ReactiveHealthEndpointConfiguration.class]",
          "dependencies": [
            "org.springframework.boot.actuate.autoconfigure.health.ReactiveHealthEndpointConfiguration",
            "diskSpaceHealthIndicator",
            "pingHealthContributor",
            "dbHealthContributor",
            "redisHealthContributor",
            "healthEndpointGroups"
          ]
        },
        "adminApi": {
          "aliases": [],
          "scope": "singleton",
          "type": "org.springdoc.core.models.GroupedOpenApi",
          "resource": "class path resource [cn/netkiller/config/Knife4jConfiguration.class]",
          "dependencies": [
            "knife4jConfiguration"
          ]
        },
        "jpa.named-queries#1": {
          "aliases": [],
          "scope": "singleton",
          "type": "org.springframework.data.repository.core.support.PropertiesBasedNamedQueries",
          "dependencies": []
        },
        "org.springframework.boot.actuate.autoconfigure.metrics.JvmMetricsAutoConfiguration": {
          "aliases": [],
          "scope": "singleton",
          "type": "org.springframework.boot.actuate.autoconfigure.metrics.JvmMetricsAutoConfiguration",
          "dependencies": []
        },
        "jpa.named-queries#0": {
          "aliases": [],
          "scope": "singleton",
          "type": "org.springframework.data.repository.core.support.PropertiesBasedNamedQueries",
          "dependencies": []
        },
        "org.springframework.boot.autoconfigure.reactor.ReactorAutoConfiguration": {
          "aliases": [],
          "scope": "singleton",
          "type": "org.springframework.boot.autoconfigure.reactor.ReactorAutoConfiguration",
          "dependencies": [
            "spring.reactor-org.springframework.boot.autoconfigure.reactor.ReactorProperties"
          ]
        },
        "jpa.named-queries#3": {
          "aliases": [],
          "scope": "singleton",
          "type": "org.springframework.data.repository.core.support.PropertiesBasedNamedQueries",
          "dependencies": []
        },
        "org.springframework.boot.autoconfigure.jackson.JacksonAutoConfiguration$Jackson2ObjectMapperBuilderCustomizerConfiguration": {
          "aliases": [],
          "scope": "singleton",
          "type": "org.springframework.boot.autoconfigure.jackson.JacksonAutoConfiguration$Jackson2ObjectMapperBuilderCustomizerConfiguration",
          "dependencies": []
        },
        "org.springframework.boot.autoconfigure.http.HttpMessageConvertersAutoConfiguration$StringHttpMessageConverterConfiguration": {
          "aliases": [],
          "scope": "singleton",
          "type": "org.springframework.boot.autoconfigure.http.HttpMessageConvertersAutoConfiguration$StringHttpMessageConverterConfiguration",
          "dependencies": []
        },
        "jpa.named-queries#2": {
          "aliases": [],
          "scope": "singleton",
          "type": "org.springframework.data.repository.core.support.PropertiesBasedNamedQueries",
          "dependencies": []
        },
        "standardJacksonObjectMapperBuilderCustomizer": {
          "aliases": [],
          "scope": "singleton",
          "type": "org.springframework.boot.autoconfigure.jackson.JacksonAutoConfiguration$Jackson2ObjectMapperBuilderCustomizerConfiguration$StandardJackson2ObjectMapperBuilderCustomizer",
          "resource": "class path resource [org/springframework/boot/autoconfigure/jackson/JacksonAutoConfiguration$Jackson2ObjectMapperBuilderCustomizerConfiguration.class]",
          "dependencies": [
            "org.springframework.boot.autoconfigure.jackson.JacksonAutoConfiguration$Jackson2ObjectMapperBuilderCustomizerConfiguration",
            "spring.jackson-org.springframework.boot.autoconfigure.jackson.JacksonProperties"
          ]
        },
        "taskSchedulerBuilder": {
          "aliases": [],
          "scope": "singleton",
          "type": "org.springframework.boot.task.TaskSchedulerBuilder",
          "resource": "class path resource [org/springframework/boot/autoconfigure/task/TaskSchedulingConfigurations$TaskSchedulerBuilderConfiguration.class]",
          "dependencies": [
            "org.springframework.boot.autoconfigure.task.TaskSchedulingConfigurations$TaskSchedulerBuilderConfiguration",
            "spring.task.scheduling-org.springframework.boot.autoconfigure.task.TaskSchedulingProperties"
          ]
        },
        "org.springframework.boot.autoconfigure.task.TaskExecutionAutoConfiguration": {
          "aliases": [],
          "scope": "singleton",
          "type": "org.springframework.boot.autoconfigure.task.TaskExecutionAutoConfiguration",
          "dependencies": []
        },
        "org.springframework.boot.autoconfigure.web.servlet.DispatcherServletAutoConfiguration": {
          "aliases": [],
          "scope": "singleton",
          "type": "org.springframework.boot.autoconfigure.web.servlet.DispatcherServletAutoConfiguration",
          "dependencies": []
        },
        "spring.data.redis-org.springframework.boot.autoconfigure.data.redis.RedisProperties": {
          "aliases": [],
          "scope": "singleton",
          "type": "org.springframework.boot.autoconfigure.data.redis.RedisProperties",
          "dependencies": []
        },
        "simpleMeterRegistry": {
          "aliases": [],
          "scope": "singleton",
          "type": "io.micrometer.core.instrument.simple.SimpleMeterRegistry",
          "resource": "class path resource [org/springframework/boot/actuate/autoconfigure/metrics/export/simple/SimpleMetricsExportAutoConfiguration.class]",
          "dependencies": [
            "org.springframework.boot.actuate.autoconfigure.metrics.export.simple.SimpleMetricsExportAutoConfiguration",
            "simpleConfig",
            "micrometerClock"
          ]
        },
        "org.springdoc.core.configuration.SpringDocPageableConfiguration": {
          "aliases": [],
          "scope": "singleton",
          "type": "org.springdoc.core.configuration.SpringDocPageableConfiguration",
          "dependencies": []
        },
        "entityManagerFactory": {
          "aliases": [],
          "scope": "singleton",
          "type": "jdk.proxy2.$Proxy148",
          "resource": "class path resource [org/springframework/boot/autoconfigure/orm/jpa/HibernateJpaConfiguration.class]",
          "dependencies": [
            "cacheManager",
            "dataSourceScriptDatabaseInitializer",
            "org.springframework.boot.autoconfigure.orm.jpa.HibernateJpaConfiguration",
            "entityManagerFactoryBuilder",
            "persistenceManagedTypes"
          ]
        },
        "webClientSsl": {
          "aliases": [],
          "scope": "singleton",
          "type": "org.springframework.boot.autoconfigure.web.reactive.function.client.AutoConfiguredWebClientSsl",
          "resource": "class path resource [org/springframework/boot/autoconfigure/web/reactive/function/client/WebClientAutoConfiguration.class]",
          "dependencies": [
            "org.springframework.boot.autoconfigure.web.reactive.function.client.WebClientAutoConfiguration",
            "reactorClientHttpConnectorFactory",
            "sslBundleRegistry"
          ]
        },
        "startupTimeMetrics": {
          "aliases": [],
          "scope": "singleton",
          "type": "org.springframework.boot.actuate.metrics.startup.StartupTimeMetricsListener",
          "resource": "class path resource [org/springframework/boot/actuate/autoconfigure/metrics/startup/StartupTimeMetricsListenerAutoConfiguration.class]",
          "dependencies": [
            "org.springframework.boot.actuate.autoconfigure.metrics.startup.StartupTimeMetricsListenerAutoConfiguration",
            "simpleMeterRegistry"
          ]
        },
        "observedAspect": {
          "aliases": [],
          "scope": "singleton",
          "type": "io.micrometer.observation.aop.ObservedAspect",
          "resource": "class path resource [org/springframework/boot/actuate/autoconfigure/observation/ObservationAutoConfiguration$ObservedAspectConfiguration.class]",
          "dependencies": [
            "org.springframework.boot.actuate.autoconfigure.observation.ObservationAutoConfiguration$ObservedAspectConfiguration",
            "observationRegistry"
          ]
        },
        "org.springframework.boot.actuate.autoconfigure.metrics.web.tomcat.TomcatMetricsAutoConfiguration": {
          "aliases": [],
          "scope": "singleton",
          "type": "org.springframework.boot.actuate.autoconfigure.metrics.web.tomcat.TomcatMetricsAutoConfiguration",
          "dependencies": []
        },
        "org.springframework.boot.autoconfigure.jdbc.metadata.DataSourcePoolMetadataProvidersConfiguration": {
          "aliases": [],
          "scope": "singleton",
          "type": "org.springframework.boot.autoconfigure.jdbc.metadata.DataSourcePoolMetadataProvidersConfiguration",
          "dependencies": []
        },
        "org.springframework.boot.actuate.autoconfigure.observation.web.servlet.WebMvcObservationAutoConfiguration": {
          "aliases": [],
          "scope": "singleton",
          "type": "org.springframework.boot.actuate.autoconfigure.observation.web.servlet.WebMvcObservationAutoConfiguration",
          "dependencies": []
        },
        "spring.mvc-org.springframework.boot.autoconfigure.web.servlet.WebMvcProperties": {
          "aliases": [],
          "scope": "singleton",
          "type": "org.springframework.boot.autoconfigure.web.servlet.WebMvcProperties",
          "dependencies": []
        },
        "knife4j.setting-com.github.xiaoymin.knife4j.spring.configuration.Knife4jSetting": {
          "aliases": [],
          "scope": "singleton",
          "type": "com.github.xiaoymin.knife4j.spring.configuration.Knife4jSetting",
          "dependencies": []
        },
        "org.springdoc.core.configuration.SpringDocConfiguration": {
          "aliases": [],
          "scope": "singleton",
          "type": "org.springdoc.core.configuration.SpringDocConfiguration",
          "dependencies": []
        },
        "configurationPropertiesReportEndpoint": {
          "aliases": [],
          "scope": "singleton",
          "type": "org.springframework.boot.actuate.context.properties.ConfigurationPropertiesReportEndpoint",
          "resource": "class path resource [org/springframework/boot/actuate/autoconfigure/context/properties/ConfigurationPropertiesReportEndpointAutoConfiguration.class]",
          "dependencies": [
            "org.springframework.boot.actuate.autoconfigure.context.properties.ConfigurationPropertiesReportEndpointAutoConfiguration",
            "management.endpoint.configprops-org.springframework.boot.actuate.autoconfigure.context.properties.ConfigurationPropertiesReportEndpointProperties"
          ]
        },
        "multipartConfigElement": {
          "aliases": [],
          "scope": "singleton",
          "type": "jakarta.servlet.MultipartConfigElement",
          "resource": "class path resource [org/springframework/boot/autoconfigure/web/servlet/MultipartAutoConfiguration.class]",
          "dependencies": [
            "org.springframework.boot.autoconfigure.web.servlet.MultipartAutoConfiguration"
          ]
        },
        "requestContextFilter": {
          "aliases": [],
          "scope": "singleton",
          "type": "org.springframework.boot.web.servlet.filter.OrderedRequestContextFilter",
          "resource": "class path resource [org/springframework/boot/autoconfigure/web/servlet/WebMvcAutoConfiguration$WebMvcAutoConfigurationAdapter.class]",
          "dependencies": []
        },
        "org.springframework.boot.autoconfigure.orm.jpa.JpaBaseConfiguration$PersistenceManagedTypesConfiguration": {
          "aliases": [],
          "scope": "singleton",
          "type": "org.springframework.boot.autoconfigure.orm.jpa.JpaBaseConfiguration$PersistenceManagedTypesConfiguration",
          "dependencies": []
        },
        "mqttService": {
          "aliases": [],
          "scope": "singleton",
          "type": "cn.netkiller.utils.MqttService",
          "resource": "URL [jar:nested:/app/watch-1.0-SNAPSHOT.jar/!BOOT-INF/classes/!/cn/netkiller/utils/MqttService.class]",
          "dependencies": []
        },
        "operationBuilder": {
          "aliases": [],
          "scope": "singleton",
          "type": "org.springdoc.core.service.OperationService",
          "resource": "class path resource [org/springdoc/core/configuration/SpringDocConfiguration.class]",
          "dependencies": [
            "org.springdoc.core.configuration.SpringDocConfiguration",
            "parameterBuilder",
            "requestBodyBuilder",
            "securityParser",
            "propertyResolverUtils"
          ]
        },
        "org.springframework.boot.actuate.autoconfigure.web.mappings.MappingsEndpointAutoConfiguration$ServletWebConfiguration": {
          "aliases": [],
          "scope": "singleton",
          "type": "org.springframework.boot.actuate.autoconfigure.web.mappings.MappingsEndpointAutoConfiguration$ServletWebConfiguration",
          "dependencies": []
        },
        "beansEndpoint": {
          "aliases": [],
          "scope": "singleton",
          "type": "org.springframework.boot.actuate.beans.BeansEndpoint",
          "resource": "class path resource [org/springframework/boot/actuate/autoconfigure/beans/BeansEndpointAutoConfiguration.class]",
          "dependencies": [
            "org.springframework.boot.actuate.autoconfigure.beans.BeansEndpointAutoConfiguration",
            "org.springframework.boot.web.servlet.context.AnnotationConfigServletWebServerApplicationContext@18e36d14"
          ]
        },
        "lettuceClientResources": {
          "aliases": [],
          "scope": "singleton",
          "type": "io.lettuce.core.resource.DefaultClientResources",
          "resource": "class path resource [org/springframework/boot/autoconfigure/data/redis/LettuceConnectionConfiguration.class]",
          "dependencies": [
            "org.springframework.boot.autoconfigure.data.redis.LettuceConnectionConfiguration"
          ]
        },
        "pageableResolver": {
          "aliases": [],
          "scope": "singleton",
          "type": "org.springframework.data.web.PageableHandlerMethodArgumentResolver",
          "resource": "class path resource [org/springframework/data/web/config/SpringDataWebConfiguration.class]",
          "dependencies": [
            "org.springframework.data.web.config.SpringDataWebConfiguration"
          ]
        },
        "exchangeStrategiesCustomizer": {
          "aliases": [],
          "scope": "singleton",
          "type": "org.springframework.boot.autoconfigure.web.reactive.function.client.WebClientCodecCustomizer",
          "resource": "class path resource [org/springframework/boot/autoconfigure/web/reactive/function/client/WebClientAutoConfiguration$WebClientCodecsConfiguration.class]",
          "dependencies": [
            "org.springframework.boot.autoconfigure.web.reactive.function.client.WebClientAutoConfiguration$WebClientCodecsConfiguration"
          ]
        },
        "localeResolver": {
          "aliases": [],
          "scope": "singleton",
          "type": "org.springframework.web.servlet.i18n.AcceptHeaderLocaleResolver",
          "resource": "class path resource [org/springframework/boot/autoconfigure/web/servlet/WebMvcAutoConfiguration$EnableWebMvcConfiguration.class]",
          "dependencies": [
            "org.springframework.boot.autoconfigure.web.servlet.WebMvcAutoConfiguration$EnableWebMvcConfiguration"
          ]
        },
        "handlerFunctionAdapter": {
          "aliases": [],
          "scope": "singleton",
          "type": "org.springframework.web.servlet.function.support.HandlerFunctionAdapter",
          "resource": "class path resource [org/springframework/boot/autoconfigure/web/servlet/WebMvcAutoConfiguration$EnableWebMvcConfiguration.class]",
          "dependencies": [
            "org.springframework.boot.autoconfigure.web.servlet.WebMvcAutoConfiguration$EnableWebMvcConfiguration"
          ]
        },
        "localSpringDocParameterNameDiscoverer": {
          "aliases": [],
          "scope": "singleton",
          "type": "org.springdoc.core.discoverer.SpringDocParameterNameDiscoverer",
          "resource": "class path resource [org/springdoc/core/configuration/SpringDocConfiguration.class]",
          "dependencies": [
            "org.springdoc.core.configuration.SpringDocConfiguration"
          ]
        },
        "schemaPropertyDeprecatingConverter": {
          "aliases": [],
          "scope": "singleton",
          "type": "org.springdoc.core.converters.SchemaPropertyDeprecatingConverter",
          "resource": "class path resource [org/springdoc/core/configuration/SpringDocConfiguration.class]",
          "dependencies": [
            "org.springdoc.core.configuration.SpringDocConfiguration"
          ]
        },
        "pictureController": {
          "aliases": [],
          "scope": "singleton",
          "type": "cn.netkiller.controller.PictureController",
          "resource": "URL [jar:nested:/app/watch-1.0-SNAPSHOT.jar/!BOOT-INF/classes/!/cn/netkiller/controller/PictureController.class]",
          "dependencies": [
            "pictureService",
            "jdbcTemplate"
          ]
        },
        "org.springframework.boot.actuate.autoconfigure.web.server.ManagementContextAutoConfiguration$SameManagementContextConfiguration": {
          "aliases": [],
          "scope": "singleton",
          "type": "org.springframework.boot.actuate.autoconfigure.web.server.ManagementContextAutoConfiguration$SameManagementContextConfiguration",
          "dependencies": [
            "environment"
          ]
        },
        "org.springframework.boot.autoconfigure.jackson.JacksonAutoConfiguration$JacksonMixinConfiguration": {
          "aliases": [],
          "scope": "singleton",
          "type": "org.springframework.boot.autoconfigure.jackson.JacksonAutoConfiguration$JacksonMixinConfiguration",
          "dependencies": []
        },
        "org.springframework.boot.autoconfigure.jdbc.NamedParameterJdbcTemplateConfiguration": {
          "aliases": [],
          "scope": "singleton",
          "type": "org.springframework.boot.autoconfigure.jdbc.NamedParameterJdbcTemplateConfiguration",
          "dependencies": []
        },
        "org.springframework.boot.autoconfigure.web.reactive.function.client.WebClientAutoConfiguration$WebClientCodecsConfiguration": {
          "aliases": [],
          "scope": "singleton",
          "type": "org.springframework.boot.autoconfigure.web.reactive.function.client.WebClientAutoConfiguration$WebClientCodecsConfiguration",
          "dependencies": []
        },
        "spring.transaction-org.springframework.boot.autoconfigure.transaction.TransactionProperties": {
          "aliases": [],
          "scope": "singleton",
          "type": "org.springframework.boot.autoconfigure.transaction.TransactionProperties",
          "dependencies": []
        },
        "observationRestClientCustomizer": {
          "aliases": [],
          "scope": "singleton",
          "type": "org.springframework.boot.actuate.metrics.web.client.ObservationRestClientCustomizer",
          "resource": "class path resource [org/springframework/boot/actuate/autoconfigure/observation/web/client/RestClientObservationConfiguration.class]",
          "dependencies": [
            "org.springframework.boot.actuate.autoconfigure.observation.web.client.RestClientObservationConfiguration",
            "observationRegistry",
            "management.observations-org.springframework.boot.actuate.autoconfigure.observation.ObservationProperties"
          ]
        },
        "warningService": {
          "aliases": [],
          "scope": "singleton",
          "type": "cn.netkiller.service.WarningService$$SpringCGLIB$$0",
          "resource": "URL [jar:nested:/app/watch-1.0-SNAPSHOT.jar/!BOOT-INF/classes/!/cn/netkiller/service/WarningService.class]",
          "dependencies": [
            "mqttService"
          ]
        },
        "jvmHeapPressureMetrics": {
          "aliases": [],
          "scope": "singleton",
          "type": "io.micrometer.core.instrument.binder.jvm.JvmHeapPressureMetrics",
          "resource": "class path resource [org/springframework/boot/actuate/autoconfigure/metrics/JvmMetricsAutoConfiguration.class]",
          "dependencies": [
            "org.springframework.boot.actuate.autoconfigure.metrics.JvmMetricsAutoConfiguration"
          ]
        },
        "org.springframework.boot.autoconfigure.web.servlet.HttpEncodingAutoConfiguration": {
          "aliases": [],
          "scope": "singleton",
          "type": "org.springframework.boot.autoconfigure.web.servlet.HttpEncodingAutoConfiguration",
          "dependencies": [
            "server-org.springframework.boot.autoconfigure.web.ServerProperties"
          ]
        },
        "welcomePageNotAcceptableHandlerMapping": {
          "aliases": [],
          "scope": "singleton",
          "type": "org.springframework.boot.autoconfigure.web.servlet.WelcomePageNotAcceptableHandlerMapping",
          "resource": "class path resource [org/springframework/boot/autoconfigure/web/servlet/WebMvcAutoConfiguration$EnableWebMvcConfiguration.class]",
          "dependencies": [
            "org.springframework.boot.autoconfigure.web.servlet.WebMvcAutoConfiguration$EnableWebMvcConfiguration",
            "org.springframework.boot.web.servlet.context.AnnotationConfigServletWebServerApplicationContext@18e36d14",
            "mvcConversionService",
            "mvcResourceUrlProvider"
          ]
        },
        "org.springframework.boot.actuate.autoconfigure.observation.web.client.HttpClientObservationsAutoConfiguration": {
          "aliases": [],
          "scope": "singleton",
          "type": "org.springframework.boot.actuate.autoconfigure.observation.web.client.HttpClientObservationsAutoConfiguration",
          "dependencies": []
        },
        "endpointOperationParameterMapper": {
          "aliases": [],
          "scope": "singleton",
          "type": "org.springframework.boot.actuate.endpoint.invoke.convert.ConversionServiceParameterValueMapper",
          "resource": "class path resource [org/springframework/boot/actuate/autoconfigure/endpoint/EndpointAutoConfiguration.class]",
          "dependencies": [
            "org.springframework.boot.actuate.autoconfigure.endpoint.EndpointAutoConfiguration"
          ]
        },
        "org.springframework.boot.autoconfigure.web.embedded.EmbeddedWebServerFactoryCustomizerAutoConfiguration$NettyWebServerFactoryCustomizerConfiguration": {
          "aliases": [],
          "scope": "singleton",
          "type": "org.springframework.boot.autoconfigure.web.embedded.EmbeddedWebServerFactoryCustomizerAutoConfiguration$NettyWebServerFactoryCustomizerConfiguration",
          "dependencies": []
        },
        "org.springframework.boot.actuate.autoconfigure.health.HealthContributorAutoConfiguration": {
          "aliases": [],
          "scope": "singleton",
          "type": "org.springframework.boot.actuate.autoconfigure.health.HealthContributorAutoConfiguration",
          "dependencies": []
        },
        "sslBundleRegistry": {
          "aliases": [],
          "scope": "singleton",
          "type": "org.springframework.boot.ssl.DefaultSslBundleRegistry",
          "resource": "class path resource [org/springframework/boot/autoconfigure/ssl/SslAutoConfiguration.class]",
          "dependencies": [
            "org.springframework.boot.autoconfigure.ssl.SslAutoConfiguration"
          ]
        },
        "jpaVendorAdapter": {
          "aliases": [],
          "scope": "singleton",
          "type": "org.springframework.orm.jpa.vendor.HibernateJpaVendorAdapter",
          "resource": "class path resource [org/springframework/boot/autoconfigure/orm/jpa/HibernateJpaConfiguration.class]",
          "dependencies": [
            "org.springframework.boot.autoconfigure.orm.jpa.HibernateJpaConfiguration"
          ]
        },
        "reactiveStringRedisTemplate": {
          "aliases": [],
          "scope": "singleton",
          "type": "org.springframework.data.redis.core.ReactiveStringRedisTemplate",
          "resource": "class path resource [org/springframework/boot/autoconfigure/data/redis/RedisReactiveAutoConfiguration.class]",
          "dependencies": [
            "org.springframework.boot.autoconfigure.data.redis.RedisReactiveAutoConfiguration",
            "redisConnectionFactory"
          ]
        },
        "org.springframework.boot.actuate.autoconfigure.info.InfoEndpointAutoConfiguration": {
          "aliases": [],
          "scope": "singleton",
          "type": "org.springframework.boot.actuate.autoconfigure.info.InfoEndpointAutoConfiguration",
          "dependencies": []
        },
        "org.springframework.boot.autoconfigure.task.TaskExecutorConfigurations$ThreadPoolTaskExecutorBuilderConfiguration": {
          "aliases": [],
          "scope": "singleton",
          "type": "org.springframework.boot.autoconfigure.task.TaskExecutorConfigurations$ThreadPoolTaskExecutorBuilderConfiguration",
          "dependencies": []
        },
        "cacheAutoConfigurationValidator": {
          "aliases": [],
          "scope": "singleton",
          "type": "org.springframework.boot.autoconfigure.cache.CacheAutoConfiguration$CacheManagerValidator",
          "resource": "class path resource [org/springframework/boot/autoconfigure/cache/CacheAutoConfiguration.class]",
          "dependencies": [
            "org.springframework.boot.autoconfigure.cache.CacheAutoConfiguration",
            "spring.cache-org.springframework.boot.autoconfigure.cache.CacheProperties"
          ]
        },
        "servletWebChildContextFactory": {
          "aliases": [],
          "scope": "singleton",
          "type": "org.springframework.boot.actuate.autoconfigure.web.ManagementContextFactory",
          "resource": "class path resource [org/springframework/boot/actuate/autoconfigure/web/servlet/ServletManagementContextAutoConfiguration.class]",
          "dependencies": []
        },
        "countedAspect": {
          "aliases": [],
          "scope": "singleton",
          "type": "io.micrometer.core.aop.CountedAspect",
          "resource": "class path resource [org/springframework/boot/actuate/autoconfigure/metrics/MetricsAspectsAutoConfiguration.class]",
          "dependencies": [
            "org.springframework.boot.actuate.autoconfigure.metrics.MetricsAspectsAutoConfiguration",
            "simpleMeterRegistry"
          ]
        },
        "additionalModelsConverter": {
          "aliases": [],
          "scope": "singleton",
          "type": "org.springdoc.core.converters.AdditionalModelsConverter",
          "resource": "class path resource [org/springdoc/core/configuration/SpringDocConfiguration.class]",
          "dependencies": [
            "org.springdoc.core.configuration.SpringDocConfiguration",
            "springdocObjectMapperProvider"
          ]
        },
        "jacksonGeoModule": {
          "aliases": [],
          "scope": "singleton",
          "type": "org.springframework.data.geo.GeoModule",
          "resource": "class path resource [org/springframework/data/web/config/SpringDataJacksonConfiguration.class]",
          "dependencies": [
            "org.springframework.data.web.config.SpringDataJacksonConfiguration"
          ]
        },
        "meterRegistryCloser": {
          "aliases": [],
          "scope": "singleton",
          "type": "org.springframework.boot.actuate.autoconfigure.metrics.MetricsAutoConfiguration$MeterRegistryCloser",
          "resource": "class path resource [org/springframework/boot/actuate/autoconfigure/metrics/MetricsAutoConfiguration.class]",
          "dependencies": [
            "org.springframework.boot.actuate.autoconfigure.metrics.MetricsAutoConfiguration"
          ]
        },
        "mvcContentNegotiationManager": {
          "aliases": [],
          "scope": "singleton",
          "type": "org.springframework.web.accept.ContentNegotiationManager",
          "resource": "class path resource [org/springframework/boot/autoconfigure/web/servlet/WebMvcAutoConfiguration$EnableWebMvcConfiguration.class]",
          "dependencies": [
            "org.springframework.boot.autoconfigure.web.servlet.WebMvcAutoConfiguration$EnableWebMvcConfiguration"
          ]
        },
        "org.springframework.boot.actuate.autoconfigure.metrics.CompositeMeterRegistryAutoConfiguration": {
          "aliases": [],
          "scope": "singleton",
          "type": "org.springframework.boot.actuate.autoconfigure.metrics.CompositeMeterRegistryAutoConfiguration",
          "dependencies": []
        },
        "org.springframework.boot.actuate.autoconfigure.metrics.jdbc.DataSourcePoolMetricsAutoConfiguration$HikariDataSourceMetricsConfiguration": {
          "aliases": [],
          "scope": "singleton",
          "type": "org.springframework.boot.actuate.autoconfigure.metrics.jdbc.DataSourcePoolMetricsAutoConfiguration$HikariDataSourceMetricsConfiguration",
          "dependencies": []
        },
        "org.springframework.boot.autoconfigure.task.TaskSchedulingAutoConfiguration": {
          "aliases": [],
          "scope": "singleton",
          "type": "org.springframework.boot.autoconfigure.task.TaskSchedulingAutoConfiguration",
          "dependencies": []
        },
        "httpRequestHandlerAdapter": {
          "aliases": [],
          "scope": "singleton",
          "type": "org.springframework.web.servlet.mvc.HttpRequestHandlerAdapter",
          "resource": "class path resource [org/springframework/boot/autoconfigure/web/servlet/WebMvcAutoConfiguration$EnableWebMvcConfiguration.class]",
          "dependencies": [
            "org.springframework.boot.autoconfigure.web.servlet.WebMvcAutoConfiguration$EnableWebMvcConfiguration"
          ]
        },
        "org.springframework.boot.actuate.autoconfigure.web.mappings.MappingsEndpointAutoConfiguration": {
          "aliases": [],
          "scope": "singleton",
          "type": "org.springframework.boot.actuate.autoconfigure.web.mappings.MappingsEndpointAutoConfiguration",
          "dependencies": []
        },
        "java.lang.Object": {
          "aliases": [],
          "scope": "singleton",
          "type": "java.lang.Object",
          "dependencies": []
        },
        "org.springframework.boot.actuate.autoconfigure.observation.web.client.RestTemplateObservationConfiguration": {
          "aliases": [],
          "scope": "singleton",
          "type": "org.springframework.boot.actuate.autoconfigure.observation.web.client.RestTemplateObservationConfiguration",
          "dependencies": []
        },
        "spring.servlet.multipart-org.springframework.boot.autoconfigure.web.servlet.MultipartProperties": {
          "aliases": [],
          "scope": "singleton",
          "type": "org.springframework.boot.autoconfigure.web.servlet.MultipartProperties",
          "dependencies": []
        },
        "sslPropertiesSslBundleRegistrar": {
          "aliases": [],
          "scope": "singleton",
          "type": "org.springframework.boot.autoconfigure.ssl.SslPropertiesBundleRegistrar",
          "resource": "class path resource [org/springframework/boot/autoconfigure/ssl/SslAutoConfiguration.class]",
          "dependencies": [
            "org.springframework.boot.autoconfigure.ssl.SslAutoConfiguration",
            "fileWatcher"
          ]
        },
        "org.springdoc.webmvc.core.configuration.SpringDocWebMvcConfiguration$SpringDocWebMvcRouterConfiguration": {
          "aliases": [],
          "scope": "singleton",
          "type": "org.springdoc.webmvc.core.configuration.SpringDocWebMvcConfiguration$SpringDocWebMvcRouterConfiguration",
          "dependencies": []
        },
        "defaultMeterObservationHandler": {
          "aliases": [],
          "scope": "singleton",
          "type": "io.micrometer.core.instrument.observation.DefaultMeterObservationHandler",
          "resource": "class path resource [org/springframework/boot/actuate/autoconfigure/observation/ObservationAutoConfiguration$MeterObservationHandlerConfiguration$OnlyMetricsMeterObservationHandlerConfiguration.class]",
          "dependencies": [
            "org.springframework.boot.actuate.autoconfigure.observation.ObservationAutoConfiguration$MeterObservationHandlerConfiguration$OnlyMetricsMeterObservationHandlerConfiguration",
            "simpleMeterRegistry"
          ]
        },
        "resourceHandlerMapping": {
          "aliases": [],
          "scope": "singleton",
          "type": "org.springframework.web.servlet.handler.SimpleUrlHandlerMapping",
          "resource": "class path resource [org/springframework/boot/autoconfigure/web/servlet/WebMvcAutoConfiguration$EnableWebMvcConfiguration.class]",
          "dependencies": [
            "org.springframework.boot.autoconfigure.web.servlet.WebMvcAutoConfiguration$EnableWebMvcConfiguration",
            "mvcContentNegotiationManager",
            "mvcConversionService",
            "mvcResourceUrlProvider"
          ]
        },
        "simpleControllerHandlerAdapter": {
          "aliases": [],
          "scope": "singleton",
          "type": "org.springframework.web.servlet.mvc.SimpleControllerHandlerAdapter",
          "resource": "class path resource [org/springframework/boot/autoconfigure/web/servlet/WebMvcAutoConfiguration$EnableWebMvcConfiguration.class]",
          "dependencies": [
            "org.springframework.boot.autoconfigure.web.servlet.WebMvcAutoConfiguration$EnableWebMvcConfiguration"
          ]
        },
        "org.springframework.boot.actuate.autoconfigure.metrics.export.simple.SimpleMetricsExportAutoConfiguration": {
          "aliases": [],
          "scope": "singleton",
          "type": "org.springframework.boot.actuate.autoconfigure.metrics.export.simple.SimpleMetricsExportAutoConfiguration",
          "dependencies": []
        },
        "propertyResolverUtils": {
          "aliases": [],
          "scope": "singleton",
          "type": "org.springdoc.core.utils.PropertyResolverUtils",
          "resource": "class path resource [org/springdoc/core/configuration/SpringDocConfiguration.class]",
          "dependencies": [
            "org.springdoc.core.configuration.SpringDocConfiguration",
            "org.springframework.beans.factory.support.DefaultListableBeanFactory@37efd131",
            "messageSource",
            "org.springdoc.core.properties.SpringDocConfigProperties"
          ]
        },
        "org.springframework.boot.autoconfigure.jdbc.DataSourceJmxConfiguration$Hikari": {
          "aliases": [],
          "scope": "singleton",
          "type": "org.springframework.boot.autoconfigure.jdbc.DataSourceJmxConfiguration$Hikari",
          "dependencies": [
            "dataSource"
          ]
        },
        "org.springdoc.core.properties.SwaggerUiConfigProperties": {
          "aliases": [],
          "scope": "singleton",
          "type": "org.springdoc.core.properties.SwaggerUiConfigProperties",
          "dependencies": []
        },
        "cachesEndpointWebExtension": {
          "aliases": [],
          "scope": "singleton",
          "type": "org.springframework.boot.actuate.cache.CachesEndpointWebExtension",
          "resource": "class path resource [org/springframework/boot/actuate/autoconfigure/cache/CachesEndpointAutoConfiguration.class]",
          "dependencies": [
            "org.springframework.boot.actuate.autoconfigure.cache.CachesEndpointAutoConfiguration",
            "cachesEndpoint"
          ]
        },
        "org.springframework.boot.actuate.autoconfigure.context.properties.ConfigurationPropertiesReportEndpointAutoConfiguration": {
          "aliases": [],
          "scope": "singleton",
          "type": "org.springframework.boot.actuate.autoconfigure.context.properties.ConfigurationPropertiesReportEndpointAutoConfiguration",
          "dependencies": []
        },
        "simpleAsyncTaskSchedulerBuilder": {
          "aliases": [],
          "scope": "singleton",
          "type": "org.springframework.boot.task.SimpleAsyncTaskSchedulerBuilder",
          "resource": "class path resource [org/springframework/boot/autoconfigure/task/TaskSchedulingConfigurations$SimpleAsyncTaskSchedulerBuilderConfiguration.class]",
          "dependencies": [
            "org.springframework.boot.autoconfigure.task.TaskSchedulingConfigurations$SimpleAsyncTaskSchedulerBuilderConfiguration"
          ]
        },
        "spring.lifecycle-org.springframework.boot.autoconfigure.context.LifecycleProperties": {
          "aliases": [],
          "scope": "singleton",
          "type": "org.springframework.boot.autoconfigure.context.LifecycleProperties",
          "dependencies": []
        },
        "org.springframework.boot.autoconfigure.http.codec.CodecsAutoConfiguration$DefaultCodecsConfiguration": {
          "aliases": [],
          "scope": "singleton",
          "type": "org.springframework.boot.autoconfigure.http.codec.CodecsAutoConfiguration$DefaultCodecsConfiguration",
          "dependencies": []
        },
        "org.springframework.boot.actuate.autoconfigure.metrics.cache.CacheMetricsAutoConfiguration": {
          "aliases": [],
          "scope": "singleton",
          "type": "org.springframework.boot.actuate.autoconfigure.metrics.cache.CacheMetricsAutoConfiguration",
          "dependencies": []
        },
        "org.springframework.boot.autoconfigure.data.redis.LettuceConnectionConfiguration": {
          "aliases": [],
          "scope": "singleton",
          "type": "org.springframework.boot.autoconfigure.data.redis.LettuceConnectionConfiguration",
          "dependencies": [
            "spring.data.redis-org.springframework.boot.autoconfigure.data.redis.RedisProperties",
            "redisConnectionDetails"
          ]
        },
        "badgesController": {
          "aliases": [],
          "scope": "singleton",
          "type": "cn.netkiller.controller.BadgesController",
          "resource": "URL [jar:nested:/app/watch-1.0-SNAPSHOT.jar/!BOOT-INF/classes/!/cn/netkiller/controller/BadgesController.class]",
          "dependencies": [
            "baiduService",
            "sessionStatusService",
            "storyService"
          ]
        },
        "healthContributorRegistry": {
          "aliases": [],
          "scope": "singleton",
          "type": "org.springframework.boot.actuate.autoconfigure.health.AutoConfiguredHealthContributorRegistry",
          "resource": "class path resource [org/springframework/boot/actuate/autoconfigure/health/HealthEndpointConfiguration.class]",
          "dependencies": [
            "org.springframework.boot.actuate.autoconfigure.health.HealthEndpointConfiguration",
            "org.springframework.boot.web.servlet.context.AnnotationConfigServletWebServerApplicationContext@18e36d14",
            "healthEndpointGroups",
            "diskSpaceHealthIndicator",
            "pingHealthContributor",
            "dbHealthContributor",
            "redisHealthContributor"
          ]
        },
        "micrometerOptions": {
          "aliases": [],
          "scope": "singleton",
          "type": "io.lettuce.core.metrics.MicrometerOptions",
          "resource": "class path resource [org/springframework/boot/actuate/autoconfigure/metrics/redis/LettuceMetricsAutoConfiguration.class]",
          "dependencies": [
            "org.springframework.boot.actuate.autoconfigure.metrics.redis.LettuceMetricsAutoConfiguration"
          ]
        },
        "management.endpoint.configprops-org.springframework.boot.actuate.autoconfigure.context.properties.ConfigurationPropertiesReportEndpointProperties": {
          "aliases": [],
          "scope": "singleton",
          "type": "org.springframework.boot.actuate.autoconfigure.context.properties.ConfigurationPropertiesReportEndpointProperties",
          "dependencies": []
        },
        "parameterNamesModule": {
          "aliases": [],
          "scope": "singleton",
          "type": "com.fasterxml.jackson.module.paramnames.ParameterNamesModule",
          "resource": "class path resource [org/springframework/boot/autoconfigure/jackson/JacksonAutoConfiguration$ParameterNamesModuleConfiguration.class]",
          "dependencies": [
            "org.springframework.boot.autoconfigure.jackson.JacksonAutoConfiguration$ParameterNamesModuleConfiguration"
          ]
        },
        "propertiesObservationFilter": {
          "aliases": [],
          "scope": "singleton",
          "type": "org.springframework.boot.actuate.autoconfigure.observation.PropertiesObservationFilterPredicate",
          "resource": "class path resource [org/springframework/boot/actuate/autoconfigure/observation/ObservationAutoConfiguration.class]",
          "dependencies": [
            "org.springframework.boot.actuate.autoconfigure.observation.ObservationAutoConfiguration",
            "management.observations-org.springframework.boot.actuate.autoconfigure.observation.ObservationProperties"
          ]
        },
        "sessionStatusRepository": {
          "aliases": [],
          "scope": "singleton",
          "type": "cn.netkiller.repository.SessionStatusRepository",
          "resource": "cn.netkiller.repository.SessionStatusRepository defined in @EnableJpaRepositories declared on Application",
          "dependencies": [
            "jpa.named-queries#3",
            "jpa.SessionStatusRepository.fragments#0",
            "jpaSharedEM_entityManagerFactory",
            "jpaMappingContext"
          ]
        },
        "persistenceManagedTypes": {
          "aliases": [],
          "scope": "singleton",
          "type": "org.springframework.orm.jpa.persistenceunit.SimplePersistenceManagedTypes",
          "resource": "class path resource [org/springframework/boot/autoconfigure/orm/jpa/JpaBaseConfiguration$PersistenceManagedTypesConfiguration.class]",
          "dependencies": [
            "org.springframework.beans.factory.support.DefaultListableBeanFactory@37efd131",
            "org.springframework.boot.web.servlet.context.AnnotationConfigServletWebServerApplicationContext@18e36d14"
          ]
        },
        "micrometerClock": {
          "aliases": [],
          "scope": "singleton",
          "type": "io.micrometer.core.instrument.Clock$1",
          "resource": "class path resource [org/springframework/boot/actuate/autoconfigure/metrics/MetricsAutoConfiguration.class]",
          "dependencies": [
            "org.springframework.boot.actuate.autoconfigure.metrics.MetricsAutoConfiguration"
          ]
        },
        "org.springframework.boot.actuate.autoconfigure.beans.BeansEndpointAutoConfiguration": {
          "aliases": [],
          "scope": "singleton",
          "type": "org.springframework.boot.actuate.autoconfigure.beans.BeansEndpointAutoConfiguration",
          "dependencies": []
        },
        "responseSupportConverter": {
          "aliases": [],
          "scope": "singleton",
          "type": "org.springdoc.core.converters.ResponseSupportConverter",
          "resource": "class path resource [org/springdoc/core/configuration/SpringDocConfiguration.class]",
          "dependencies": [
            "org.springdoc.core.configuration.SpringDocConfiguration",
            "springdocObjectMapperProvider"
          ]
        },
        "pageableOpenAPIConverter": {
          "aliases": [],
          "scope": "singleton",
          "type": "org.springdoc.core.converters.PageableOpenAPIConverter",
          "resource": "class path resource [org/springdoc/core/configuration/SpringDocPageableConfiguration.class]",
          "dependencies": [
            "org.springdoc.core.configuration.SpringDocPageableConfiguration",
            "springdocObjectMapperProvider"
          ]
        },
        "redisReferenceResolver": {
          "aliases": [],
          "scope": "singleton",
          "type": "org.springframework.data.redis.core.convert.ReferenceResolverImpl",
          "dependencies": [
            "redisTemplate"
          ]
        },
        "propertiesMeterFilter": {
          "aliases": [],
          "scope": "singleton",
          "type": "org.springframework.boot.actuate.autoconfigure.metrics.PropertiesMeterFilter",
          "resource": "class path resource [org/springframework/boot/actuate/autoconfigure/metrics/MetricsAutoConfiguration.class]",
          "dependencies": [
            "org.springframework.boot.actuate.autoconfigure.metrics.MetricsAutoConfiguration",
            "management.metrics-org.springframework.boot.actuate.autoconfigure.metrics.MetricsProperties"
          ]
        },
        "org.springframework.boot.autoconfigure.web.client.RestTemplateAutoConfiguration": {
          "aliases": [],
          "scope": "singleton",
          "type": "org.springframework.boot.autoconfigure.web.client.RestTemplateAutoConfiguration",
          "dependencies": []
        },
        "gsonBuilder": {
          "aliases": [],
          "scope": "singleton",
          "type": "com.google.gson.GsonBuilder",
          "resource": "class path resource [org/springframework/boot/autoconfigure/gson/GsonAutoConfiguration.class]",
          "dependencies": [
            "org.springframework.boot.autoconfigure.gson.GsonAutoConfiguration",
            "standardGsonBuilderCustomizer"
          ]
        },
        "aliyunService": {
          "aliases": [],
          "scope": "singleton",
          "type": "cn.netkiller.service.AliyunService",
          "resource": "URL [jar:nested:/app/watch-1.0-SNAPSHOT.jar/!BOOT-INF/classes/!/cn/netkiller/service/AliyunService.class]",
          "dependencies": []
        },
        "diskSpaceMetrics": {
          "aliases": [],
          "scope": "singleton",
          "type": "org.springframework.boot.actuate.metrics.system.DiskSpaceMetricsBinder",
          "resource": "class path resource [org/springframework/boot/actuate/autoconfigure/metrics/SystemMetricsAutoConfiguration.class]",
          "dependencies": [
            "org.springframework.boot.actuate.autoconfigure.metrics.SystemMetricsAutoConfiguration",
            "management.metrics-org.springframework.boot.actuate.autoconfigure.metrics.MetricsProperties"
          ]
        },
        "securityParser": {
          "aliases": [],
          "scope": "singleton",
          "type": "org.springdoc.core.service.SecurityService",
          "resource": "class path resource [org/springdoc/core/configuration/SpringDocConfiguration.class]",
          "dependencies": [
            "org.springdoc.core.configuration.SpringDocConfiguration",
            "propertyResolverUtils"
          ]
        },
        "org.springframework.data.jpa.util.JpaMetamodelCacheCleanup": {
          "aliases": [],
          "scope": "singleton",
          "type": "org.springframework.data.jpa.util.JpaMetamodelCacheCleanup",
          "dependencies": []
        },
        "homeController": {
          "aliases": [],
          "scope": "singleton",
          "type": "cn.netkiller.controller.HomeController",
          "resource": "URL [jar:nested:/app/watch-1.0-SNAPSHOT.jar/!BOOT-INF/classes/!/cn/netkiller/controller/HomeController.class]",
          "dependencies": []
        },
        "org.springdoc.core.properties.SpringDocConfigProperties": {
          "aliases": [],
          "scope": "singleton",
          "type": "org.springdoc.core.properties.SpringDocConfigProperties",
          "dependencies": []
        },
        "org.springdoc.core.properties.SwaggerUiConfigParameters": {
          "aliases": [],
          "scope": "singleton",
          "type": "org.springdoc.core.properties.SwaggerUiConfigParameters",
          "dependencies": [
            "org.springdoc.core.properties.SwaggerUiConfigProperties"
          ]
        },
        "org.springframework.boot.autoconfigure.web.servlet.error.ErrorMvcAutoConfiguration": {
          "aliases": [],
          "scope": "singleton",
          "type": "org.springframework.boot.autoconfigure.web.servlet.error.ErrorMvcAutoConfiguration",
          "dependencies": [
            "server-org.springframework.boot.autoconfigure.web.ServerProperties"
          ]
        },
        "emBeanDefinitionRegistrarPostProcessor": {
          "aliases": [],
          "scope": "singleton",
          "type": "org.springframework.data.jpa.repository.support.EntityManagerBeanDefinitionRegistrarPostProcessor",
          "dependencies": []
        },
        "servletEndpointDiscoverer": {
          "aliases": [],
          "scope": "singleton",
          "type": "org.springframework.boot.actuate.endpoint.web.annotation.ServletEndpointDiscoverer",
          "resource": "class path resource [org/springframework/boot/actuate/autoconfigure/endpoint/web/WebEndpointAutoConfiguration$WebEndpointServletConfiguration.class]",
          "dependencies": [
            "org.springframework.boot.actuate.autoconfigure.endpoint.web.WebEndpointAutoConfiguration$WebEndpointServletConfiguration",
            "org.springframework.boot.web.servlet.context.AnnotationConfigServletWebServerApplicationContext@18e36d14"
          ]
        },
        "metricsHttpServerUriTagFilter": {
          "aliases": [],
          "scope": "singleton",
          "type": "io.micrometer.core.instrument.config.MeterFilter$9",
          "resource": "class path resource [org/springframework/boot/actuate/autoconfigure/observation/web/servlet/WebMvcObservationAutoConfiguration$MeterFilterConfiguration.class]",
          "dependencies": [
            "org.springframework.boot.actuate.autoconfigure.observation.web.servlet.WebMvcObservationAutoConfiguration$MeterFilterConfiguration",
            "management.observations-org.springframework.boot.actuate.autoconfigure.observation.ObservationProperties",
            "management.metrics-org.springframework.boot.actuate.autoconfigure.metrics.MetricsProperties"
          ]
        },
        "eagerTaskExecutorMetrics": {
          "aliases": [],
          "scope": "singleton",
          "type": "org.springframework.boot.LazyInitializationExcludeFilter$$Lambda/0x00007ff400afb340",
          "resource": "class path resource [org/springframework/boot/actuate/autoconfigure/metrics/task/TaskExecutorMetricsAutoConfiguration.class]",
          "dependencies": []
        },
        "org.springframework.boot.autoconfigure.websocket.servlet.WebSocketServletAutoConfiguration$TomcatWebSocketConfiguration": {
          "aliases": [],
          "scope": "singleton",
          "type": "org.springframework.boot.autoconfigure.websocket.servlet.WebSocketServletAutoConfiguration$TomcatWebSocketConfiguration",
          "dependencies": []
        },
        "org.springframework.boot.autoconfigure.http.HttpMessageConvertersAutoConfiguration": {
          "aliases": [],
          "scope": "singleton",
          "type": "org.springframework.boot.autoconfigure.http.HttpMessageConvertersAutoConfiguration",
          "dependencies": []
        },
        "redisConverter": {
          "aliases": [],
          "scope": "singleton",
          "type": "org.springframework.data.redis.core.convert.MappingRedisConverter",
          "dependencies": [
            "keyValueMappingContext",
            "redisReferenceResolver",
            "redisCustomConversions"
          ]
        },
        "knife4jOpenApiCustomizer": {
          "aliases": [],
          "scope": "singleton",
          "type": "com.github.xiaoymin.knife4j.spring.extension.Knife4jOpenApiCustomizer",
          "resource": "class path resource [com/github/xiaoymin/knife4j/spring/configuration/Knife4jAutoConfiguration.class]",
          "dependencies": [
            "com.github.xiaoymin.knife4j.spring.configuration.Knife4jAutoConfiguration"
          ]
        },
        "healthEndpoint": {
          "aliases": [],
          "scope": "singleton",
          "type": "org.springframework.boot.actuate.health.HealthEndpoint",
          "resource": "class path resource [org/springframework/boot/actuate/autoconfigure/health/HealthEndpointConfiguration.class]",
          "dependencies": [
            "org.springframework.boot.actuate.autoconfigure.health.HealthEndpointConfiguration",
            "healthContributorRegistry",
            "healthEndpointGroups",
            "management.endpoint.health-org.springframework.boot.actuate.autoconfigure.health.HealthEndpointProperties"
          ]
        },
        "spring.task.execution-org.springframework.boot.autoconfigure.task.TaskExecutionProperties": {
          "aliases": [],
          "scope": "singleton",
          "type": "org.springframework.boot.autoconfigure.task.TaskExecutionProperties",
          "dependencies": []
        },
        "viewControllerHandlerMapping": {
          "aliases": [],
          "scope": "singleton",
          "type": "org.springframework.web.servlet.HandlerMapping",
          "resource": "class path resource [org/springframework/boot/autoconfigure/web/servlet/WebMvcAutoConfiguration$EnableWebMvcConfiguration.class]",
          "dependencies": [
            "org.springframework.boot.autoconfigure.web.servlet.WebMvcAutoConfiguration$EnableWebMvcConfiguration",
            "mvcConversionService",
            "mvcResourceUrlProvider"
          ]
        },
        "org.springframework.boot.autoconfigure.jdbc.DataSourceAutoConfiguration$PooledDataSourceConfiguration": {
          "aliases": [],
          "scope": "singleton",
          "type": "org.springframework.boot.autoconfigure.jdbc.DataSourceAutoConfiguration$PooledDataSourceConfiguration",
          "dependencies": []
        },
        "openApiResource": {
          "aliases": [],
          "scope": "singleton",
          "type": "org.springdoc.webmvc.api.OpenApiWebMvcResource",
          "resource": "class path resource [org/springdoc/webmvc/core/configuration/SpringDocWebMvcConfiguration.class]",
          "dependencies": [
            "org.springdoc.webmvc.core.configuration.SpringDocWebMvcConfiguration",
            "requestBuilder",
            "responseBuilder",
            "operationBuilder",
            "org.springdoc.core.properties.SpringDocConfigProperties",
            "springDocProviders",
            "springDocCustomizers"
          ]
        },
        "themeResolver": {
          "aliases": [],
          "scope": "singleton",
          "type": "org.springframework.web.servlet.theme.FixedThemeResolver",
          "resource": "class path resource [org/springframework/boot/autoconfigure/web/servlet/WebMvcAutoConfiguration$EnableWebMvcConfiguration.class]",
          "dependencies": [
            "org.springframework.boot.autoconfigure.web.servlet.WebMvcAutoConfiguration$EnableWebMvcConfiguration"
          ]
        },
        "org.springframework.boot.actuate.autoconfigure.availability.AvailabilityHealthContributorAutoConfiguration": {
          "aliases": [],
          "scope": "singleton",
          "type": "org.springframework.boot.actuate.autoconfigure.availability.AvailabilityHealthContributorAutoConfiguration",
          "dependencies": []
        },
        "org.springframework.boot.autoconfigure.jdbc.metadata.DataSourcePoolMetadataProvidersConfiguration$HikariPoolDataSourceMetadataProviderConfiguration": {
          "aliases": [],
          "scope": "singleton",
          "type": "org.springframework.boot.autoconfigure.jdbc.metadata.DataSourcePoolMetadataProvidersConfiguration$HikariPoolDataSourceMetadataProviderConfiguration",
          "dependencies": []
        },
        "mvcPatternParser": {
          "aliases": [],
          "scope": "singleton",
          "type": "org.springframework.web.util.pattern.PathPatternParser",
          "resource": "class path resource [org/springframework/boot/autoconfigure/web/servlet/WebMvcAutoConfiguration$EnableWebMvcConfiguration.class]",
          "dependencies": [
            "org.springframework.boot.autoconfigure.web.servlet.WebMvcAutoConfiguration$EnableWebMvcConfiguration"
          ]
        },
        "org.springdoc.webmvc.core.configuration.SpringDocWebMvcConfiguration": {
          "aliases": [],
          "scope": "singleton",
          "type": "org.springdoc.webmvc.core.configuration.SpringDocWebMvcConfiguration",
          "dependencies": []
        },
        "org.springframework.boot.autoconfigure.orm.jpa.HibernateJpaAutoConfiguration": {
          "aliases": [],
          "scope": "singleton",
          "type": "org.springframework.boot.autoconfigure.orm.jpa.HibernateJpaAutoConfiguration",
          "dependencies": []
        },
        "org.springframework.boot.actuate.autoconfigure.health.HealthEndpointWebExtensionConfiguration$MvcAdditionalHealthEndpointPathsConfiguration": {
          "aliases": [],
          "scope": "singleton",
          "type": "org.springframework.boot.actuate.autoconfigure.health.HealthEndpointWebExtensionConfiguration$MvcAdditionalHealthEndpointPathsConfiguration",
          "dependencies": []
        },
        "org.springframework.boot.sql.init.dependency.DatabaseInitializationDependencyConfigurer$DependsOnDatabaseInitializationPostProcessor": {
          "aliases": [],
          "scope": "singleton",
          "type": "org.springframework.boot.sql.init.dependency.DatabaseInitializationDependencyConfigurer$DependsOnDatabaseInitializationPostProcessor",
          "dependencies": []
        },
        "dispatcherServlet": {
          "aliases": [],
          "scope": "singleton",
          "type": "org.springframework.web.servlet.DispatcherServlet",
          "resource": "class path resource [org/springframework/boot/autoconfigure/web/servlet/DispatcherServletAutoConfiguration$DispatcherServletConfiguration.class]",
          "dependencies": [
            "org.springframework.boot.autoconfigure.web.servlet.DispatcherServletAutoConfiguration$DispatcherServletConfiguration",
            "spring.mvc-org.springframework.boot.autoconfigure.web.servlet.WebMvcProperties"
          ]
        },
        "org.springframework.boot.actuate.autoconfigure.metrics.task.TaskExecutorMetricsAutoConfiguration": {
          "aliases": [],
          "scope": "singleton",
          "type": "org.springframework.boot.actuate.autoconfigure.metrics.task.TaskExecutorMetricsAutoConfiguration",
          "dependencies": [
            "applicationTaskExecutor",
            "simpleMeterRegistry"
          ]
        },
        "restClientBuilder": {
          "aliases": [],
          "scope": "prototype",
          "type": "org.springframework.web.client.RestClient$Builder",
          "resource": "class path resource [org/springframework/boot/autoconfigure/web/client/RestClientAutoConfiguration.class]",
          "dependencies": []
        },
        "springWebProvider": {
          "aliases": [],
          "scope": "singleton",
          "type": "org.springdoc.webmvc.core.providers.SpringWebMvcProvider",
          "resource": "class path resource [org/springdoc/webmvc/core/configuration/SpringDocWebMvcConfiguration.class]",
          "dependencies": [
            "org.springdoc.webmvc.core.configuration.SpringDocWebMvcConfiguration"
          ]
        },
        "jvmInfoMetrics": {
          "aliases": [],
          "scope": "singleton",
          "type": "io.micrometer.core.instrument.binder.jvm.JvmInfoMetrics",
          "resource": "class path resource [org/springframework/boot/actuate/autoconfigure/metrics/JvmMetricsAutoConfiguration.class]",
          "dependencies": [
            "org.springframework.boot.actuate.autoconfigure.metrics.JvmMetricsAutoConfiguration"
          ]
        },
        "org.springframework.boot.autoconfigure.web.servlet.WebMvcAutoConfiguration": {
          "aliases": [],
          "scope": "singleton",
          "type": "org.springframework.boot.autoconfigure.web.servlet.WebMvcAutoConfiguration",
          "dependencies": []
        },
        "parameterBuilder": {
          "aliases": [],
          "scope": "singleton",
          "type": "org.springdoc.core.service.GenericParameterService",
          "resource": "class path resource [org/springdoc/core/configuration/SpringDocConfiguration.class]",
          "dependencies": [
            "org.springdoc.core.configuration.SpringDocConfiguration",
            "propertyResolverUtils",
            "springdocObjectMapperProvider"
          ]
        },
        "org.springframework.boot.actuate.autoconfigure.jdbc.DataSourceHealthContributorAutoConfiguration": {
          "aliases": [],
          "scope": "singleton",
          "type": "org.springframework.boot.actuate.autoconfigure.jdbc.DataSourceHealthContributorAutoConfiguration",
          "dependencies": []
        },
        "webEndpointServletHandlerMapping": {
          "aliases": [],
          "scope": "singleton",
          "type": "org.springframework.boot.actuate.endpoint.web.servlet.WebMvcEndpointHandlerMapping",
          "resource": "class path resource [org/springframework/boot/actuate/autoconfigure/endpoint/web/servlet/WebMvcEndpointManagementContextConfiguration.class]",
          "dependencies": [
            "org.springframework.boot.actuate.autoconfigure.endpoint.web.servlet.WebMvcEndpointManagementContextConfiguration",
            "webEndpointDiscoverer",
            "servletEndpointDiscoverer",
            "controllerEndpointDiscoverer",
            "endpointMediaTypes",
            "management.endpoints.web.cors-org.springframework.boot.actuate.autoconfigure.endpoint.web.CorsEndpointProperties",
            "management.endpoints.web-org.springframework.boot.actuate.autoconfigure.endpoint.web.WebEndpointProperties",
            "environment"
          ]
        },
        "threadPoolTaskExecutorBuilder": {
          "aliases": [],
          "scope": "singleton",
          "type": "org.springframework.boot.task.ThreadPoolTaskExecutorBuilder",
          "resource": "class path resource [org/springframework/boot/autoconfigure/task/TaskExecutorConfigurations$ThreadPoolTaskExecutorBuilderConfiguration.class]",
          "dependencies": [
            "org.springframework.boot.autoconfigure.task.TaskExecutorConfigurations$ThreadPoolTaskExecutorBuilderConfiguration",
            "spring.task.execution-org.springframework.boot.autoconfigure.task.TaskExecutionProperties"
          ]
        },
        "processorMetrics": {
          "aliases": [],
          "scope": "singleton",
          "type": "io.micrometer.core.instrument.binder.system.ProcessorMetrics",
          "resource": "class path resource [org/springframework/boot/actuate/autoconfigure/metrics/SystemMetricsAutoConfiguration.class]",
          "dependencies": [
            "org.springframework.boot.actuate.autoconfigure.metrics.SystemMetricsAutoConfiguration"
          ]
        },
        "dispatcherServletMappingDescriptionProvider": {
          "aliases": [],
          "scope": "singleton",
          "type": "org.springframework.boot.actuate.web.mappings.servlet.DispatcherServletsMappingDescriptionProvider",
          "resource": "class path resource [org/springframework/boot/actuate/autoconfigure/web/mappings/MappingsEndpointAutoConfiguration$ServletWebConfiguration$SpringMvcConfiguration.class]",
          "dependencies": [
            "org.springframework.boot.actuate.autoconfigure.web.mappings.MappingsEndpointAutoConfiguration$ServletWebConfiguration$SpringMvcConfiguration"
          ]
        },
        "org.springframework.boot.actuate.autoconfigure.scheduling.ScheduledTasksEndpointAutoConfiguration": {
          "aliases": [],
          "scope": "singleton",
          "type": "org.springframework.boot.actuate.autoconfigure.scheduling.ScheduledTasksEndpointAutoConfiguration",
          "dependencies": []
        },
        "chatService": {
          "aliases": [],
          "scope": "singleton",
          "type": "cn.netkiller.service.ChatService",
          "resource": "URL [jar:nested:/app/watch-1.0-SNAPSHOT.jar/!BOOT-INF/classes/!/cn/netkiller/service/ChatService.class]",
          "dependencies": [
            "chatRepository"
          ]
        },
        "spring.jdbc-org.springframework.boot.autoconfigure.jdbc.JdbcProperties": {
          "aliases": [],
          "scope": "singleton",
          "type": "org.springframework.boot.autoconfigure.jdbc.JdbcProperties",
          "dependencies": []
        },
        "org.springframework.boot.autoconfigure.cache.RedisCacheConfiguration": {
          "aliases": [],
          "scope": "singleton",
          "type": "org.springframework.boot.autoconfigure.cache.RedisCacheConfiguration",
          "dependencies": []
        },
        "psychoanalysisController": {
          "aliases": [],
          "scope": "singleton",
          "type": "cn.netkiller.controller.PsychoanalysisController",
          "resource": "URL [jar:nested:/app/watch-1.0-SNAPSHOT.jar/!BOOT-INF/classes/!/cn/netkiller/controller/PsychoanalysisController.class]",
          "dependencies": [
            "psychoanalysisService"
          ]
        },
        "org.springframework.boot.actuate.autoconfigure.metrics.integration.IntegrationMetricsAutoConfiguration": {
          "aliases": [],
          "scope": "singleton",
          "type": "org.springframework.boot.actuate.autoconfigure.metrics.integration.IntegrationMetricsAutoConfiguration",
          "dependencies": []
        },
        "transactionExecutionListeners": {
          "aliases": [],
          "scope": "singleton",
          "type": "org.springframework.boot.autoconfigure.transaction.ExecutionListenersTransactionManagerCustomizer",
          "resource": "class path resource [org/springframework/boot/autoconfigure/transaction/TransactionManagerCustomizationAutoConfiguration.class]",
          "dependencies": [
            "org.springframework.boot.autoconfigure.transaction.TransactionManagerCustomizationAutoConfiguration"
          ]
        },
        "redisConnectionFactory": {
          "aliases": [],
          "scope": "singleton",
          "type": "org.springframework.data.redis.connection.lettuce.LettuceConnectionFactory",
          "resource": "class path resource [org/springframework/boot/autoconfigure/data/redis/LettuceConnectionConfiguration.class]",
          "dependencies": [
            "org.springframework.boot.autoconfigure.data.redis.LettuceConnectionConfiguration",
            "lettuceClientResources"
          ]
        },
        "springDocProviders": {
          "aliases": [],
          "scope": "singleton",
          "type": "org.springdoc.core.providers.SpringDocProviders",
          "resource": "class path resource [org/springdoc/core/configuration/SpringDocConfiguration.class]",
          "dependencies": [
            "org.springdoc.core.configuration.SpringDocConfiguration",
            "springdocObjectMapperProvider"
          ]
        },
        "transactionManager": {
          "aliases": [],
          "scope": "singleton",
          "type": "org.springframework.orm.jpa.JpaTransactionManager",
          "resource": "class path resource [org/springframework/boot/autoconfigure/orm/jpa/HibernateJpaConfiguration.class]",
          "dependencies": [
            "org.springframework.boot.autoconfigure.orm.jpa.HibernateJpaConfiguration"
          ]
        },
        "spring.netty-org.springframework.boot.autoconfigure.netty.NettyProperties": {
          "aliases": [],
          "scope": "singleton",
          "type": "org.springframework.boot.autoconfigure.netty.NettyProperties",
          "dependencies": []
        },
        "errorPageCustomizer": {
          "aliases": [],
          "scope": "singleton",
          "type": "org.springframework.boot.autoconfigure.web.servlet.error.ErrorMvcAutoConfiguration$ErrorPageCustomizer",
          "resource": "class path resource [org/springframework/boot/autoconfigure/web/servlet/error/ErrorMvcAutoConfiguration.class]",
          "dependencies": [
            "org.springframework.boot.autoconfigure.web.servlet.error.ErrorMvcAutoConfiguration",
            "dispatcherServletRegistration"
          ]
        },
        "loggersEndpoint": {
          "aliases": [],
          "scope": "singleton",
          "type": "org.springframework.boot.actuate.logging.LoggersEndpoint",
          "resource": "class path resource [org/springframework/boot/actuate/autoconfigure/logging/LoggersEndpointAutoConfiguration.class]",
          "dependencies": [
            "org.springframework.boot.actuate.autoconfigure.logging.LoggersEndpointAutoConfiguration",
            "springBootLoggingSystem"
          ]
        },
        "standardGsonBuilderCustomizer": {
          "aliases": [],
          "scope": "singleton",
          "type": "org.springframework.boot.autoconfigure.gson.GsonAutoConfiguration$StandardGsonBuilderCustomizer",
          "resource": "class path resource [org/springframework/boot/autoconfigure/gson/GsonAutoConfiguration.class]",
          "dependencies": [
            "org.springframework.boot.autoconfigure.gson.GsonAutoConfiguration",
            "spring.gson-org.springframework.boot.autoconfigure.gson.GsonProperties"
          ]
        },
        "org.springframework.boot.autoconfigure.web.servlet.error.ErrorMvcAutoConfiguration$DefaultErrorViewResolverConfiguration": {
          "aliases": [],
          "scope": "singleton",
          "type": "org.springframework.boot.autoconfigure.web.servlet.error.ErrorMvcAutoConfiguration$DefaultErrorViewResolverConfiguration",
          "dependencies": [
            "org.springframework.boot.web.servlet.context.AnnotationConfigServletWebServerApplicationContext@18e36d14",
            "spring.web-org.springframework.boot.autoconfigure.web.WebProperties"
          ]
        },
        "tomcatWebServerFactoryCustomizer": {
          "aliases": [],
          "scope": "singleton",
          "type": "org.springframework.boot.autoconfigure.web.embedded.TomcatWebServerFactoryCustomizer",
          "resource": "class path resource [org/springframework/boot/autoconfigure/web/embedded/EmbeddedWebServerFactoryCustomizerAutoConfiguration$TomcatWebServerFactoryCustomizerConfiguration.class]",
          "dependencies": [
            "org.springframework.boot.autoconfigure.web.embedded.EmbeddedWebServerFactoryCustomizerAutoConfiguration$TomcatWebServerFactoryCustomizerConfiguration",
            "environment",
            "server-org.springframework.boot.autoconfigure.web.ServerProperties"
          ]
        },
        "org.springframework.boot.actuate.autoconfigure.observation.ObservationAutoConfiguration$OnlyMetricsConfiguration": {
          "aliases": [],
          "scope": "singleton",
          "type": "org.springframework.boot.actuate.autoconfigure.observation.ObservationAutoConfiguration$OnlyMetricsConfiguration",
          "dependencies": []
        },
        "org.springframework.boot.actuate.autoconfigure.endpoint.EndpointAutoConfiguration": {
          "aliases": [],
          "scope": "singleton",
          "type": "org.springframework.boot.actuate.autoconfigure.endpoint.EndpointAutoConfiguration",
          "dependencies": []
        },
        "threadPoolTaskSchedulerBuilder": {
          "aliases": [],
          "scope": "singleton",
          "type": "org.springframework.boot.task.ThreadPoolTaskSchedulerBuilder",
          "resource": "class path resource [org/springframework/boot/autoconfigure/task/TaskSchedulingConfigurations$ThreadPoolTaskSchedulerBuilderConfiguration.class]",
          "dependencies": [
            "org.springframework.boot.autoconfigure.task.TaskSchedulingConfigurations$ThreadPoolTaskSchedulerBuilderConfiguration",
            "spring.task.scheduling-org.springframework.boot.autoconfigure.task.TaskSchedulingProperties"
          ]
        },
        "org.springframework.boot.actuate.autoconfigure.data.redis.RedisHealthContributorAutoConfiguration": {
          "aliases": [],
          "scope": "singleton",
          "type": "org.springframework.boot.actuate.autoconfigure.data.redis.RedisHealthContributorAutoConfiguration",
          "dependencies": []
        },
        "viewNameTranslator": {
          "aliases": [],
          "scope": "singleton",
          "type": "org.springframework.web.servlet.view.DefaultRequestToViewNameTranslator",
          "resource": "class path resource [org/springframework/boot/autoconfigure/web/servlet/WebMvcAutoConfiguration$EnableWebMvcConfiguration.class]",
          "dependencies": [
            "org.springframework.boot.autoconfigure.web.servlet.WebMvcAutoConfiguration$EnableWebMvcConfiguration"
          ]
        },
        "org.springframework.boot.autoconfigure.http.JacksonHttpMessageConvertersConfiguration": {
          "aliases": [],
          "scope": "singleton",
          "type": "org.springframework.boot.autoconfigure.http.JacksonHttpMessageConvertersConfiguration",
          "dependencies": []
        },
        "polymorphicModelConverter": {
          "aliases": [],
          "scope": "singleton",
          "type": "org.springdoc.core.converters.PolymorphicModelConverter",
          "resource": "class path resource [org/springdoc/core/configuration/SpringDocConfiguration.class]",
          "dependencies": [
            "org.springdoc.core.configuration.SpringDocConfiguration",
            "springdocObjectMapperProvider"
          ]
        },
        "org.springframework.boot.actuate.autoconfigure.system.DiskSpaceHealthContributorAutoConfiguration": {
          "aliases": [],
          "scope": "singleton",
          "type": "org.springframework.boot.actuate.autoconfigure.system.DiskSpaceHealthContributorAutoConfiguration",
          "dependencies": []
        },
        "fileSupportConverter": {
          "aliases": [],
          "scope": "singleton",
          "type": "org.springdoc.core.converters.FileSupportConverter",
          "resource": "class path resource [org/springdoc/core/configuration/SpringDocConfiguration.class]",
          "dependencies": [
            "org.springdoc.core.configuration.SpringDocConfiguration",
            "springdocObjectMapperProvider"
          ]
        },
        "org.springframework.boot.actuate.autoconfigure.metrics.MetricsAutoConfiguration": {
          "aliases": [],
          "scope": "singleton",
          "type": "org.springframework.boot.actuate.autoconfigure.metrics.MetricsAutoConfiguration",
          "dependencies": []
        },
        "cachesEndpoint": {
          "aliases": [],
          "scope": "singleton",
          "type": "org.springframework.boot.actuate.cache.CachesEndpoint",
          "resource": "class path resource [org/springframework/boot/actuate/autoconfigure/cache/CachesEndpointAutoConfiguration.class]",
          "dependencies": [
            "org.springframework.boot.actuate.autoconfigure.cache.CachesEndpointAutoConfiguration",
            "cacheManager"
          ]
        },
        "org.springframework.boot.autoconfigure.http.codec.CodecsAutoConfiguration": {
          "aliases": [],
          "scope": "singleton",
          "type": "org.springframework.boot.autoconfigure.http.codec.CodecsAutoConfiguration",
          "dependencies": []
        },
        "dispatcherServletRegistration": {
          "aliases": [],
          "scope": "singleton",
          "type": "org.springframework.boot.autoconfigure.web.servlet.DispatcherServletRegistrationBean",
          "resource": "class path resource [org/springframework/boot/autoconfigure/web/servlet/DispatcherServletAutoConfiguration$DispatcherServletRegistrationConfiguration.class]",
          "dependencies": [
            "org.springframework.boot.autoconfigure.web.servlet.DispatcherServletAutoConfiguration$DispatcherServletRegistrationConfiguration",
            "dispatcherServlet",
            "spring.mvc-org.springframework.boot.autoconfigure.web.servlet.WebMvcProperties"
          ]
        },
        "pageableCustomizer": {
          "aliases": [],
          "scope": "singleton",
          "type": "org.springframework.boot.autoconfigure.data.web.SpringDataWebAutoConfiguration$$Lambda/0x00007ff400a7e000",
          "resource": "class path resource [org/springframework/boot/autoconfigure/data/web/SpringDataWebAutoConfiguration.class]",
          "dependencies": [
            "org.springframework.boot.autoconfigure.data.web.SpringDataWebAutoConfiguration"
          ]
        },
        "dataSource": {
          "aliases": [],
          "scope": "singleton",
          "type": "com.zaxxer.hikari.HikariDataSource",
          "resource": "class path resource [org/springframework/boot/autoconfigure/jdbc/DataSourceConfiguration$Hikari.class]",
          "dependencies": [
            "org.springframework.boot.autoconfigure.jdbc.DataSourceConfiguration$Hikari",
            "spring.datasource-org.springframework.boot.autoconfigure.jdbc.DataSourceProperties",
            "jdbcConnectionDetails"
          ]
        },
        "knife4jConfiguration": {
          "aliases": [],
          "scope": "singleton",
          "type": "cn.netkiller.config.Knife4jConfiguration$$SpringCGLIB$$0",
          "resource": "URL [jar:nested:/app/watch-1.0-SNAPSHOT.jar/!BOOT-INF/classes/!/cn/netkiller/config/Knife4jConfiguration.class]",
          "dependencies": []
        },
        "openAPI": {
          "aliases": [],
          "scope": "prototype",
          "type": "io.swagger.v3.oas.models.OpenAPI",
          "resource": "class path resource [cn/netkiller/config/Knife4jConfiguration.class]",
          "dependencies": [
            "knife4jConfiguration"
          ]
        },
        "healthEndpointGroupsBeanPostProcessor": {
          "aliases": [],
          "scope": "singleton",
          "type": "org.springframework.boot.actuate.autoconfigure.health.HealthEndpointConfiguration$HealthEndpointGroupsBeanPostProcessor",
          "resource": "class path resource [org/springframework/boot/actuate/autoconfigure/health/HealthEndpointConfiguration.class]",
          "dependencies": []
        },
        "management.endpoints.web-org.springframework.boot.actuate.autoconfigure.endpoint.web.WebEndpointProperties": {
          "aliases": [],
          "scope": "singleton",
          "type": "org.springframework.boot.actuate.autoconfigure.endpoint.web.WebEndpointProperties",
          "dependencies": []
        },
        "org.springframework.boot.autoconfigure.task.TaskExecutorConfigurations$TaskExecutorConfiguration": {
          "aliases": [],
          "scope": "singleton",
          "type": "org.springframework.boot.autoconfigure.task.TaskExecutorConfigurations$TaskExecutorConfiguration",
          "dependencies": []
        },
        "jpaMappingContext": {
          "aliases": [],
          "scope": "singleton",
          "type": "org.springframework.data.jpa.mapping.JpaMetamodelMappingContext",
          "dependencies": []
        },
        "tomcatServletWebServerFactory": {
          "aliases": [],
          "scope": "singleton",
          "type": "org.springframework.boot.web.embedded.tomcat.TomcatServletWebServerFactory",
          "resource": "class path resource [org/springframework/boot/autoconfigure/web/servlet/ServletWebServerFactoryConfiguration$EmbeddedTomcat.class]",
          "dependencies": [
            "org.springframework.boot.autoconfigure.web.servlet.ServletWebServerFactoryConfiguration$EmbeddedTomcat"
          ]
        },
        "org.springframework.boot.autoconfigure.http.JacksonHttpMessageConvertersConfiguration$MappingJackson2HttpMessageConverterConfiguration": {
          "aliases": [],
          "scope": "singleton",
          "type": "org.springframework.boot.autoconfigure.http.JacksonHttpMessageConvertersConfiguration$MappingJackson2HttpMessageConverterConfiguration",
          "dependencies": []
        },
        "spring.jackson-org.springframework.boot.autoconfigure.jackson.JacksonProperties": {
          "aliases": [],
          "scope": "singleton",
          "type": "org.springframework.boot.autoconfigure.jackson.JacksonProperties",
          "dependencies": []
        },
        "org.springframework.boot.autoconfigure.reactor.netty.ReactorNettyConfigurations$ReactorResourceFactoryConfiguration": {
          "aliases": [],
          "scope": "singleton",
          "type": "org.springframework.boot.autoconfigure.reactor.netty.ReactorNettyConfigurations$ReactorResourceFactoryConfiguration",
          "dependencies": []
        },
        "chatRepository": {
          "aliases": [],
          "scope": "singleton",
          "type": "cn.netkiller.repository.ChatRepository",
          "resource": "cn.netkiller.repository.ChatRepository defined in @EnableJpaRepositories declared on Application",
          "dependencies": [
            "jpa.named-queries#1",
            "jpa.ChatRepository.fragments#0",
            "jpaSharedEM_entityManagerFactory",
            "jpaMappingContext"
          ]
        },
        "org.springframework.boot.autoconfigure.jackson.JacksonAutoConfiguration": {
          "aliases": [],
          "scope": "singleton",
          "type": "org.springframework.boot.autoconfigure.jackson.JacksonAutoConfiguration",
          "dependencies": []
        },
        "error": {
          "aliases": [],
          "scope": "singleton",
          "type": "org.springframework.boot.autoconfigure.web.servlet.error.ErrorMvcAutoConfiguration$StaticView",
          "resource": "class path resource [org/springframework/boot/autoconfigure/web/servlet/error/ErrorMvcAutoConfiguration$WhitelabelErrorViewConfiguration.class]",
          "dependencies": [
            "org.springframework.boot.autoconfigure.web.servlet.error.ErrorMvcAutoConfiguration$WhitelabelErrorViewConfiguration"
          ]
        },
        "org.springframework.boot.autoconfigure.data.web.SpringDataWebAutoConfiguration": {
          "aliases": [],
          "scope": "singleton",
          "type": "org.springframework.boot.autoconfigure.data.web.SpringDataWebAutoConfiguration",
          "dependencies": [
            "spring.data.web-org.springframework.boot.autoconfigure.data.web.SpringDataWebProperties"
          ]
        },
        "memberRepository": {
          "aliases": [],
          "scope": "singleton",
          "type": "cn.netkiller.repository.MemberRepository",
          "resource": "cn.netkiller.repository.MemberRepository defined in @EnableJpaRepositories declared on Application",
          "dependencies": [
            "jpa.named-queries#0",
            "jpa.MemberRepository.fragments#0",
            "jpaSharedEM_entityManagerFactory",
            "jpaMappingContext"
          ]
        },
        "org.springframework.boot.autoconfigure.jackson.JacksonAutoConfiguration$JacksonObjectMapperConfiguration": {
          "aliases": [],
          "scope": "singleton",
          "type": "org.springframework.boot.autoconfigure.jackson.JacksonAutoConfiguration$JacksonObjectMapperConfiguration",
          "dependencies": []
        },
        "swaggerConfigResource": {
          "aliases": [],
          "scope": "singleton",
          "type": "org.springdoc.webmvc.ui.SwaggerConfigResource",
          "resource": "class path resource [org/springdoc/webmvc/ui/SwaggerConfig.class]",
          "dependencies": [
            "org.springdoc.webmvc.ui.SwaggerConfig",
            "swaggerWelcome"
          ]
        },
        "org.springframework.boot.actuate.autoconfigure.health.HealthEndpointAutoConfiguration": {
          "aliases": [],
          "scope": "singleton",
          "type": "org.springframework.boot.actuate.autoconfigure.health.HealthEndpointAutoConfiguration",
          "dependencies": []
        },
        "org.springframework.boot.autoconfigure.web.servlet.error.ErrorMvcAutoConfiguration$WhitelabelErrorViewConfiguration": {
          "aliases": [],
          "scope": "singleton",
          "type": "org.springframework.boot.autoconfigure.web.servlet.error.ErrorMvcAutoConfiguration$WhitelabelErrorViewConfiguration",
          "dependencies": []
        },
        "delegatingMethodParameterCustomizer": {
          "aliases": [],
          "scope": "singleton",
          "type": "org.springdoc.core.customizers.DataRestDelegatingMethodParameterCustomizer",
          "resource": "class path resource [org/springdoc/core/configuration/SpringDocPageableConfiguration.class]",
          "dependencies": [
            "org.springdoc.core.configuration.SpringDocPageableConfiguration"
          ]
        },
        "jsonMixinModule": {
          "aliases": [],
          "scope": "singleton",
          "type": "org.springframework.boot.jackson.JsonMixinModule",
          "resource": "class path resource [org/springframework/boot/autoconfigure/jackson/JacksonAutoConfiguration$JacksonMixinConfiguration.class]",
          "dependencies": [
            "org.springframework.boot.autoconfigure.jackson.JacksonAutoConfiguration$JacksonMixinConfiguration",
            "org.springframework.boot.web.servlet.context.AnnotationConfigServletWebServerApplicationContext@18e36d14",
            "jsonMixinModuleEntries"
          ]
        },
        "org.springframework.boot.autoconfigure.web.servlet.DispatcherServletAutoConfiguration$DispatcherServletConfiguration": {
          "aliases": [],
          "scope": "singleton",
          "type": "org.springframework.boot.autoconfigure.web.servlet.DispatcherServletAutoConfiguration$DispatcherServletConfiguration",
          "dependencies": []
        },
        "jdbcConnectionDetails": {
          "aliases": [],
          "scope": "singleton",
          "type": "org.springframework.boot.autoconfigure.jdbc.PropertiesJdbcConnectionDetails",
          "resource": "class path resource [org/springframework/boot/autoconfigure/jdbc/DataSourceAutoConfiguration$PooledDataSourceConfiguration.class]",
          "dependencies": [
            "org.springframework.boot.autoconfigure.jdbc.DataSourceAutoConfiguration$PooledDataSourceConfiguration",
            "spring.datasource-org.springframework.boot.autoconfigure.jdbc.DataSourceProperties"
          ]
        },
        "genericReturnTypeParser": {
          "aliases": [],
          "scope": "singleton",
          "type": "org.springdoc.core.configuration.SpringDocConfiguration$1",
          "resource": "class path resource [org/springdoc/core/configuration/SpringDocConfiguration.class]",
          "dependencies": [
            "org.springdoc.core.configuration.SpringDocConfiguration"
          ]
        },
        "jvmGcMetrics": {
          "aliases": [],
          "scope": "singleton",
          "type": "io.micrometer.core.instrument.binder.jvm.JvmGcMetrics",
          "resource": "class path resource [org/springframework/boot/actuate/autoconfigure/metrics/JvmMetricsAutoConfiguration.class]",
          "dependencies": [
            "org.springframework.boot.actuate.autoconfigure.metrics.JvmMetricsAutoConfiguration"
          ]
        },
        "offsetResolver": {
          "aliases": [],
          "scope": "singleton",
          "type": "org.springframework.data.web.OffsetScrollPositionHandlerMethodArgumentResolver",
          "resource": "class path resource [org/springframework/data/web/config/SpringDataWebConfiguration.class]",
          "dependencies": [
            "org.springframework.data.web.config.SpringDataWebConfiguration"
          ]
        },
        "org.springframework.boot.autoconfigure.transaction.TransactionAutoConfiguration$TransactionTemplateConfiguration": {
          "aliases": [],
          "scope": "singleton",
          "type": "org.springframework.boot.autoconfigure.transaction.TransactionAutoConfiguration$TransactionTemplateConfiguration",
          "dependencies": []
        },
        "org.springframework.boot.autoconfigure.web.client.RestClientAutoConfiguration": {
          "aliases": [],
          "scope": "singleton",
          "type": "org.springframework.boot.autoconfigure.web.client.RestClientAutoConfiguration",
          "dependencies": []
        },
        "healthEndpointWebMvcHandlerMapping": {
          "aliases": [],
          "scope": "singleton",
          "type": "org.springframework.boot.actuate.endpoint.web.servlet.AdditionalHealthEndpointPathsWebMvcHandlerMapping",
          "resource": "class path resource [org/springframework/boot/actuate/autoconfigure/health/HealthEndpointWebExtensionConfiguration$MvcAdditionalHealthEndpointPathsConfiguration.class]",
          "dependencies": [
            "org.springframework.boot.actuate.autoconfigure.health.HealthEndpointWebExtensionConfiguration$MvcAdditionalHealthEndpointPathsConfiguration",
            "webEndpointDiscoverer",
            "healthEndpointGroups"
          ]
        },
        "welcomePageHandlerMapping": {
          "aliases": [],
          "scope": "singleton",
          "type": "org.springframework.boot.autoconfigure.web.servlet.WelcomePageHandlerMapping",
          "resource": "class path resource [org/springframework/boot/autoconfigure/web/servlet/WebMvcAutoConfiguration$EnableWebMvcConfiguration.class]",
          "dependencies": [
            "org.springframework.boot.autoconfigure.web.servlet.WebMvcAutoConfiguration$EnableWebMvcConfiguration",
            "org.springframework.boot.web.servlet.context.AnnotationConfigServletWebServerApplicationContext@18e36d14",
            "mvcConversionService",
            "mvcResourceUrlProvider"
          ]
        },
        "redisKeyValueAdapter": {
          "aliases": [],
          "scope": "singleton",
          "type": "org.springframework.data.redis.core.RedisKeyValueAdapter",
          "dependencies": [
            "redisTemplate",
            "redisConverter"
          ]
        },
        "servletExposeExcludePropertyEndpointFilter": {
          "aliases": [],
          "scope": "singleton",
          "type": "org.springframework.boot.actuate.autoconfigure.endpoint.expose.IncludeExcludeEndpointFilter",
          "resource": "class path resource [org/springframework/boot/actuate/autoconfigure/endpoint/web/ServletEndpointManagementContextConfiguration.class]",
          "dependencies": [
            "org.springframework.boot.actuate.autoconfigure.endpoint.web.ServletEndpointManagementContextConfiguration",
            "management.endpoints.web-org.springframework.boot.actuate.autoconfigure.endpoint.web.WebEndpointProperties"
          ]
        },
        "filterMappingDescriptionProvider": {
          "aliases": [],
          "scope": "singleton",
          "type": "org.springframework.boot.actuate.web.mappings.servlet.FiltersMappingDescriptionProvider",
          "resource": "class path resource [org/springframework/boot/actuate/autoconfigure/web/mappings/MappingsEndpointAutoConfiguration$ServletWebConfiguration.class]",
          "dependencies": [
            "org.springframework.boot.actuate.autoconfigure.web.mappings.MappingsEndpointAutoConfiguration$ServletWebConfiguration"
          ]
        },
        "springdocBeanFactoryPostProcessor": {
          "aliases": [],
          "scope": "singleton",
          "type": "org.springdoc.core.configurer.SpringdocBeanFactoryConfigurer",
          "resource": "class path resource [org/springdoc/core/configuration/SpringDocConfiguration.class]",
          "dependencies": []
        },
        "cacheManagerCustomizers": {
          "aliases": [],
          "scope": "singleton",
          "type": "org.springframework.boot.autoconfigure.cache.CacheManagerCustomizers",
          "resource": "class path resource [org/springframework/boot/autoconfigure/cache/CacheAutoConfiguration.class]",
          "dependencies": [
            "org.springframework.boot.autoconfigure.cache.CacheAutoConfiguration"
          ]
        },
        "org.springframework.boot.actuate.autoconfigure.web.exchanges.HttpExchangesEndpointAutoConfiguration": {
          "aliases": [],
          "scope": "singleton",
          "type": "org.springframework.boot.actuate.autoconfigure.web.exchanges.HttpExchangesEndpointAutoConfiguration",
          "dependencies": []
        },
        "jacksonObjectMapper": {
          "aliases": [],
          "scope": "singleton",
          "type": "com.fasterxml.jackson.databind.ObjectMapper",
          "resource": "class path resource [org/springframework/boot/autoconfigure/jackson/JacksonAutoConfiguration$JacksonObjectMapperConfiguration.class]",
          "dependencies": [
            "org.springframework.boot.autoconfigure.jackson.JacksonAutoConfiguration$JacksonObjectMapperConfiguration",
            "jacksonObjectMapperBuilder"
          ]
        },
        "webMvcObservationFilter": {
          "aliases": [],
          "scope": "singleton",
          "type": "org.springframework.boot.web.servlet.FilterRegistrationBean",
          "resource": "class path resource [org/springframework/boot/actuate/autoconfigure/observation/web/servlet/WebMvcObservationAutoConfiguration.class]",
          "dependencies": [
            "org.springframework.boot.actuate.autoconfigure.observation.web.servlet.WebMvcObservationAutoConfiguration",
            "observationRegistry",
            "management.observations-org.springframework.boot.actuate.autoconfigure.observation.ObservationProperties"
          ]
        },
        "org.springdoc.core.properties.SwaggerUiOAuthProperties": {
          "aliases": [],
          "scope": "singleton",
          "type": "org.springdoc.core.properties.SwaggerUiOAuthProperties",
          "dependencies": []
        },
        "management.endpoint.logfile-org.springframework.boot.actuate.autoconfigure.logging.LogFileWebEndpointProperties": {
          "aliases": [],
          "scope": "singleton",
          "type": "org.springframework.boot.actuate.autoconfigure.logging.LogFileWebEndpointProperties",
          "dependencies": []
        },
        "org.springframework.boot.actuate.autoconfigure.metrics.MetricsAspectsAutoConfiguration": {
          "aliases": [],
          "scope": "singleton",
          "type": "org.springframework.boot.actuate.autoconfigure.metrics.MetricsAspectsAutoConfiguration",
          "dependencies": []
        },
        "gson": {
          "aliases": [],
          "scope": "singleton",
          "type": "com.google.gson.Gson",
          "resource": "class path resource [org/springframework/boot/autoconfigure/gson/GsonAutoConfiguration.class]",
          "dependencies": [
            "org.springframework.boot.autoconfigure.gson.GsonAutoConfiguration",
            "gsonBuilder"
          ]
        }
      }
    }
  }
}		
		
		

caches

		
neo@MacBook-Pro-M2 ~ % curl -s http://www.netkiller.cn:8080/actuator/caches | jq
{
  "cacheManagers": {
    "cacheManager": {
      "caches": {
        "censor": {
          "target": "org.springframework.data.redis.cache.DefaultRedisCacheWriter"
        },
        "translate": {
          "target": "org.springframework.data.redis.cache.DefaultRedisCacheWriter"
        }
      }
    }
  }
}		
		
		
		
neo@MacBook-Pro-M2 ~ % curl -s http://www.netkiller.cn:8080/actuator/caches/censor |jq
{
  "target": "org.springframework.data.redis.cache.DefaultRedisCacheWriter",
  "name": "censor",
  "cacheManager": "cacheManager"
}	
		
		

conditions

		
neo@MacBook-Pro-M2 ~ % curl -s http://www.netkiller.cn:8080/actuator/conditions | jq | more
{
  "contexts": {
    "watch-production": {
      "positiveMatches": {
        "Knife4jAutoConfiguration": [
          {
            "condition": "OnPropertyCondition",
            "message": "@ConditionalOnProperty (knife4j.enable=true) matched"
          }
        ],
        "Knife4jAutoConfiguration#knife4jJakartaOperationCustomizer": [
          {
            "condition": "OnBeanCondition",
            "message": "@ConditionalOnMissingBean (types: com.github.xiaoymin.knife4j.spring.extension.Knife4jJakartaOperationCustomizer; SearchStrategy: all) did not find any beans"
          }
        ],
        "Knife4jAutoConfiguration#knife4jOpenApiCustomizer": [
          {
            "condition": "OnBeanCondition",
            "message": "@ConditionalOnMissingBean (types: com.github.xiaoymin.knife4j.spring.extension.Knife4jOpenApiCustomizer; SearchStrategy: all) did not find any beans"
          }
        ],
        "SpringDocConfiguration": [
          {
            "condition": "OnWebApplicationCondition",
            "message": "@ConditionalOnWebApplication (required) found 'session' scope"
          },
          {
            "condition": "OnPropertyCondition",
            "message": "@ConditionalOnProperty (springdoc.api-docs.enabled) matched"
          }
        ],
        "SpringDocConfiguration#fileSupportConverter": [
          {
            "condition": "OnBeanCondition",
            "message": "@ConditionalOnMissingBean (types: org.springdoc.core.converters.FileSupportConverter; SearchStrategy: all) did not find any beans"
          }
        ],
        "SpringDocConfiguration#openAPIBuilder": [
          {
            "condition": "OnBeanCondition",
            "message": "@ConditionalOnMissingBean (types: org.springdoc.core.service.OpenAPIService; SearchStrategy: all) did not find any beans"
          }
        ],
        "SpringDocConfiguration#operationBuilder": [
          {
            "condition": "OnBeanCondition",
            "message": "@ConditionalOnMissingBean (types: org.springdoc.core.service.OperationService; SearchStrategy: all) did not find any beans"
          }
        ],
        "SpringDocConfiguration#parameterBuilder": [
          {
            "condition": "OnBeanCondition",
            "message": "@ConditionalOnMissingBean (types: org.springdoc.core.service.GenericParameterService; SearchStrategy: all) did not find any beans"
          }
        ],

		
		

configprops 配置文件

查看 spring.task.execution 配置

		
neo@MacBook-Pro-M2 ~ % curl -s http://www.netkiller.cn:8080/actuator/configprops/spring.task.execution | jq
{
  "contexts": {
    "watch-production": {
      "beans": {
        "spring.task.execution-org.springframework.boot.autoconfigure.task.TaskExecutionProperties": {
          "prefix": "spring.task.execution",
          "properties": {
            "pool": {
              "queueCapacity": "******",
              "coreSize": "******",
              "maxSize": "******",
              "allowCoreThreadTimeout": "******",
              "keepAlive": "******"
            },
            "simple": {},
            "threadNamePrefix": "******",
            "shutdown": {
              "awaitTermination": "******",
              "awaitTerminationPeriod": "******"
            }
          },
          "inputs": {
            "pool": {
              "queueCapacity": {
                "value": "******",
                "origin": "class path resource [application.properties] from watch-1.0-SNAPSHOT.jar - 25:43"
              },
              "coreSize": {
                "value": "******",
                "origin": "class path resource [application.properties] from watch-1.0-SNAPSHOT.jar - 23:38"
              },
              "maxSize": {
                "value": "******",
                "origin": "class path resource [application.properties] from watch-1.0-SNAPSHOT.jar - 24:37"
              },
              "allowCoreThreadTimeout": {
                "value": "******",
                "origin": "class path resource [application.properties] from watch-1.0-SNAPSHOT.jar - 27:54"
              },
              "keepAlive": {
                "value": "******",
                "origin": "class path resource [application.properties] from watch-1.0-SNAPSHOT.jar - 26:39"
              }
            },
            "simple": {},
            "threadNamePrefix": {
              "value": "******",
              "origin": "class path resource [application.properties] from watch-1.0-SNAPSHOT.jar - 30:42"
            },
            "shutdown": {
              "awaitTermination": {
                "value": "******",
                "origin": "class path resource [application.properties] from watch-1.0-SNAPSHOT.jar - 28:50"
              },
              "awaitTerminationPeriod": {
                "value": "******",
                "origin": "class path resource [application.properties] from watch-1.0-SNAPSHOT.jar - 29:57"
              }
            }
          }
        }
      }
    }
  }
}		
		
		

查看所有配置

		
neo@MacBook-Pro-M2 ~ % curl -s http://www.netkiller.cn:8080/actuator/configprops | jq      
{
  "contexts": {
    "watch-production": {
      "beans": {
        "spring.transaction-org.springframework.boot.autoconfigure.transaction.TransactionProperties": {
          "prefix": "spring.transaction",
          "properties": {},
          "inputs": {}
        },
        "spring.jpa-org.springframework.boot.autoconfigure.orm.jpa.JpaProperties": {
          "prefix": "spring.jpa",
          "properties": {
            "mappingResources": [],
            "showSql": "******",
            "openInView": "******",
            "generateDdl": "******",
            "properties": {}
          },
          "inputs": {
            "mappingResources": [],
            "showSql": {},
            "openInView": {
              "value": "******",
              "origin": "class path resource [application.properties] from watch-1.0-SNAPSHOT.jar - 41:25"
            },
            "generateDdl": {},
            "properties": {}
          }
        },
        "management.observations-org.springframework.boot.actuate.autoconfigure.observation.ObservationProperties": {
          "prefix": "management.observations",
          "properties": {
            "keyValues": {},
            "http": {
              "client": {
                "requests": {
                  "name": "******"
                }
              },
              "server": {
                "requests": {
                  "name": "******"
                }
              }
            },
            "enable": {}
          },
          "inputs": {
            "keyValues": {},
            "http": {
              "client": {
                "requests": {
                  "name": {}
                }
              },
              "server": {
                "requests": {
                  "name": {}
                }
              }
            },
            "enable": {}
          }
        },
        "management.endpoints.web-org.springframework.boot.actuate.autoconfigure.endpoint.web.WebEndpointProperties": {
          "prefix": "management.endpoints.web",
          "properties": {
            "pathMapping": {},
            "exposure": {
              "include": [
                "******"
              ],
              "exclude": []
            },
            "basePath": "******",
            "discovery": {
              "enabled": "******"
            }
          },
          "inputs": {
            "pathMapping": {},
            "exposure": {
              "include": [
                {
                  "value": "******",
                  "origin": "class path resource [application.properties] from watch-1.0-SNAPSHOT.jar - 20:43"
                }
              ],
              "exclude": []
            },
            "basePath": {},
            "discovery": {
              "enabled": {}
            }
          }
        },
        "spring.cache-org.springframework.boot.autoconfigure.cache.CacheProperties": {
          "prefix": "spring.cache",
          "properties": {
            "caffeine": {},
            "infinispan": {},
            "cacheNames": [],
            "couchbase": {},
            "jcache": {},
            "type": "******",
            "redis": {
              "timeToLive": "******",
              "cacheNullValues": "******",
              "useKeyPrefix": "******",
              "enableStatistics": "******"
            }
          },
          "inputs": {
            "caffeine": {},
            "infinispan": {},
            "cacheNames": [],
            "couchbase": {},
            "jcache": {},
            "type": {
              "value": "******",
              "origin": "class path resource [application.properties] from watch-1.0-SNAPSHOT.jar - 60:19"
            },
            "redis": {
              "timeToLive": {
                "value": "******",
                "origin": "class path resource [application.properties] from watch-1.0-SNAPSHOT.jar - 61:33"
              },
              "cacheNullValues": {
                "value": "******",
                "origin": "class path resource [application.properties] from watch-1.0-SNAPSHOT.jar - 62:38"
              },
              "useKeyPrefix": {},
              "enableStatistics": {}
            }
          }
        },
        "spring.jdbc-org.springframework.boot.autoconfigure.jdbc.JdbcProperties": {
          "prefix": "spring.jdbc",
          "properties": {
            "template": {
              "fetchSize": "******",
              "maxRows": "******"
            }
          },
          "inputs": {
            "template": {
              "fetchSize": {},
              "maxRows": {}
            }
          }
        },
        "spring.data.redis-org.springframework.boot.autoconfigure.data.redis.RedisProperties": {
          "prefix": "spring.data.redis",
          "properties": {
            "database": "******",
            "password": "******",
            "port": "******",
            "jedis": {
              "pool": {
                "maxIdle": "******",
                "minIdle": "******",
                "maxActive": "******",
                "maxWait": "******"
              }
            },
            "host": "******",
            "ssl": {
              "enabled": "******"
            },
            "lettuce": {
              "shutdownTimeout": "******",
              "pool": {
                "maxIdle": "******",
                "minIdle": "******",
                "maxActive": "******",
                "maxWait": "******"
              },
              "cluster": {
                "refresh": {
                  "dynamicRefreshSources": "******",
                  "adaptive": "******"
                }
              }
            },
            "timeout": "******"
          },
          "inputs": {
            "database": {
              "value": "******",
              "origin": "class path resource [application-prod.properties] from watch-1.0-SNAPSHOT.jar - 11:28"
            },
            "password": {
              "value": "******",
              "origin": "class path resource [application-prod.properties] from watch-1.0-SNAPSHOT.jar - 10:28"
            },
            "port": {
              "value": "******",
              "origin": "class path resource [application-prod.properties] from watch-1.0-SNAPSHOT.jar - 9:24"
            },
            "jedis": {
              "pool": {
                "maxIdle": {},
                "minIdle": {},
                "maxActive": {},
                "maxWait": {}
              }
            },
            "host": {
              "value": "******",
              "origin": "class path resource [application-prod.properties] from watch-1.0-SNAPSHOT.jar - 8:24"
            },
            "ssl": {
              "enabled": {}
            },
            "lettuce": {
              "shutdownTimeout": {},
              "pool": {
                "maxIdle": {
                  "value": "******",
                  "origin": "class path resource [application.properties] from watch-1.0-SNAPSHOT.jar - 58:41"
                },
                "minIdle": {
                  "value": "******",
                  "origin": "class path resource [application.properties] from watch-1.0-SNAPSHOT.jar - 59:41"
                },
                "maxActive": {
                  "value": "******",
                  "origin": "class path resource [application.properties] from watch-1.0-SNAPSHOT.jar - 56:43"
                },
                "maxWait": {
                  "value": "******",
                  "origin": "class path resource [application.properties] from watch-1.0-SNAPSHOT.jar - 57:41"
                }
              },
              "cluster": {
                "refresh": {
                  "dynamicRefreshSources": {},
                  "adaptive": {}
                }
              }
            },
            "timeout": {
              "value": "******",
              "origin": "class path resource [application-prod.properties] from watch-1.0-SNAPSHOT.jar - 12:27"
            }
          }
        },
        "spring.jackson-org.springframework.boot.autoconfigure.jackson.JacksonProperties": {
          "prefix": "spring.jackson",
          "properties": {
            "serialization": {},
            "visibility": {},
            "parser": {},
            "datatype": {
              "jsonNode": {},
              "enum": {}
            },
            "deserialization": {},
            "generator": {},
            "mapper": {}
          },
          "inputs": {
            "serialization": {},
            "visibility": {},
            "parser": {},
            "datatype": {
              "jsonNode": {},
              "enum": {}
            },
            "deserialization": {},
            "generator": {},
            "mapper": {}
          }
        },
        "spring.gson-org.springframework.boot.autoconfigure.gson.GsonProperties": {
          "prefix": "spring.gson",
          "properties": {},
          "inputs": {}
        },
        "management.health.db-org.springframework.boot.actuate.autoconfigure.jdbc.DataSourceHealthIndicatorProperties": {
          "prefix": "management.health.db",
          "properties": {
            "ignoreRoutingDataSources": "******"
          },
          "inputs": {
            "ignoreRoutingDataSources": {}
          }
        },
        "spring.data.web-org.springframework.boot.autoconfigure.data.web.SpringDataWebProperties": {
          "prefix": "spring.data.web",
          "properties": {
            "pageable": {
              "pageParameter": "******",
              "sizeParameter": "******",
              "oneIndexedParameters": "******",
              "prefix": "******",
              "qualifierDelimiter": "******",
              "defaultPageSize": "******",
              "maxPageSize": "******"
            },
            "sort": {
              "sortParameter": "******"
            }
          },
          "inputs": {
            "pageable": {
              "pageParameter": {},
              "sizeParameter": {},
              "oneIndexedParameters": {},
              "prefix": {},
              "qualifierDelimiter": {},
              "defaultPageSize": {},
              "maxPageSize": {}
            },
            "sort": {
              "sortParameter": {}
            }
          }
        },
        "org.springdoc.core.properties.SpringDocConfigProperties": {
          "prefix": "springdoc",
          "properties": {
            "removeBrokenReferenceDefinitions": "******",
            "writerWithOrderByKeys": "******",
            "disableI18n": "******",
            "showLoginEndpoint": "******",
            "nullableRequestParameterEnabled": "******",
            "enableJavadoc": "******",
            "useFqn": "******",
            "useManagementPort": "******",
            "showSpringCloudFunctions": "******",
            "enableDataRest": "******",
            "cache": {
              "disabled": "******"
            },
            "preLoadingEnabled": "******",
            "enableKotlin": "******",
            "enableGroovy": "******",
            "defaultProducesMediaType": "******",
            "modelConverters": {
              "deprecatingConverter": {
                "enabled": "******"
              },
              "pageableConverter": {
                "enabled": "******"
              },
              "polymorphicConverter": {
                "enabled": "******"
              }
            },
            "enableHateoas": "******",
            "groupConfigs": [
              {
                "pathsToMatch": [
                  "******"
                ],
                "group": "******",
                "displayName": "******"
              }
            ],
            "enableSpringSecurity": "******",
            "writerWithDefaultPrettyPrinter": "******",
            "showOauth2Endpoints": "******",
            "showActuator": "******",
            "defaultFlatParamObject": "******",
            "defaultSupportFormData": "******",
            "apiDocs": {
              "path": "******",
              "enabled": "******",
              "resolveSchemaProperties": "******",
              "groups": {
                "enabled": "******"
              }
            },
            "autoTagClasses": "******",
            "webjars": {
              "prefix": "******"
            },
            "modelAndViewAllowed": "******",
            "defaultConsumesMediaType": "******",
            "sortConverter": {
              "enabled": "******"
            }
          },
          "inputs": {
            "removeBrokenReferenceDefinitions": {},
            "writerWithOrderByKeys": {},
            "disableI18n": {},
            "showLoginEndpoint": {},
            "nullableRequestParameterEnabled": {},
            "enableJavadoc": {},
            "useFqn": {},
            "useManagementPort": {},
            "showSpringCloudFunctions": {},
            "enableDataRest": {},
            "cache": {
              "disabled": {}
            },
            "preLoadingEnabled": {},
            "enableKotlin": {},
            "enableGroovy": {},
            "defaultProducesMediaType": {},
            "modelConverters": {
              "deprecatingConverter": {
                "enabled": {}
              },
              "pageableConverter": {
                "enabled": {}
              },
              "polymorphicConverter": {
                "enabled": {}
              }
            },
            "enableHateoas": {},
            "groupConfigs": [
              {
                "pathsToMatch": [
                  {}
                ],
                "group": {},
                "displayName": {}
              }
            ],
            "enableSpringSecurity": {},
            "writerWithDefaultPrettyPrinter": {},
            "showOauth2Endpoints": {},
            "showActuator": {},
            "defaultFlatParamObject": {},
            "defaultSupportFormData": {},
            "apiDocs": {
              "path": {
                "value": "******",
                "origin": "class path resource [application.properties] from watch-1.0-SNAPSHOT.jar - 38:25"
              },
              "enabled": {},
              "resolveSchemaProperties": {},
              "groups": {
                "enabled": {}
              }
            },
            "autoTagClasses": {},
            "webjars": {
              "prefix": {}
            },
            "modelAndViewAllowed": {},
            "defaultConsumesMediaType": {},
            "sortConverter": {
              "enabled": {}
            }
          }
        },
        "spring.jpa.hibernate-org.springframework.boot.autoconfigure.orm.jpa.HibernateProperties": {
          "prefix": "spring.jpa.hibernate",
          "properties": {
            "naming": {},
            "ddlAuto": "******"
          },
          "inputs": {
            "naming": {},
            "ddlAuto": {
              "value": "******",
              "origin": "class path resource [application.properties] from watch-1.0-SNAPSHOT.jar - 43:31"
            }
          }
        },
        "spring.info-org.springframework.boot.autoconfigure.info.ProjectInfoProperties": {
          "prefix": "spring.info",
          "properties": {
            "build": {
              "location": {},
              "encoding": "******"
            },
            "git": {
              "location": {},
              "encoding": "******"
            }
          },
          "inputs": {
            "build": {
              "location": {},
              "encoding": {}
            },
            "git": {
              "location": {},
              "encoding": {}
            }
          }
        },
        "spring.datasource-org.springframework.boot.autoconfigure.jdbc.DataSourceProperties": {
          "prefix": "spring.datasource",
          "properties": {
            "password": "******",
            "embeddedDatabaseConnection": "******",
            "driverClassName": "******",
            "generateUniqueName": "******",
            "xa": {
              "properties": {}
            },
            "url": "******",
            "username": "******"
          },
          "inputs": {
            "password": {
              "value": "******",
              "origin": "class path resource [application-prod.properties] from watch-1.0-SNAPSHOT.jar - 6:28"
            },
            "embeddedDatabaseConnection": {},
            "driverClassName": {
              "value": "******",
              "origin": "class path resource [application-prod.properties] from watch-1.0-SNAPSHOT.jar - 3:37"
            },
            "generateUniqueName": {},
            "xa": {
              "properties": {}
            },
            "url": {
              "value": "******",
              "origin": "class path resource [application-prod.properties] from watch-1.0-SNAPSHOT.jar - 4:23"
            },
            "username": {
              "value": "******",
              "origin": "class path resource [application-prod.properties] from watch-1.0-SNAPSHOT.jar - 5:28"
            }
          }
        },
        "org.springdoc.core.properties.SwaggerUiConfigProperties": {
          "prefix": "springdoc.swagger-ui",
          "properties": {
            "path": "******",
            "operationsSorter": "******",
            "useRootPath": "******",
            "groupsOrder": "******",
            "tagsSorter": "******",
            "disableSwaggerDefaultUrl": "******",
            "csrf": {
              "enabled": "******",
              "useLocalStorage": "******",
              "useSessionStorage": "******",
              "cookieName": "******",
              "localStorageKey": "******",
              "sessionStorageKey": "******",
              "headerName": "******"
            },
            "syntaxHighlight": {},
            "version": "******",
            "enabled": "******"
          },
          "inputs": {
            "path": {
              "value": "******",
              "origin": "class path resource [application.properties] from watch-1.0-SNAPSHOT.jar - 35:27"
            },
            "operationsSorter": {
              "value": "******",
              "origin": "class path resource [application.properties] from watch-1.0-SNAPSHOT.jar - 37:40"
            },
            "useRootPath": {},
            "groupsOrder": {},
            "tagsSorter": {
              "value": "******",
              "origin": "class path resource [application.properties] from watch-1.0-SNAPSHOT.jar - 36:34"
            },
            "disableSwaggerDefaultUrl": {},
            "csrf": {
              "enabled": {},
              "useLocalStorage": {},
              "useSessionStorage": {},
              "cookieName": {},
              "localStorageKey": {},
              "sessionStorageKey": {},
              "headerName": {}
            },
            "syntaxHighlight": {},
            "version": {},
            "enabled": {}
          }
        },
        "management.endpoint.health-org.springframework.boot.actuate.autoconfigure.health.HealthEndpointProperties": {
          "prefix": "management.endpoint.health",
          "properties": {
            "logging": {
              "slowIndicatorThreshold": "******"
            },
            "showDetails": "******",
            "status": {
              "order": [],
              "httpMapping": {}
            },
            "roles": [],
            "group": {}
          },
          "inputs": {
            "logging": {
              "slowIndicatorThreshold": {}
            },
            "showDetails": {},
            "status": {
              "order": [],
              "httpMapping": {}
            },
            "roles": [],
            "group": {}
          }
        },
        "spring.reactor.netty-org.springframework.boot.autoconfigure.reactor.netty.ReactorNettyProperties": {
          "prefix": "spring.reactor.netty",
          "properties": {},
          "inputs": {}
        },
        "spring.lifecycle-org.springframework.boot.autoconfigure.context.LifecycleProperties": {
          "prefix": "spring.lifecycle",
          "properties": {
            "timeoutPerShutdownPhase": "******"
          },
          "inputs": {
            "timeoutPerShutdownPhase": {}
          }
        },
        "spring.web-org.springframework.boot.autoconfigure.web.WebProperties": {
          "prefix": "spring.web",
          "properties": {
            "localeResolver": "******",
            "resources": {
              "staticLocations": [
                "******",
                "******",
                "******",
                "******"
              ],
              "addMappings": "******",
              "chain": {
                "cache": "******",
                "compressed": "******",
                "strategy": {
                  "fixed": {
                    "enabled": "******",
                    "paths": [
                      "******"
                    ]
                  },
                  "content": {
                    "enabled": "******",
                    "paths": [
                      "******"
                    ]
                  }
                }
              },
              "cache": {
                "cachecontrol": {},
                "useLastModified": "******"
              }
            }
          },
          "inputs": {
            "localeResolver": {},
            "resources": {
              "staticLocations": [
                {},
                {},
                {},
                {}
              ],
              "addMappings": {},
              "chain": {
                "cache": {},
                "compressed": {},
                "strategy": {
                  "fixed": {
                    "enabled": {},
                    "paths": [
                      {}
                    ]
                  },
                  "content": {
                    "enabled": {},
                    "paths": [
                      {}
                    ]
                  }
                }
              },
              "cache": {
                "cachecontrol": {},
                "useLastModified": {}
              }
            }
          }
        },
        "management.metrics-org.springframework.boot.actuate.autoconfigure.metrics.MetricsProperties": {
          "prefix": "management.metrics",
          "properties": {
            "system": {
              "diskspace": {
                "paths": [
                  "******"
                ]
              }
            },
            "data": {
              "repository": {
                "metricName": "******",
                "autotime": {
                  "enabled": "******",
                  "percentilesHistogram": "******"
                }
              }
            },
            "web": {
              "client": {
                "maxUriTags": "******"
              },
              "server": {
                "maxUriTags": "******"
              }
            },
            "enable": {},
            "useGlobalRegistry": "******",
            "distribution": {
              "percentilesHistogram": {},
              "percentiles": {},
              "slo": {},
              "minimumExpectedValue": {},
              "maximumExpectedValue": {},
              "expiry": {},
              "bufferLength": {}
            },
            "tags": {}
          },
          "inputs": {
            "system": {
              "diskspace": {
                "paths": [
                  {}
                ]
              }
            },
            "data": {
              "repository": {
                "metricName": {},
                "autotime": {
                  "enabled": {},
                  "percentilesHistogram": {}
                }
              }
            },
            "web": {
              "client": {
                "maxUriTags": {}
              },
              "server": {
                "maxUriTags": {}
              }
            },
            "enable": {},
            "useGlobalRegistry": {},
            "distribution": {
              "percentilesHistogram": {},
              "percentiles": {},
              "slo": {},
              "minimumExpectedValue": {},
              "maximumExpectedValue": {},
              "expiry": {},
              "bufferLength": {}
            },
            "tags": {}
          }
        },
        "spring.mvc-org.springframework.boot.autoconfigure.web.servlet.WebMvcProperties": {
          "prefix": "spring.mvc",
          "properties": {
            "contentnegotiation": {
              "favorParameter": "******",
              "mediaTypes": {}
            },
            "servlet": {
              "path": "******",
              "loadOnStartup": "******"
            },
            "format": {},
            "staticPathPattern": "******",
            "dispatchOptionsRequest": "******",
            "dispatchTraceRequest": "******",
            "problemdetails": {
              "enabled": "******"
            },
            "logResolvedException": "******",
            "webjarsPathPattern": "******",
            "async": {},
            "view": {},
            "publishRequestHandledEvents": "******",
            "logRequestDetails": "******",
            "pathmatch": {
              "matchingStrategy": "******"
            },
            "throwExceptionIfNoHandlerFound": "******"
          },
          "inputs": {
            "contentnegotiation": {
              "favorParameter": {},
              "mediaTypes": {}
            },
            "servlet": {
              "path": {},
              "loadOnStartup": {}
            },
            "format": {},
            "staticPathPattern": {},
            "dispatchOptionsRequest": {},
            "dispatchTraceRequest": {},
            "problemdetails": {
              "enabled": {}
            },
            "logResolvedException": {},
            "webjarsPathPattern": {},
            "async": {},
            "view": {},
            "publishRequestHandledEvents": {},
            "logRequestDetails": {},
            "pathmatch": {
              "matchingStrategy": {}
            },
            "throwExceptionIfNoHandlerFound": {}
          }
        },
        "knife4j.setting-com.github.xiaoymin.knife4j.spring.configuration.Knife4jSetting": {
          "prefix": "knife4j.setting",
          "properties": {
            "enableDebug": "******",
            "enableOpenApi": "******",
            "enableHomeCustom": "******",
            "enableFooter": "******",
            "enableFilterMultipartApiMethodType": "******",
            "language": "******",
            "enableReloadCacheParameter": "******",
            "enableDynamicParameter": "******",
            "enableHostText": "******",
            "enableRequestCache": "******",
            "enableFooterCustom": "******",
            "customCode": "******",
            "swaggerModelName": "******",
            "enableResponseCode": "******",
            "enableDocumentManage": "******",
            "enableAfterScript": "******",
            "enableSwaggerModels": "******",
            "enableFilterMultipartApis": "******",
            "enableHost": "******",
            "enableVersion": "******",
            "enableSearch": "******",
            "enableGroup": "******"
          },
          "inputs": {
            "enableDebug": {},
            "enableOpenApi": {},
            "enableHomeCustom": {},
            "enableFooter": {},
            "enableFilterMultipartApiMethodType": {},
            "language": {
              "value": "******",
              "origin": "class path resource [application.properties] from watch-1.0-SNAPSHOT.jar - 33:26"
            },
            "enableReloadCacheParameter": {},
            "enableDynamicParameter": {},
            "enableHostText": {},
            "enableRequestCache": {},
            "enableFooterCustom": {},
            "customCode": {},
            "swaggerModelName": {},
            "enableResponseCode": {},
            "enableDocumentManage": {},
            "enableAfterScript": {},
            "enableSwaggerModels": {},
            "enableFilterMultipartApis": {},
            "enableHost": {},
            "enableVersion": {},
            "enableSearch": {},
            "enableGroup": {}
          }
        },
        "management.info-org.springframework.boot.actuate.autoconfigure.info.InfoContributorProperties": {
          "prefix": "management.info",
          "properties": {
            "git": {
              "mode": "******"
            }
          },
          "inputs": {
            "git": {
              "mode": {}
            }
          }
        },
        "spring.netty-org.springframework.boot.autoconfigure.netty.NettyProperties": {
          "prefix": "spring.netty",
          "properties": {},
          "inputs": {}
        },
        "spring.task.execution-org.springframework.boot.autoconfigure.task.TaskExecutionProperties": {
          "prefix": "spring.task.execution",
          "properties": {
            "pool": {
              "queueCapacity": "******",
              "coreSize": "******",
              "maxSize": "******",
              "allowCoreThreadTimeout": "******",
              "keepAlive": "******"
            },
            "simple": {},
            "threadNamePrefix": "******",
            "shutdown": {
              "awaitTermination": "******",
              "awaitTerminationPeriod": "******"
            }
          },
          "inputs": {
            "pool": {
              "queueCapacity": {
                "value": "******",
                "origin": "class path resource [application.properties] from watch-1.0-SNAPSHOT.jar - 25:43"
              },
              "coreSize": {
                "value": "******",
                "origin": "class path resource [application.properties] from watch-1.0-SNAPSHOT.jar - 23:38"
              },
              "maxSize": {
                "value": "******",
                "origin": "class path resource [application.properties] from watch-1.0-SNAPSHOT.jar - 24:37"
              },
              "allowCoreThreadTimeout": {
                "value": "******",
                "origin": "class path resource [application.properties] from watch-1.0-SNAPSHOT.jar - 27:54"
              },
              "keepAlive": {
                "value": "******",
                "origin": "class path resource [application.properties] from watch-1.0-SNAPSHOT.jar - 26:39"
              }
            },
            "simple": {},
            "threadNamePrefix": {
              "value": "******",
              "origin": "class path resource [application.properties] from watch-1.0-SNAPSHOT.jar - 30:42"
            },
            "shutdown": {
              "awaitTermination": {
                "value": "******",
                "origin": "class path resource [application.properties] from watch-1.0-SNAPSHOT.jar - 28:50"
              },
              "awaitTerminationPeriod": {
                "value": "******",
                "origin": "class path resource [application.properties] from watch-1.0-SNAPSHOT.jar - 29:57"
              }
            }
          }
        },
        "management.server-org.springframework.boot.actuate.autoconfigure.web.server.ManagementServerProperties": {
          "prefix": "management.server",
          "properties": {
            "basePath": "******"
          },
          "inputs": {
            "basePath": {}
          }
        },
        "knife4j-com.github.xiaoymin.knife4j.spring.configuration.Knife4jProperties": {
          "prefix": "knife4j",
          "properties": {
            "cors": "******",
            "production": "******",
            "enable": "******",
            "setting": {
              "customCode": "******",
              "language": "******",
              "enableSwaggerModels": "******",
              "swaggerModelName": "******",
              "enableReloadCacheParameter": "******",
              "enableAfterScript": "******",
              "enableDocumentManage": "******",
              "enableVersion": "******",
              "enableRequestCache": "******",
              "enableFilterMultipartApis": "******",
              "enableFilterMultipartApiMethodType": "******",
              "enableHost": "******",
              "enableHostText": "******",
              "enableDynamicParameter": "******",
              "enableDebug": "******",
              "enableFooter": "******",
              "enableFooterCustom": "******",
              "enableSearch": "******",
              "enableOpenApi": "******",
              "enableHomeCustom": "******",
              "enableGroup": "******",
              "enableResponseCode": "******"
            }
          },
          "inputs": {
            "cors": {},
            "production": {},
            "enable": {
              "value": "******",
              "origin": "class path resource [application.properties] from watch-1.0-SNAPSHOT.jar - 32:16"
            },
            "setting": {
              "customCode": {},
              "language": {
                "value": "******",
                "origin": "class path resource [application.properties] from watch-1.0-SNAPSHOT.jar - 33:26"
              },
              "enableSwaggerModels": {},
              "swaggerModelName": {},
              "enableReloadCacheParameter": {},
              "enableAfterScript": {},
              "enableDocumentManage": {},
              "enableVersion": {},
              "enableRequestCache": {},
              "enableFilterMultipartApis": {},
              "enableFilterMultipartApiMethodType": {},
              "enableHost": {},
              "enableHostText": {},
              "enableDynamicParameter": {},
              "enableDebug": {},
              "enableFooter": {},
              "enableFooterCustom": {},
              "enableSearch": {},
              "enableOpenApi": {},
              "enableHomeCustom": {},
              "enableGroup": {},
              "enableResponseCode": {}
            }
          }
        },
        "spring.ssl-org.springframework.boot.autoconfigure.ssl.SslProperties": {
          "prefix": "spring.ssl",
          "properties": {
            "bundle": {
              "pem": {},
              "jks": {},
              "watch": {
                "file": {
                  "quietPeriod": "******"
                }
              }
            }
          },
          "inputs": {
            "bundle": {
              "pem": {},
              "jks": {},
              "watch": {
                "file": {
                  "quietPeriod": {}
                }
              }
            }
          }
        },
        "spring.codec-org.springframework.boot.autoconfigure.codec.CodecProperties": {
          "prefix": "spring.codec",
          "properties": {
            "logRequestDetails": "******"
          },
          "inputs": {
            "logRequestDetails": {}
          }
        },
        "management.endpoint.configprops-org.springframework.boot.actuate.autoconfigure.context.properties.ConfigurationPropertiesReportEndpointProperties": {
          "prefix": "management.endpoint.configprops",
          "properties": {
            "showValues": "******",
            "roles": []
          },
          "inputs": {
            "showValues": {},
            "roles": []
          }
        },
        "management.simple.metrics.export-org.springframework.boot.actuate.autoconfigure.metrics.export.simple.SimpleProperties": {
          "prefix": "management.simple.metrics.export",
          "properties": {
            "mode": "******",
            "enabled": "******",
            "step": "******"
          },
          "inputs": {
            "mode": {},
            "enabled": {},
            "step": {}
          }
        },
        "spring.task.scheduling-org.springframework.boot.autoconfigure.task.TaskSchedulingProperties": {
          "prefix": "spring.task.scheduling",
          "properties": {
            "pool": {
              "size": "******"
            },
            "simple": {},
            "threadNamePrefix": "******",
            "shutdown": {
              "awaitTermination": "******"
            }
          },
          "inputs": {
            "pool": {
              "size": {}
            },
            "simple": {},
            "threadNamePrefix": {},
            "shutdown": {
              "awaitTermination": {}
            }
          }
        },
        "spring.reactor-org.springframework.boot.autoconfigure.reactor.ReactorProperties": {
          "prefix": "spring.reactor",
          "properties": {
            "contextPropagation": "******"
          },
          "inputs": {
            "contextPropagation": {}
          }
        },
        "management.endpoints.web.cors-org.springframework.boot.actuate.autoconfigure.endpoint.web.CorsEndpointProperties": {
          "prefix": "management.endpoints.web.cors",
          "properties": {
            "allowedHeaders": [],
            "allowedMethods": [],
            "allowedOrigins": [],
            "maxAge": "******",
            "exposedHeaders": [],
            "allowedOriginPatterns": []
          },
          "inputs": {
            "allowedHeaders": [],
            "allowedMethods": [],
            "allowedOrigins": [],
            "maxAge": {},
            "exposedHeaders": [],
            "allowedOriginPatterns": []
          }
        },
        "management.health.diskspace-org.springframework.boot.actuate.autoconfigure.system.DiskSpaceHealthIndicatorProperties": {
          "prefix": "management.health.diskspace",
          "properties": {
            "path": "******",
            "threshold": "******"
          },
          "inputs": {
            "path": {},
            "threshold": {}
          }
        },
        "org.springdoc.core.properties.SwaggerUiOAuthProperties": {
          "prefix": "springdoc.swagger-ui.oauth",
          "properties": {
            "configParameters": {}
          },
          "inputs": {
            "configParameters": {}
          }
        },
        "spring.sql.init-org.springframework.boot.autoconfigure.sql.init.SqlInitializationProperties": {
          "prefix": "spring.sql.init",
          "properties": {
            "mode": "******",
            "separator": "******",
            "platform": "******",
            "continueOnError": "******"
          },
          "inputs": {
            "mode": {},
            "separator": {},
            "platform": {},
            "continueOnError": {}
          }
        },
        "management.endpoint.env-org.springframework.boot.actuate.autoconfigure.env.EnvironmentEndpointProperties": {
          "prefix": "management.endpoint.env",
          "properties": {
            "showValues": "******",
            "roles": []
          },
          "inputs": {
            "showValues": {},
            "roles": []
          }
        },
        "management.endpoint.logfile-org.springframework.boot.actuate.autoconfigure.logging.LogFileWebEndpointProperties": {
          "prefix": "management.endpoint.logfile",
          "properties": {},
          "inputs": {}
        },
        "knife4j.basic-com.github.xiaoymin.knife4j.spring.configuration.Knife4jHttpBasic": {
          "prefix": "knife4j.basic",
          "properties": {
            "enable": "******"
          },
          "inputs": {
            "enable": {}
          }
        },
        "server-org.springframework.boot.autoconfigure.web.ServerProperties": {
          "prefix": "server",
          "properties": {
            "maxHttpRequestHeaderSize": "******",
            "reactive": {
              "session": {
                "timeout": "******"
              }
            },
            "undertow": {
              "maxHttpPostSize": "******",
              "eagerFilterInit": "******",
              "maxHeaders": "******",
              "maxCookies": "******",
              "allowEncodedSlash": "******",
              "decodeUrl": "******",
              "urlCharset": "******",
              "alwaysSetKeepAlive": "******",
              "preservePathOnForward": "******",
              "accesslog": {
                "enabled": "******",
                "pattern": "******",
                "prefix": "******",
                "suffix": "******",
                "dir": "******",
                "rotate": "******"
              },
              "threads": {},
              "options": {
                "socket": {},
                "server": {}
              }
            },
            "port": "******",
            "tomcat": {
              "accesslog": {
                "enabled": "******",
                "pattern": "******",
                "directory": "******",
                "prefix": "******",
                "suffix": "******",
                "checkExists": "******",
                "rotate": "******",
                "renameOnRotate": "******",
                "maxDays": "******",
                "fileDateFormat": "******",
                "ipv6Canonical": "******",
                "requestAttributesEnabled": "******",
                "buffered": "******"
              },
              "threads": {
                "max": "******",
                "minSpare": "******"
              },
              "backgroundProcessorDelay": "******",
              "maxHttpFormPostSize": "******",
              "maxSwallowSize": "******",
              "redirectContextRoot": "******",
              "useRelativeRedirects": "******",
              "uriEncoding": "******",
              "maxConnections": "******",
              "acceptCount": "******",
              "processorCache": "******",
              "maxKeepAliveRequests": "******",
              "additionalTldSkipPatterns": [],
              "relaxedPathChars": [],
              "relaxedQueryChars": [],
              "rejectIllegalHeader": "******",
              "resource": {
                "allowCaching": "******"
              },
              "mbeanregistry": {
                "enabled": "******"
              },
              "remoteip": {
                "internalProxies": "******",
                "protocolHeaderHttpsValue": "******",
                "hostHeader": "******",
                "portHeader": "******"
              },
              "maxHttpResponseHeaderSize": "******"
            },
            "servlet": {
              "contextParameters": {},
              "applicationDisplayName": "******",
              "registerDefaultServlet": "******"
            },
            "jetty": {
              "accesslog": {
                "enabled": "******",
                "format": "******",
                "retentionPeriod": "******",
                "append": "******"
              },
              "threads": {
                "acceptors": "******",
                "selectors": "******",
                "max": "******",
                "min": "******",
                "idleTimeout": "******"
              },
              "maxHttpFormPostSize": "******",
              "maxHttpResponseHeaderSize": "******",
              "maxConnections": "******"
            },
            "error": {
              "path": "******",
              "includeException": "******",
              "includeStacktrace": "******",
              "includeMessage": "******",
              "includeBindingErrors": "******",
              "whitelabel": {
                "enabled": "******"
              }
            },
            "shutdown": "******",
            "netty": {
              "h2cMaxContentLength": "******",
              "initialBufferSize": "******",
              "maxInitialLineLength": "******",
              "validateHeaders": "******"
            }
          },
          "inputs": {
            "maxHttpRequestHeaderSize": {},
            "reactive": {
              "session": {
                "timeout": {}
              }
            },
            "undertow": {
              "maxHttpPostSize": {},
              "eagerFilterInit": {},
              "maxHeaders": {},
              "maxCookies": {},
              "allowEncodedSlash": {},
              "decodeUrl": {},
              "urlCharset": {},
              "alwaysSetKeepAlive": {},
              "preservePathOnForward": {},
              "accesslog": {
                "enabled": {},
                "pattern": {},
                "prefix": {},
                "suffix": {},
                "dir": {},
                "rotate": {}
              },
              "threads": {},
              "options": {
                "socket": {},
                "server": {}
              }
            },
            "port": {
              "value": "******",
              "origin": "\"server.port\" from property source \"commandLineArgs\""
            },
            "tomcat": {
              "accesslog": {
                "enabled": {},
                "pattern": {},
                "directory": {},
                "prefix": {},
                "suffix": {},
                "checkExists": {},
                "rotate": {},
                "renameOnRotate": {},
                "maxDays": {},
                "fileDateFormat": {},
                "ipv6Canonical": {},
                "requestAttributesEnabled": {},
                "buffered": {}
              },
              "threads": {
                "max": {},
                "minSpare": {}
              },
              "backgroundProcessorDelay": {},
              "maxHttpFormPostSize": {},
              "maxSwallowSize": {},
              "redirectContextRoot": {},
              "useRelativeRedirects": {},
              "uriEncoding": {},
              "maxConnections": {
                "value": "******",
                "origin": "class path resource [application.properties] from watch-1.0-SNAPSHOT.jar - 13:31"
              },
              "acceptCount": {
                "value": "******",
                "origin": "class path resource [application.properties] from watch-1.0-SNAPSHOT.jar - 15:28"
              },
              "processorCache": {},
              "maxKeepAliveRequests": {},
              "additionalTldSkipPatterns": [],
              "relaxedPathChars": [],
              "relaxedQueryChars": [],
              "rejectIllegalHeader": {},
              "resource": {
                "allowCaching": {}
              },
              "mbeanregistry": {
                "enabled": {}
              },
              "remoteip": {
                "internalProxies": {},
                "protocolHeaderHttpsValue": {},
                "hostHeader": {},
                "portHeader": {}
              },
              "maxHttpResponseHeaderSize": {}
            },
            "servlet": {
              "contextParameters": {},
              "applicationDisplayName": {},
              "registerDefaultServlet": {}
            },
            "jetty": {
              "accesslog": {
                "enabled": {},
                "format": {},
                "retentionPeriod": {},
                "append": {}
              },
              "threads": {
                "acceptors": {},
                "selectors": {},
                "max": {},
                "min": {},
                "idleTimeout": {}
              },
              "maxHttpFormPostSize": {},
              "maxHttpResponseHeaderSize": {},
              "maxConnections": {}
            },
            "error": {
              "path": {},
              "includeException": {},
              "includeStacktrace": {},
              "includeMessage": {},
              "includeBindingErrors": {},
              "whitelabel": {
                "enabled": {}
              }
            },
            "shutdown": {},
            "netty": {
              "h2cMaxContentLength": {},
              "initialBufferSize": {},
              "maxInitialLineLength": {},
              "validateHeaders": {}
            }
          }
        },
        "spring.servlet.multipart-org.springframework.boot.autoconfigure.web.servlet.MultipartProperties": {
          "prefix": "spring.servlet.multipart",
          "properties": {
            "fileSizeThreshold": "******",
            "maxFileSize": "******",
            "maxRequestSize": "******",
            "strictServletCompliance": "******",
            "enabled": "******",
            "resolveLazily": "******"
          },
          "inputs": {
            "fileSizeThreshold": {},
            "maxFileSize": {
              "value": "******",
              "origin": "class path resource [application.properties] from watch-1.0-SNAPSHOT.jar - 12:40"
            },
            "maxRequestSize": {
              "value": "******",
              "origin": "class path resource [application.properties] from watch-1.0-SNAPSHOT.jar - 11:43"
            },
            "strictServletCompliance": {},
            "enabled": {},
            "resolveLazily": {}
          }
        },
        "dataSource": {
          "prefix": "spring.datasource.hikari",
          "properties": {
            "validationTimeout": "******",
            "hikariPoolMXBean": {},
            "minimumIdle": "******",
            "password": "******",
            "metricsTrackerFactory": {},
            "dataSourceProperties": {},
            "loginTimeout": "******",
            "autoCommit": "******",
            "connectionTimeout": "******",
            "poolName": "******",
            "initializationFailTimeout": "******",
            "readOnly": "******",
            "registerMbeans": "******",
            "healthCheckProperties": {},
            "isolateInternalQueries": "******",
            "leakDetectionThreshold": "******",
            "maxLifetime": "******",
            "keepaliveTime": "******",
            "allowPoolSuspension": "******",
            "idleTimeout": "******",
            "connectionTestQuery": "******",
            "driverClassName": "******",
            "jdbcUrl": "******",
            "maximumPoolSize": "******",
            "username": "******"
          },
          "inputs": {
            "validationTimeout": {},
            "hikariPoolMXBean": {},
            "minimumIdle": {
              "value": "******",
              "origin": "class path resource [application.properties] from watch-1.0-SNAPSHOT.jar - 48:39"
            },
            "password": {},
            "metricsTrackerFactory": {},
            "dataSourceProperties": {},
            "loginTimeout": {},
            "autoCommit": {
              "value": "******",
              "origin": "class path resource [application.properties] from watch-1.0-SNAPSHOT.jar - 50:38"
            },
            "connectionTimeout": {
              "value": "******",
              "origin": "class path resource [application.properties] from watch-1.0-SNAPSHOT.jar - 53:45"
            },
            "poolName": {},
            "initializationFailTimeout": {},
            "readOnly": {},
            "registerMbeans": {},
            "healthCheckProperties": {},
            "isolateInternalQueries": {},
            "leakDetectionThreshold": {},
            "maxLifetime": {
              "value": "******",
              "origin": "class path resource [application.properties] from watch-1.0-SNAPSHOT.jar - 52:39"
            },
            "keepaliveTime": {},
            "allowPoolSuspension": {},
            "idleTimeout": {
              "value": "******",
              "origin": "class path resource [application.properties] from watch-1.0-SNAPSHOT.jar - 51:39"
            },
            "connectionTestQuery": {
              "value": "******",
              "origin": "class path resource [application.properties] from watch-1.0-SNAPSHOT.jar - 54:48"
            },
            "driverClassName": {},
            "jdbcUrl": {},
            "maximumPoolSize": {
              "value": "******",
              "origin": "class path resource [application.properties] from watch-1.0-SNAPSHOT.jar - 49:44"
            },
            "username": {}
          }
        }
      }
    }
  }
}
		
		

env 环境变量

		
neo@MacBook-Pro-M2 ~ % curl -s http://www.netkiller.cn:8080/actuator/env |jq
{
  "activeProfiles": [
    "prod"
  ],
  "propertySources": [
    {
      "name": "server.ports",
      "properties": {
        "local.server.port": {
          "value": "******"
        }
      }
    },
    {
      "name": "commandLineArgs",
      "properties": {
        "logging.file.name": {
          "value": "******"
        },
        "server.port": {
          "value": "******"
        },
        "spring.profiles.active": {
          "value": "******"
        }
      }
    },
    {
      "name": "servletContextInitParams",
      "properties": {}
    },
    {
      "name": "systemProperties",
      "properties": {
        "java.specification.version": {
          "value": "******"
        },
        "sun.jnu.encoding": {
          "value": "******"
        },
        "java.class.path": {
          "value": "******"
        },
        "java.vm.vendor": {
          "value": "******"
        },
        "sun.arch.data.model": {
          "value": "******"
        },
        "java.vendor.url": {
          "value": "******"
        },
        "catalina.useNaming": {
          "value": "******"
        },
        "user.timezone": {
          "value": "******"
        },
        "org.jboss.logging.provider": {
          "value": "******"
        },
        "java.vm.specification.version": {
          "value": "******"
        },
        "os.name": {
          "value": "******"
        },
        "sun.java.launcher": {
          "value": "******"
        },
        "sun.boot.library.path": {
          "value": "******"
        },
        "sun.java.command": {
          "value": "******"
        },
        "jdk.debug": {
          "value": "******"
        },
        "sun.cpu.endian": {
          "value": "******"
        },
        "user.home": {
          "value": "******"
        },
        "user.language": {
          "value": "******"
        },
        "java.specification.vendor": {
          "value": "******"
        },
        "java.version.date": {
          "value": "******"
        },
        "java.home": {
          "value": "******"
        },
        "file.separator": {
          "value": "******"
        },
        "java.vm.compressedOopsMode": {
          "value": "******"
        },
        "line.separator": {
          "value": "******"
        },
        "java.specification.name": {
          "value": "******"
        },
        "java.vm.specification.vendor": {
          "value": "******"
        },
        "FILE_LOG_CHARSET": {
          "value": "******"
        },
        "java.awt.headless": {
          "value": "******"
        },
        "java.protocol.handler.pkgs": {
          "value": "******"
        },
        "sun.management.compiler": {
          "value": "******"
        },
        "java.runtime.version": {
          "value": "******"
        },
        "user.name": {
          "value": "******"
        },
        "stdout.encoding": {
          "value": "******"
        },
        "path.separator": {
          "value": "******"
        },
        "os.version": {
          "value": "******"
        },
        "java.runtime.name": {
          "value": "******"
        },
        "file.encoding": {
          "value": "******"
        },
        "java.vm.name": {
          "value": "******"
        },
        "LOG_FILE": {
          "value": "******"
        },
        "java.vendor.url.bug": {
          "value": "******"
        },
        "java.io.tmpdir": {
          "value": "******"
        },
        "catalina.home": {
          "value": "******"
        },
        "com.zaxxer.hikari.pool_number": {
          "value": "******"
        },
        "java.version": {
          "value": "******"
        },
        "user.dir": {
          "value": "******"
        },
        "os.arch": {
          "value": "******"
        },
        "java.vm.specification.name": {
          "value": "******"
        },
        "PID": {
          "value": "******"
        },
        "CONSOLE_LOG_CHARSET": {
          "value": "******"
        },
        "catalina.base": {
          "value": "******"
        },
        "native.encoding": {
          "value": "******"
        },
        "java.library.path": {
          "value": "******"
        },
        "stderr.encoding": {
          "value": "******"
        },
        "java.vm.info": {
          "value": "******"
        },
        "java.vendor": {
          "value": "******"
        },
        "java.vm.version": {
          "value": "******"
        },
        "sun.io.unicode.encoding": {
          "value": "******"
        },
        "java.class.version": {
          "value": "******"
        },
        "LOGGED_APPLICATION_NAME": {
          "value": "******"
        }
      }
    },
    {
      "name": "systemEnvironment",
      "properties": {
        "HOME": {
          "value": "******",
          "origin": "System Environment Property \"HOME\""
        },
        "PATH": {
          "value": "******",
          "origin": "System Environment Property \"PATH\""
        },
        "JAVA_VERSION": {
          "value": "******",
          "origin": "System Environment Property \"JAVA_VERSION\""
        },
        "JAVA_HOME": {
          "value": "******",
          "origin": "System Environment Property \"JAVA_HOME\""
        },
        "TZ": {
          "value": "******",
          "origin": "System Environment Property \"TZ\""
        },
        "JAVA_OPTS": {
          "value": "******",
          "origin": "System Environment Property \"JAVA_OPTS\""
        },
        "LANG": {
          "value": "******",
          "origin": "System Environment Property \"LANG\""
        },
        "HOSTNAME": {
          "value": "******",
          "origin": "System Environment Property \"HOSTNAME\""
        }
      }
    },
    {
      "name": "Config resource 'class path resource [application-prod.properties]' via location 'optional:classpath:/'",
      "properties": {
        "spring.application.name": {
          "value": "******",
          "origin": "class path resource [application-prod.properties] from watch-1.0-SNAPSHOT.jar - 1:25"
        },
        "spring.datasource.driver-class-name": {
          "value": "******",
          "origin": "class path resource [application-prod.properties] from watch-1.0-SNAPSHOT.jar - 3:37"
        },
        "spring.datasource.url": {
          "value": "******",
          "origin": "class path resource [application-prod.properties] from watch-1.0-SNAPSHOT.jar - 4:23"
        },
        "spring.datasource.username": {
          "value": "******",
          "origin": "class path resource [application-prod.properties] from watch-1.0-SNAPSHOT.jar - 5:28"
        },
        "spring.datasource.password": {
          "value": "******",
          "origin": "class path resource [application-prod.properties] from watch-1.0-SNAPSHOT.jar - 6:28"
        },
        "spring.data.redis.host": {
          "value": "******",
          "origin": "class path resource [application-prod.properties] from watch-1.0-SNAPSHOT.jar - 8:24"
        },
        "spring.data.redis.port": {
          "value": "******",
          "origin": "class path resource [application-prod.properties] from watch-1.0-SNAPSHOT.jar - 9:24"
        },
        "spring.data.redis.password": {
          "value": "******",
          "origin": "class path resource [application-prod.properties] from watch-1.0-SNAPSHOT.jar - 10:28"
        },
        "spring.data.redis.database": {
          "value": "******",
          "origin": "class path resource [application-prod.properties] from watch-1.0-SNAPSHOT.jar - 11:28"
        },
        "spring.data.redis.timeout": {
          "value": "******",
          "origin": "class path resource [application-prod.properties] from watch-1.0-SNAPSHOT.jar - 12:27"
        },
        "aliyun.oss.access_key_id": {
          "value": "******",
          "origin": "class path resource [application-prod.properties] from watch-1.0-SNAPSHOT.jar - 14:26"
        },
        "aliyun.oss.secret_access_key": {
          "value": "******",
          "origin": "class path resource [application-prod.properties] from watch-1.0-SNAPSHOT.jar - 15:30"
        },
        "aliyun.oss.endpoint": {
          "value": "******",
          "origin": "class path resource [application-prod.properties] from watch-1.0-SNAPSHOT.jar - 16:21"
        },
        "aliyun.oss.bucket_name": {
          "value": "******",
          "origin": "class path resource [application-prod.properties] from watch-1.0-SNAPSHOT.jar - 17:24"
        },
        "aliyun.oss.callback_url": {
          "value": "******",
          "origin": "class path resource [application-prod.properties] from watch-1.0-SNAPSHOT.jar - 18:25"
        },
        "mqtt.broker": {
          "value": "******",
          "origin": "class path resource [application-prod.properties] from watch-1.0-SNAPSHOT.jar - 20:13"
        },
        "mqtt.username": {
          "value": "******",
          "origin": "class path resource [application-prod.properties] from watch-1.0-SNAPSHOT.jar - 21:15"
        },
        "mqtt.password": {
          "value": "******",
          "origin": "class path resource [application-prod.properties] from watch-1.0-SNAPSHOT.jar - 22:15"
        },
        "mqtt.topic.prefix": {
          "value": "******",
          "origin": "class path resource [application-prod.properties] from watch-1.0-SNAPSHOT.jar - 23:19"
        },
        "baidu.url": {
          "value": "******",
          "origin": "class path resource [application-prod.properties] from watch-1.0-SNAPSHOT.jar - 25:11"
        },
        "baidu.appid": {
          "value": "******",
          "origin": "class path resource [application-prod.properties] from watch-1.0-SNAPSHOT.jar - 26:13"
        },
        "baidu.apikey": {
          "value": "******",
          "origin": "class path resource [application-prod.properties] from watch-1.0-SNAPSHOT.jar - 27:14"
        },
        "baidu.secretkey": {
          "value": "******",
          "origin": "class path resource [application-prod.properties] from watch-1.0-SNAPSHOT.jar - 28:17"
        },
        "baidu.appsecret": {
          "value": "******",
          "origin": "class path resource [application-prod.properties] from watch-1.0-SNAPSHOT.jar - 29:17"
        },
        "baidu.censor.appid": {
          "value": "******",
          "origin": "class path resource [application-prod.properties] from watch-1.0-SNAPSHOT.jar - 30:20"
        },
        "baidu.censor.appsecret": {
          "value": "******",
          "origin": "class path resource [application-prod.properties] from watch-1.0-SNAPSHOT.jar - 31:24"
        },
        "xfyun.appid": {
          "value": "******",
          "origin": "class path resource [application-prod.properties] from watch-1.0-SNAPSHOT.jar - 33:13"
        },
        "xfyun.stt.apikey": {
          "value": "******",
          "origin": "class path resource [application-prod.properties] from watch-1.0-SNAPSHOT.jar - 34:18"
        },
        "xfyun.stt.length": {
          "value": "******",
          "origin": "class path resource [application-prod.properties] from watch-1.0-SNAPSHOT.jar - 35:18"
        },
        "xfyun.tts.apikey": {
          "value": "******",
          "origin": "class path resource [application-prod.properties] from watch-1.0-SNAPSHOT.jar - 36:18"
        },
        "xfyun.tts.apisecret": {
          "value": "******",
          "origin": "class path resource [application-prod.properties] from watch-1.0-SNAPSHOT.jar - 37:21"
        },
        "xfyun.tts.vcn": {
          "value": "******",
          "origin": "class path resource [application-prod.properties] from watch-1.0-SNAPSHOT.jar - 42:15"
        },
        "xfyun.tts.pitch": {
          "value": "******",
          "origin": "class path resource [application-prod.properties] from watch-1.0-SNAPSHOT.jar - 43:17"
        },
        "xfyun.tts.speed": {
          "value": "******",
          "origin": "class path resource [application-prod.properties] from watch-1.0-SNAPSHOT.jar - 44:17"
        }
      }
    },
    {
      "name": "Config resource 'class path resource [application.properties]' via location 'optional:classpath:/'",
      "properties": {
        "spring.application.name": {
          "value": "******",
          "origin": "class path resource [application.properties] from watch-1.0-SNAPSHOT.jar - 2:25"
        },
        "spring.profiles.active": {
          "value": "******",
          "origin": "class path resource [application.properties] from watch-1.0-SNAPSHOT.jar - 3:24"
        },
        "server.port": {
          "value": "******",
          "origin": "class path resource [application.properties] from watch-1.0-SNAPSHOT.jar - 10:13"
        },
        "spring.servlet.multipart.max-request-size": {
          "value": "******",
          "origin": "class path resource [application.properties] from watch-1.0-SNAPSHOT.jar - 11:43"
        },
        "spring.servlet.multipart.max-file-size": {
          "value": "******",
          "origin": "class path resource [application.properties] from watch-1.0-SNAPSHOT.jar - 12:40"
        },
        "server.tomcat.max-connections": {
          "value": "******",
          "origin": "class path resource [application.properties] from watch-1.0-SNAPSHOT.jar - 13:31"
        },
        "server.tomcat.max-threads": {
          "value": "******",
          "origin": "class path resource [application.properties] from watch-1.0-SNAPSHOT.jar - 14:27"
        },
        "server.tomcat.accept-count": {
          "value": "******",
          "origin": "class path resource [application.properties] from watch-1.0-SNAPSHOT.jar - 15:28"
        },
        "server.tomcat.min-spare-threads": {
          "value": "******",
          "origin": "class path resource [application.properties] from watch-1.0-SNAPSHOT.jar - 16:33"
        },
        "endpoints.metrics.enabled": {
          "value": "******",
          "origin": "class path resource [application.properties] from watch-1.0-SNAPSHOT.jar - 18:27"
        },
        "management.endpoints.jmx.exposure.include": {
          "value": "******",
          "origin": "class path resource [application.properties] from watch-1.0-SNAPSHOT.jar - 19:43"
        },
        "management.endpoints.web.exposure.include": {
          "value": "******",
          "origin": "class path resource [application.properties] from watch-1.0-SNAPSHOT.jar - 20:43"
        },
        "management.endpoints.health.show-details": {
          "value": "******",
          "origin": "class path resource [application.properties] from watch-1.0-SNAPSHOT.jar - 21:42"
        },
        "spring.task.execution.pool.core-size": {
          "value": "******",
          "origin": "class path resource [application.properties] from watch-1.0-SNAPSHOT.jar - 23:38"
        },
        "spring.task.execution.pool.max-size": {
          "value": "******",
          "origin": "class path resource [application.properties] from watch-1.0-SNAPSHOT.jar - 24:37"
        },
        "spring.task.execution.pool.queue-capacity": {
          "value": "******",
          "origin": "class path resource [application.properties] from watch-1.0-SNAPSHOT.jar - 25:43"
        },
        "spring.task.execution.pool.keep-alive": {
          "value": "******",
          "origin": "class path resource [application.properties] from watch-1.0-SNAPSHOT.jar - 26:39"
        },
        "spring.task.execution.pool.allow-core-thread-timeout": {
          "value": "******",
          "origin": "class path resource [application.properties] from watch-1.0-SNAPSHOT.jar - 27:54"
        },
        "spring.task.execution.shutdown.await-termination": {
          "value": "******",
          "origin": "class path resource [application.properties] from watch-1.0-SNAPSHOT.jar - 28:50"
        },
        "spring.task.execution.shutdown.await-termination-period": {
          "value": "******",
          "origin": "class path resource [application.properties] from watch-1.0-SNAPSHOT.jar - 29:57"
        },
        "spring.task.execution.thread-name-prefix": {
          "value": "******",
          "origin": "class path resource [application.properties] from watch-1.0-SNAPSHOT.jar - 30:42"
        },
        "knife4j.enable": {
          "value": "******",
          "origin": "class path resource [application.properties] from watch-1.0-SNAPSHOT.jar - 32:16"
        },
        "knife4j.setting.language": {
          "value": "******",
          "origin": "class path resource [application.properties] from watch-1.0-SNAPSHOT.jar - 33:26"
        },
        "springdoc.swagger-ui.path": {
          "value": "******",
          "origin": "class path resource [application.properties] from watch-1.0-SNAPSHOT.jar - 35:27"
        },
        "springdoc.swagger-ui.tags-sorter": {
          "value": "******",
          "origin": "class path resource [application.properties] from watch-1.0-SNAPSHOT.jar - 36:34"
        },
        "springdoc.swagger-ui.operations-sorter": {
          "value": "******",
          "origin": "class path resource [application.properties] from watch-1.0-SNAPSHOT.jar - 37:40"
        },
        "springdoc.api-docs.path": {
          "value": "******",
          "origin": "class path resource [application.properties] from watch-1.0-SNAPSHOT.jar - 38:25"
        },
        "spring.jpa.open-in-view": {
          "value": "******",
          "origin": "class path resource [application.properties] from watch-1.0-SNAPSHOT.jar - 41:25"
        },
        "spring.jpa.hibernate.ddl-auto": {
          "value": "******",
          "origin": "class path resource [application.properties] from watch-1.0-SNAPSHOT.jar - 43:31"
        },
        "spring.datasource.driver-class-name": {
          "value": "******",
          "origin": "class path resource [application.properties] from watch-1.0-SNAPSHOT.jar - 45:37"
        },
        "spring.datasource.hikari.minimum-idle": {
          "value": "******",
          "origin": "class path resource [application.properties] from watch-1.0-SNAPSHOT.jar - 48:39"
        },
        "spring.datasource.hikari.maximum-pool-size": {
          "value": "******",
          "origin": "class path resource [application.properties] from watch-1.0-SNAPSHOT.jar - 49:44"
        },
        "spring.datasource.hikari.auto-commit": {
          "value": "******",
          "origin": "class path resource [application.properties] from watch-1.0-SNAPSHOT.jar - 50:38"
        },
        "spring.datasource.hikari.idle-timeout": {
          "value": "******",
          "origin": "class path resource [application.properties] from watch-1.0-SNAPSHOT.jar - 51:39"
        },
        "spring.datasource.hikari.max-lifetime": {
          "value": "******",
          "origin": "class path resource [application.properties] from watch-1.0-SNAPSHOT.jar - 52:39"
        },
        "spring.datasource.hikari.connection-timeout": {
          "value": "******",
          "origin": "class path resource [application.properties] from watch-1.0-SNAPSHOT.jar - 53:45"
        },
        "spring.datasource.hikari.connection-test-query": {
          "value": "******",
          "origin": "class path resource [application.properties] from watch-1.0-SNAPSHOT.jar - 54:48"
        },
        "spring.data.redis.lettuce.pool.max-active": {
          "value": "******",
          "origin": "class path resource [application.properties] from watch-1.0-SNAPSHOT.jar - 56:43"
        },
        "spring.data.redis.lettuce.pool.max-wait": {
          "value": "******",
          "origin": "class path resource [application.properties] from watch-1.0-SNAPSHOT.jar - 57:41"
        },
        "spring.data.redis.lettuce.pool.max-idle": {
          "value": "******",
          "origin": "class path resource [application.properties] from watch-1.0-SNAPSHOT.jar - 58:41"
        },
        "spring.data.redis.lettuce.pool.min-idle": {
          "value": "******",
          "origin": "class path resource [application.properties] from watch-1.0-SNAPSHOT.jar - 59:41"
        },
        "spring.cache.type": {
          "value": "******",
          "origin": "class path resource [application.properties] from watch-1.0-SNAPSHOT.jar - 60:19"
        },
        "spring.cache.redis.time-to-live": {
          "value": "******",
          "origin": "class path resource [application.properties] from watch-1.0-SNAPSHOT.jar - 61:33"
        },
        "spring.cache.redis.cache-null-values": {
          "value": "******",
          "origin": "class path resource [application.properties] from watch-1.0-SNAPSHOT.jar - 62:38"
        },
        "stablediffusion.url": {
          "value": "******",
          "origin": "class path resource [application.properties] from watch-1.0-SNAPSHOT.jar - 64:21"
        },
        "stablediffusion.negative_prompt": {
          "value": "******",
          "origin": "class path resource [application.properties] from watch-1.0-SNAPSHOT.jar - 66:0"
        },
        "stablediffusion.sampler_index": {
          "value": "******",
          "origin": "class path resource [application.properties] from watch-1.0-SNAPSHOT.jar - 66:31"
        },
        "stablediffusion.seed": {
          "value": "******",
          "origin": "class path resource [application.properties] from watch-1.0-SNAPSHOT.jar - 67:22"
        },
        "stablediffusion.steps": {
          "value": "******",
          "origin": "class path resource [application.properties] from watch-1.0-SNAPSHOT.jar - 68:23"
        },
        "stablediffusion.width": {
          "value": "******",
          "origin": "class path resource [application.properties] from watch-1.0-SNAPSHOT.jar - 69:23"
        },
        "stablediffusion.height": {
          "value": "******",
          "origin": "class path resource [application.properties] from watch-1.0-SNAPSHOT.jar - 70:24"
        },
        "stablediffusion.cfg_scale": {
          "value": "******",
          "origin": "class path resource [application.properties] from watch-1.0-SNAPSHOT.jar - 71:27"
        },
        "chatgpt.url": {
          "value": "******",
          "origin": "class path resource [application.properties] from watch-1.0-SNAPSHOT.jar - 73:13"
        },
        "chatgpt.username": {
          "value": "******",
          "origin": "class path resource [application.properties] from watch-1.0-SNAPSHOT.jar - 74:18"
        },
        "chatgpt.password": {
          "value": "******",
          "origin": "class path resource [application.properties] from watch-1.0-SNAPSHOT.jar - 75:18"
        }
      }
    }
  ]
}
	
		
		

logfile 日志

		
neo@MacBook-Pro-M2 ~ % curl -s http://www.netkiller.cn:8080/actuator/logfile | tail -n 5
2024-01-01T10:26:57.967+08:00  INFO 1 --- [watch-production] [http-nio-8080-exec-3] c.netkiller.service.SessionStatusService   : SessionStatus(id=15476, session=06c27cc8-dbc6-4386-bd69-e555fa3715cf, progress=5.创建会话, description=画一张猫, ctime=null)
2024-01-01T10:26:58.091+08:00  INFO 1 --- [watch-production] [http-nio-8080-exec-3] cn.netkiller.service.BaiduService          : {"refresh_token":"25.3fe5248bc2006526a59a10973eaa4320.315360000.2019436018.282335-45847061","expires_in":2592000,"session_key":"9mzdA5O3tx06PF7hFuzwL5FsbQDWq0LxF4mpdWWl5josf1ZE0IvZOXsrDS471dAz8F6aq7YbivAAZ7WsrliSyZ2Fwtr2iA==","access_token":"24.89b1691bb1d8e1437671365521b43a2d.2592000.1706668018.282335-45847061","scope":"public brain_all_scope brain_nlp_sentiment_classify brain_nlp_emotion solution_face brain_mt_texttrans wise_adapt lebo_resource_base lightservice_public hetu_basic lightcms_map_poi kaidian_kaidian ApsMisTest_Test\u6743\u9650 vis-classify_flower lpq_\u5f00\u653e cop_helloScope ApsMis_fangdi_permission smartapp_snsapi_base smartapp_mapp_dev_manage iop_autocar oauth_tp_app smartapp_smart_game_openapi oauth_sessionkey smartapp_swanid_verify smartapp_opensource_openapi smartapp_opensource_recapi fake_face_detect_\u5f00\u653eScope vis-ocr_\u865a\u62df\u4eba\u7269\u52a9\u7406 idl-video_\u865a\u62df\u4eba\u7269\u52a9\u7406 smartapp_component smartapp_search_plugin avatar_video_test b2b_tp_openapi b2b_tp_openapi_online smartapp_gov_aladin_to_xcx","session_secret":"0bca5fb59addf566eb2e9038afb09883"}

2024-01-01T10:26:58.468+08:00  INFO 1 --- [watch-production] [http-nio-8080-exec-3] cn.netkiller.service.BaiduService          : Translate: {"result":{"from":"zh","trans_result":[{"dst":"Draw a cat","src":"画一张猫"}],"to":"en"},"log_id":1741647171642597969}
2024-01-01T10:26:58.499+08:00  INFO 1 --- [watch-production] [http-nio-8080-exec-3] c.netkiller.service.SessionStatusService   : SessionStatus(id=15477, session=06c27cc8-dbc6-4386-bd69-e555fa3715cf, progress=6.翻译成功, description=Draw a cat, ctime=null)	
			
		
		
neo@MacBook-Pro-M2 ~ % curl -s http://www.netkiller.cn:8080/actuator/loggers/cn.netkiller.component
{"effectiveLevel":"INFO"}%   
		
neo@MacBook-Pro-M2 ~ % curl -s http://www.netkiller.cn:8080/actuator/loggers | tail -n 5
{"levels":["OFF","ERROR","WARN","INFO","DEBUG","TRACE"],"loggers":{"ROOT":{"configuredLevel":"INFO","effectiveLevel":"INFO"},"_org":{"effectiveLevel":"INFO"},"_org.springframework":{"effectiveLevel":"INFO"},"_org.springframework.web":{"effectiveLevel":"INFO"},"_org.springframework.web.servlet":{"effectiveLevel":"INFO"},"_org.springframework.web.servlet.HandlerMapping":{"effectiveLevel":"INFO"},"_org.springframework.web.servlet.HandlerMapping.Mappings":{"effectiveLevel":"INFO"},"cn":{"effectiveLevel":"INFO"},"cn.netkiller":{"effectiveLevel":"INFO"},"cn.netkiller.Application":{"effectiveLevel":"INFO"},"cn.netkiller.ai":{"effectiveLevel":"INFO"},"cn.netkiller.ai.xfyun":{"effectiveLevel":"INFO"},"cn.netkiller.ai.xfyun.SpeechRecognizerService":{"effectiveLevel":"INFO"},"cn.netkiller.ai.xfyun.SpeechSynthesizerService":{"effectiveLevel":"INFO"},"cn.netkiller.component":{"effectiveLevel":"INFO"},"cn.netkiller.component.AudioService":		
		
		

threaddump 线程信息

		
neo@MacBook-Pro-M2 ~ % curl -s http://www.netkiller.cn:8080/actuator/threaddump | jq | grep threadName
      "threadName": "Reference Handler",
      "threadName": "Finalizer",
      "threadName": "Signal Dispatcher",
      "threadName": "Notification Thread",
      "threadName": "Common-Cleaner",
      "threadName": "Cleaner-0",
      "threadName": "Catalina-utility-1",
      "threadName": "Catalina-utility-2",
      "threadName": "container-0",
      "threadName": "lettuce-timer-3-1",
      "threadName": "mysql-cj-abandoned-connection-cleanup",
      "threadName": "HikariPool-1 housekeeper",
      "threadName": "http-nio-8080-exec-1",
      "threadName": "http-nio-8080-exec-2",
      "threadName": "http-nio-8080-exec-3",
      "threadName": "http-nio-8080-exec-4",
      "threadName": "http-nio-8080-exec-5",
      "threadName": "http-nio-8080-exec-7",
      "threadName": "http-nio-8080-exec-8",
      "threadName": "http-nio-8080-exec-10",
      "threadName": "http-nio-8080-Poller",
      "threadName": "http-nio-8080-Acceptor",
      "threadName": "DestroyJavaVM",
      "threadName": "lettuce-epollEventLoop-4-1",
      "threadName": "lettuce-eventExecutorLoop-1-1",
      "threadName": "lettuce-eventExecutorLoop-1-2",
      "threadName": "lettuce-eventExecutorLoop-1-3",
      "threadName": "lettuce-eventExecutorLoop-1-4",
      "threadName": "task-11",
      "threadName": "task-12",
      "threadName": "task-13",
      "threadName": "task-14",
      "threadName": "task-15",
      "threadName": "task-16",
      "threadName": "task-17",
      "threadName": "task-18",
      "threadName": "task-19",
      "threadName": "task-20",
      "threadName": "MQTT Rec: netkiller-1704016635545",
      "threadName": "MQTT Snd: netkiller-1704016635545",
      "threadName": "MQTT Call: netkiller-1704016635545",
      "threadName": "MQTT Ping: netkiller-1704016635545",
      "threadName": "http-nio-8080-exec-14",
      "threadName": "http-nio-8080-exec-16",
      "threadName": "boundedElastic-evictor-1",
      "threadName": "lettuce-epollEventLoop-4-2",	
		
		

计划任务

		
http://www.netkiller.cn:8080/actuator/scheduledtasks		
		
		

metrics

		
neo@MacBook-Pro-Neo ~/w/Architect (master)> curl -s https://www.netkiller.cn/actuator/metrics/ | jq
{
  "names": [
    "jvm.threads.states",
    "process.files.max",
    "jvm.gc.memory.promoted",
    "hikaricp.connections.max",
    "hikaricp.connections.min",
    "jvm.memory.committed",
    "system.load.average.1m",
    "http.server.requests",
    "jvm.memory.used",
    "jvm.gc.max.data.size",
    "jdbc.connections.max",
    "jdbc.connections.min",
    "hikaricp.connections.usage",
    "jvm.gc.pause",
    "system.cpu.count",
    "hikaricp.connections.timeout",
    "tomcat.global.sent",
    "jvm.buffer.memory.used",
    "tomcat.sessions.created",
    "jvm.memory.max",
    "jvm.threads.daemon",
    "hikaricp.connections.acquire",
    "system.cpu.usage",
    "jvm.gc.memory.allocated",
    "tomcat.global.request.max",
    "tomcat.global.request",
    "tomcat.sessions.expired",
    "jvm.threads.live",
    "jvm.threads.peak",
    "tomcat.global.received",
    "process.uptime",
    "tomcat.sessions.rejected",
    "process.cpu.usage",
    "tomcat.threads.config.max",
    "jvm.classes.loaded",
    "jvm.classes.unloaded",
    "tomcat.global.error",
    "tomcat.sessions.active.current",
    "tomcat.sessions.alive.max",
    "jvm.gc.live.data.size",
    "log4j2.events",
    "hikaricp.connections.idle",
    "tomcat.threads.current",
    "hikaricp.connections.pending",
    "process.files.open",
    "jvm.buffer.count",
    "hikaricp.connections",
    "jvm.buffer.total.capacity",
    "tomcat.sessions.active.max",
    "hikaricp.connections.active",
    "hikaricp.connections.creation",
    "tomcat.threads.busy",
    "process.start.time"
  ]
}		
		
		
		
neo@MacBook-Pro-Neo ~/w/Architect (master)> curl -s https://www.netkiller.cn/actuator/metrics/tomcat.threads.config.max |jq
{
  "name": "tomcat.threads.config.max",
  "description": null,
  "baseUnit": "threads",
  "measurements": [
    {
      "statistic": "VALUE",
      "value": 4096
    }
  ],
  "availableTags": [
    {
      "tag": "name",
      "values": [
        "http-nio-8080"
      ]
    }
  ]
}
neo@MacBook-Pro-Neo ~/w/Architect (master)> curl -s https://www.netkiller.cn/actuator/metrics/tomcat.threads.current |jq
{
  "name": "tomcat.threads.current",
  "description": null,
  "baseUnit": "threads",
  "measurements": [
    {
      "statistic": "VALUE",
      "value": 24
    }
  ],
  "availableTags": [
    {
      "tag": "name",
      "values": [
        "http-nio-8080"
      ]
    }
  ]
}
		
		

控制器映射 URL

		
neo@MacBook-Pro-M2 ~ % curl -s http://www.netkiller.cn:8080/actuator/mappings |jq 		
		
		

自定义监控指标

		
package cn.netkiller.config;

import org.springframework.boot.actuate.endpoint.annotation.Endpoint;
import org.springframework.boot.actuate.endpoint.annotation.ReadOperation;
import org.springframework.context.annotation.Configuration;

import java.util.*;

@Configuration
@Endpoint(id = "netkiller")
public class TestEndpoint {
    @ReadOperation
    public Map<String, Object> threadPoolsMetric() {
        Map<String, Object> metricMap = new HashMap<>();
        List<Map> threadPools = new ArrayList<>();
        Map<String, Object> poolInfo = new HashMap<>();
        poolInfo.put("thread.pool.name", "netkiller");
        poolInfo.put("thread.pool.core.size", 100);
        poolInfo.put("thread.pool.time", new Date());
        threadPools.add(poolInfo);
        metricMap.put("netkiller", threadPools);
        return metricMap;
    }
}		
		
		

验证

		
neo@MacBook-Pro-M2 ~> curl -s http://www.netkiller.cn:8080/actuator/netkiller | jq
{
  "netkiller": [
    {
      "thread.pool.time": "2023-04-24T09:08:14.407+00:00",
      "thread.pool.core.size": 100,
      "thread.pool.name": "netkiller"
    }
  ]
}		
		
		
		
import org.springframework.boot.actuate.endpoint.annotation.DeleteOperation;
import org.springframework.boot.actuate.endpoint.annotation.Endpoint;
import org.springframework.boot.actuate.endpoint.annotation.ReadOperation;
import org.springframework.boot.actuate.endpoint.annotation.WriteOperation;
import org.springframework.stereotype.Component;

import java.util.HashMap;
import java.util.Map;

/**
 * 自定义Actuator端点:/actuator/custom
 * @Endpoint注解的id为custom,对应访问路径是/actuator/custom
 */
@Component
@Endpoint(id = "custom")
public class CustomActuatorEndpoint {

    // 模拟存储一些自定义数据
    private final Map<String, String> data = new HashMap<>();

    public CustomActuatorEndpoint() {
        // 初始化数据
        data.put("key1", "value1");
        data.put("key2", "value2");
    }

    /**
     * GET请求:访问/actuator/custom,获取自定义数据
     * @ReadOperation对应HTTP GET
     */
    @ReadOperation
    public Map<String, Object> getCustomInfo() {
        Map<String, Object> result = new HashMap<>();
        result.put("message", "这是自定义Actuator端点的信息");
        result.put("data", data);
        result.put("status", "success");
        return result;
    }

    /**
     * POST请求:访问/actuator/custom,传入key和value,添加数据
     * @WriteOperation对应HTTP POST
     */
    @WriteOperation
    public String addCustomData(String key, String value) {
        data.put(key, value);
        return "添加成功:" + key + "=" + value;
    }

    /**
     * DELETE请求:访问/actuator/custom,传入key,删除数据
     * @DeleteOperation对应HTTP DELETE
     */
    @DeleteOperation
    public String deleteCustomData(String key) {
        data.remove(key);
        return "删除成功:" + key;
    }
}