private void customizeComponents(OpenAPI openApi, Components componentsProperties) {
		Components components = openApi.getComponents();
		if (components == null || CollectionUtils.isEmpty(components.getSchemas())) {
			openApi.components(componentsProperties);
		}
		else {
			Map<String, Schema> schemaMap = components.getSchemas();
			schemaMap.forEach((key, schema) -> {
				if (!CollectionUtils.isEmpty(componentsProperties.getSchemas())) {
					Schema schemaProperties = componentsProperties.getSchemas().get(key);
					if (schemaProperties != null) {
						resolveString(schema::setDescription, schemaProperties::getDescription);
						Map<String, Schema> properties = schema.getProperties();
						if (CollectionUtils.isEmpty(properties)) {
							return;
						}
						properties.forEach((propKey, propSchema) -> {
							Schema propSchemaProperties = (Schema) schemaProperties.getProperties().get(propKey);
							if (propSchemaProperties != null) {
								resolveString(propSchema::description, propSchemaProperties::getDescription);
								resolveString(propSchema::title, propSchemaProperties::getTitle);
								resolveString(propSchema::example, propSchemaProperties::getExample);
							}
						});
					}
				}
			});
			Map<String, SecurityScheme> securitySchemeMap = components.getSecuritySchemes();
			if (CollectionUtils.isEmpty(securitySchemeMap)) {
				components.setSecuritySchemes(componentsProperties.getSecuritySchemes());
			}
			else {
				securitySchemeMap.forEach((key, securityScheme) -> {
					SecurityScheme securitySchemeToCustomize = components.getSecuritySchemes().get(key);
					if (securitySchemeToCustomize != null) {
						resolveString(securitySchemeToCustomize::description, securityScheme::getDescription);
						resolveString(securitySchemeToCustomize::name, securityScheme::getName);
						resolveType(securitySchemeToCustomize::type, securityScheme::getType);
						resolveIn(securitySchemeToCustomize::in, securityScheme::getIn);
						resolveString(securitySchemeToCustomize::scheme, securityScheme::getScheme);
						resolveString(securitySchemeToCustomize::bearerFormat, securityScheme::getBearerFormat);
						resolveString(securitySchemeToCustomize::openIdConnectUrl, securityScheme::getOpenIdConnectUrl);
						resolveOAuthFlows(securitySchemeToCustomize::flows, securityScheme::getFlows);
						resolveString(securitySchemeToCustomize::$ref, securityScheme::get$ref);
					}
				});
			}
		}
	}
Customize components.

@param openApi              the open api
@param componentsProperties the components properties
springdoc-openapi-starter-common/src/main/java/org/springdoc/core/customizers/SpecPropertiesCustomizer.java