diff --git a/modules/openapi-generator/src/main/java/org/openapitools/codegen/CodegenProperty.java b/modules/openapi-generator/src/main/java/org/openapitools/codegen/CodegenProperty.java
index cfc69072d11465b3fba6736fcb3f97cf1818510b..e5247a72bfe48e5785f483cc360a140eb3d60624 100644
--- a/modules/openapi-generator/src/main/java/org/openapitools/codegen/CodegenProperty.java
+++ b/modules/openapi-generator/src/main/java/org/openapitools/codegen/CodegenProperty.java
@@ -149,7 +149,15 @@ public class CodegenProperty implements Cloneable, IJsonSchemaValidationProperti
     public boolean isArray;
     public boolean isMap;
     public boolean isEnum;
-    public boolean isInnerEnum; // Enums declared inline will be located inside the generic model, changing how the enum is referenced in some cases.
+    /**
+     * Inner enums will be located inside the generic model, changing how the enum is referenced in some cases. Is used to mark inner enums in containers and maps.
+     */
+    public boolean isInnerEnum;
+    /**
+     * True => enums declared inline in OAS.
+     * False => enums referenced to the standalone enum component in schemas section.
+     */
+    public boolean isInlineEnum;
     public boolean isReadOnly;
     public boolean isWriteOnly;
     public boolean isNullable;
@@ -995,6 +1003,7 @@ public class CodegenProperty implements Cloneable, IJsonSchemaValidationProperti
         sb.append(", isMap=").append(isMap);
         sb.append(", isEnum=").append(isEnum);
         sb.append(", isInnerEnum=").append(isInnerEnum);
+        sb.append(", isInlineEnum=").append(isInlineEnum);
         sb.append(", isAnyType=").append(isAnyType);
         sb.append(", isReadOnly=").append(isReadOnly);
         sb.append(", isWriteOnly=").append(isWriteOnly);
@@ -1081,6 +1090,7 @@ public class CodegenProperty implements Cloneable, IJsonSchemaValidationProperti
                 isMap == that.isMap &&
                 isEnum == that.isEnum &&
                 isInnerEnum == that.isInnerEnum &&
+                isInlineEnum == that.isInlineEnum &&
                 isAnyType == that.isAnyType &&
                 isReadOnly == that.isReadOnly &&
                 isWriteOnly == that.isWriteOnly &&
@@ -1161,7 +1171,7 @@ public class CodegenProperty implements Cloneable, IJsonSchemaValidationProperti
                 hasMoreNonReadOnly, isPrimitiveType, isModel, isContainer, isString, isNumeric,
                 isInteger, isLong, isNumber, isFloat, isDouble, isDecimal, isByteArray, isBinary, isFile,
                 isBoolean, isDate, isDateTime, isUuid, isUri, isEmail, isFreeFormObject,
-                isArray, isMap, isEnum, isInnerEnum, isAnyType, isReadOnly, isWriteOnly, isNullable, isShort,
+                isArray, isMap, isEnum, isInnerEnum, isInlineEnum, isAnyType, isReadOnly, isWriteOnly, isNullable, isShort,
                 isUnboundedInteger, isSelfReference, isCircularReference, isDiscriminator, _enum,
                 allowableValues, items, mostInnerItems, additionalProperties, vars, requiredVars,
                 vendorExtensions, hasValidation, isInherited, discriminatorValue, nameInCamelCase,
diff --git a/modules/openapi-generator/src/main/java/org/openapitools/codegen/DefaultCodegen.java b/modules/openapi-generator/src/main/java/org/openapitools/codegen/DefaultCodegen.java
index e49231b10f46f993df6a1bd6089ddd3c17d5aef0..72e4730eef048f22224065a6904060c8085c8018 100644
--- a/modules/openapi-generator/src/main/java/org/openapitools/codegen/DefaultCodegen.java
+++ b/modules/openapi-generator/src/main/java/org/openapitools/codegen/DefaultCodegen.java
@@ -3714,7 +3714,7 @@ public class DefaultCodegen implements CodegenConfig {
             }
         }
 
-        //Inline enum case:
+        // Inline enum case:
         if (p.getEnum() != null && !p.getEnum().isEmpty()) {
             List<Object> _enum = p.getEnum();
             property._enum = new ArrayList<>();
@@ -3723,25 +3723,24 @@ public class DefaultCodegen implements CodegenConfig {
             }
             property.isEnum = true;
             property.isInnerEnum = true;
+            property.isInlineEnum = true;
 
             Map<String, Object> allowableValues = new HashMap<>();
             allowableValues.put("values", _enum);
-            if (allowableValues.size() > 0) {
-                property.allowableValues = allowableValues;
-            }
+            property.allowableValues = allowableValues;
         }
 
         Schema referencedSchema = ModelUtils.getReferencedSchema(this.openAPI, p);
 
-        //Referenced enum case:
+        // Referenced enum case:
         if (referencedSchema.getEnum() != null && !referencedSchema.getEnum().isEmpty()) {
             List<Object> _enum = referencedSchema.getEnum();
 
+            property.isEnum = true;
+
             Map<String, Object> allowableValues = new HashMap<>();
             allowableValues.put("values", _enum);
-            if (allowableValues.size() > 0) {
-                property.allowableValues = allowableValues;
-            }
+            property.allowableValues = allowableValues;
         }
 
         if (referencedSchema.getNullable() != null) {
@@ -3872,6 +3871,7 @@ public class DefaultCodegen implements CodegenConfig {
             // or the inner type of an array/map is an enum
             property.isEnum = true;
             property.isInnerEnum = true;
+            property.isInlineEnum = isPropertyInnerMostEnumDefinedAsInline(property);
             // update datatypeWithEnum and default value for array
             // e.g. List<string> => List<StatusEnum>
             updateDataTypeWithEnumForArray(property);
@@ -3909,6 +3909,7 @@ public class DefaultCodegen implements CodegenConfig {
             // or the inner type of an array/map is an enum
             property.isEnum = true;
             property.isInnerEnum = true;
+            property.isInlineEnum = isPropertyInnerMostEnumDefinedAsInline(property);
             // update datatypeWithEnum and default value for map
             // e.g. Dictionary<string, string> => Dictionary<string, StatusEnum>
             updateDataTypeWithEnumForMap(property);
@@ -3930,6 +3931,18 @@ public class DefaultCodegen implements CodegenConfig {
         return currentProperty != null && currentProperty.isEnum;
     }
 
+    /**
+     * Is inner most enum defined as inline.
+     *
+     * @param property Codegen property
+     * @return True if the inner most type is enum and defined as enum
+     */
+    protected boolean isPropertyInnerMostEnumDefinedAsInline(CodegenProperty property) {
+        CodegenProperty currentProperty = getMostInnerItems(property);
+
+        return currentProperty != null && currentProperty.isEnum && currentProperty.isInlineEnum;
+    }
+
     protected CodegenProperty getMostInnerItems(CodegenProperty property) {
         CodegenProperty currentProperty = property;
         while (currentProperty != null && (Boolean.TRUE.equals(currentProperty.isMap)
diff --git a/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/KotlinSpringServerCodegen.java b/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/KotlinSpringServerCodegen.java
index a7d445eb3c81199be6424cfae94354d54b10b237..2c2812305277797a0ab3d363fa89a548b56707e7 100644
--- a/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/KotlinSpringServerCodegen.java
+++ b/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/KotlinSpringServerCodegen.java
@@ -677,14 +677,14 @@ public class KotlinSpringServerCodegen extends AbstractKotlinCodegen
             property.example = null;
         }
 
-        //Add imports for Jackson
+        // Add imports for Jackson
         if (!Boolean.TRUE.equals(model.isEnum)) {
             model.imports.add("JsonProperty");
-            if (Boolean.TRUE.equals(model.hasEnums)) {
+            if(hasInlineEnums(model)) {
                 model.imports.add("JsonValue");
             }
         } else {
-            //Needed imports for Jackson's JsonCreator
+            // Needed imports for Jackson's JsonCreator
             if (additionalProperties.containsKey("jackson")) {
                 model.imports.add("JsonCreator");
             }
@@ -695,11 +695,15 @@ public class KotlinSpringServerCodegen extends AbstractKotlinCodegen
         }
     }
 
+    private boolean hasInlineEnums(CodegenModel model) {
+        return Boolean.TRUE.equals(model.hasEnums) && model.vars.stream().anyMatch(property -> property.isInlineEnum);
+    }
+
     @Override
     public ModelsMap postProcessModelsEnum(ModelsMap objs) {
         objs = super.postProcessModelsEnum(objs);
 
-        //Add imports for Jackson
+        // Add imports for Jackson
         List<Map<String, String>> imports = objs.getImports();
 
         objs.getModels().stream()
diff --git a/modules/openapi-generator/src/main/resources/kotlin-spring/beanValidation.mustache b/modules/openapi-generator/src/main/resources/kotlin-spring/beanValidation.mustache
index ee25df4a96a94497b5ffdcd1f217bfd2f3d604b1..6da2127a1a00ff7d2f4c08e616e0f422f7011267 100644
--- a/modules/openapi-generator/src/main/resources/kotlin-spring/beanValidation.mustache
+++ b/modules/openapi-generator/src/main/resources/kotlin-spring/beanValidation.mustache
@@ -1,4 +1,4 @@
-{{#isContainer}}{{^isPrimitiveType}}{{^isEnum}}
-    @field:Valid{{/isEnum}}{{/isPrimitiveType}}{{/isContainer}}{{!
+{{#isContainer}}{{^isPrimitiveType}}{{^isInlineEnum}}
+    @field:Valid{{/isInlineEnum}}{{/isPrimitiveType}}{{/isContainer}}{{!
 }}{{^isContainer}}{{^isPrimitiveType}}{{^isNumber}}{{^isUuid}}{{^isDateTime}}
     @field:Valid{{/isDateTime}}{{/isUuid}}{{/isNumber}}{{/isPrimitiveType}}{{/isContainer}}
\ No newline at end of file
diff --git a/modules/openapi-generator/src/main/resources/kotlin-spring/dataClass.mustache b/modules/openapi-generator/src/main/resources/kotlin-spring/dataClass.mustache
index e56f233800c0c6e1942458cb36a90ef14ec61a37..419fbb5c9ce02b319dff12384d172a02e545da93 100644
--- a/modules/openapi-generator/src/main/resources/kotlin-spring/dataClass.mustache
+++ b/modules/openapi-generator/src/main/resources/kotlin-spring/dataClass.mustache
@@ -20,7 +20,7 @@
         {{>interfaceOptVar}}
     {{/optionalVars}}
 {{/discriminator}}
-{{#hasEnums}}{{#vars}}{{#isEnum}}
+{{#hasEnums}}{{#vars}}{{#isEnum}}{{#isInlineEnum}}
     /**
     * {{{description}}}
     * Values: {{#allowableValues}}{{#enumVars}}{{&name}}{{^-last}},{{/-last}}{{/enumVars}}{{/allowableValues}}
@@ -29,5 +29,5 @@
 {{#allowableValues}}{{#enumVars}}
         @JsonProperty({{{value}}}) {{{name}}}({{{value}}}){{^-last}},{{/-last}}{{/enumVars}}{{/allowableValues}}
     }
-{{/isEnum}}{{/vars}}{{/hasEnums}}
+{{!isInlineEnum}}{{/isInlineEnum}}{{/isEnum}}{{/vars}}{{/hasEnums}}
 }
diff --git a/modules/openapi-generator/src/main/resources/kotlin-spring/dataClassOptVar.mustache b/modules/openapi-generator/src/main/resources/kotlin-spring/dataClassOptVar.mustache
index 1e5a00489aaa295fde0c1d111926b21fec2b93f4..73e06585e38cbdfc2a2372f8fa23cc97ec3e544a 100644
--- a/modules/openapi-generator/src/main/resources/kotlin-spring/dataClassOptVar.mustache
+++ b/modules/openapi-generator/src/main/resources/kotlin-spring/dataClassOptVar.mustache
@@ -2,4 +2,4 @@
     @Schema({{#example}}example = "{{#lambdaRemoveLineBreak}}{{#lambdaEscapeDoubleQuote}}{{{.}}}{{/lambdaEscapeDoubleQuote}}{{/lambdaRemoveLineBreak}}", {{/example}}{{#isReadOnly}}readOnly = {{{isReadOnly}}}, {{/isReadOnly}}description = "{{{description}}}"){{/swagger2AnnotationLibrary}}{{#swagger1AnnotationLibrary}}
     @ApiModelProperty({{#example}}example = "{{#lambdaRemoveLineBreak}}{{#lambdaEscapeDoubleQuote}}{{{.}}}{{/lambdaEscapeDoubleQuote}}{{/lambdaRemoveLineBreak}}", {{/example}}{{#isReadOnly}}readOnly = {{{isReadOnly}}}, {{/isReadOnly}}value = "{{{description}}}"){{/swagger1AnnotationLibrary}}{{#deprecated}}
     @Deprecated(message = ""){{/deprecated}}
-    @field:JsonProperty("{{{baseName}}}"){{#isInherited}} override{{/isInherited}} {{>modelMutable}} {{{name}}}: {{#isEnum}}{{#isArray}}{{baseType}}<{{/isArray}}{{classname}}.{{{nameInCamelCase}}}{{#isArray}}>{{/isArray}}{{/isEnum}}{{^isEnum}}{{{dataType}}}{{/isEnum}}? = {{{defaultValue}}}{{^defaultValue}}null{{/defaultValue}}
\ No newline at end of file
+    @field:JsonProperty("{{{baseName}}}"){{#isInherited}} override{{/isInherited}} {{>modelMutable}} {{{name}}}: {{#isEnum}}{{#isInlineEnum}}{{#isArray}}{{baseType}}<{{/isArray}}{{classname}}.{{{nameInCamelCase}}}{{#isArray}}>{{/isArray}}{{/isInlineEnum}}{{/isEnum}}{{#isEnum}}{{^isInlineEnum}}{{{dataType}}}{{/isInlineEnum}}{{/isEnum}}{{^isEnum}}{{{dataType}}}{{/isEnum}}? = {{{defaultValue}}}{{^defaultValue}}null{{/defaultValue}}
\ No newline at end of file
diff --git a/modules/openapi-generator/src/test/java/org/openapitools/codegen/DefaultCodegenTest.java b/modules/openapi-generator/src/test/java/org/openapitools/codegen/DefaultCodegenTest.java
index ef0b59a12bc02117df83a126ef6cc10f3e18b9e3..c587a33e59d9929ac37c8106befc35b54705d666 100644
--- a/modules/openapi-generator/src/test/java/org/openapitools/codegen/DefaultCodegenTest.java
+++ b/modules/openapi-generator/src/test/java/org/openapitools/codegen/DefaultCodegenTest.java
@@ -56,6 +56,8 @@ import java.util.stream.Collectors;
 
 import static org.testng.Assert.*;
 
+import static org.assertj.core.api.Assertions.assertThat;
+
 
 public class DefaultCodegenTest {
 
@@ -4245,4 +4247,144 @@ public class DefaultCodegenTest {
         Assert.assertEquals(fooOptional.vars.get(0).name, "foo");
         Assert.assertEquals(fooOptional.requiredVars.size(), 0);
     }
+
+    @Test
+    public void testReferencedEnumType() {
+        final OpenAPI openAPI = TestUtils.parseFlattenSpec("src/test/resources/3_0/issue-5676-enums.yaml");
+        final DefaultCodegen codegen = new DefaultCodegen();
+        codegen.setOpenAPI(openAPI);
+        String modelName = "fakeRequestObjectWithReferencedEnum_request";
+
+        Schema schemaWithReferencedEnum = openAPI.getComponents().getSchemas().get(modelName);
+        CodegenModel modelWithReferencedSchema = codegen.fromModel(modelName, schemaWithReferencedEnum);
+        CodegenProperty referencedEnumSchemaProperty = modelWithReferencedSchema.vars.get(1);
+
+        assertThat(schemaWithReferencedEnum).isNotNull();
+        assertThat(modelWithReferencedSchema.hasEnums).isTrue();
+        assertThat(referencedEnumSchemaProperty.getName()).isEqualTo("enumType");
+        assertThat(referencedEnumSchemaProperty.isEnum).isTrue();
+        assertThat(referencedEnumSchemaProperty.isInnerEnum).isFalse();
+        assertThat(referencedEnumSchemaProperty.isInlineEnum).isFalse();
+        assertThat(referencedEnumSchemaProperty.isString).isFalse();
+        assertThat(referencedEnumSchemaProperty.isContainer).isFalse();
+        assertThat(referencedEnumSchemaProperty.isPrimitiveType).isFalse();
+    }
+
+    @Test
+    public void testInlineEnumType() {
+        final OpenAPI openAPI = TestUtils.parseFlattenSpec("src/test/resources/3_0/issue-5676-enums.yaml");
+        final DefaultCodegen codegen = new DefaultCodegen();
+        codegen.setOpenAPI(openAPI);
+        String modelName = "fakeRequestObjectWithInlineEnum_request";
+
+        Schema schemaWithReferencedEnum = openAPI.getComponents().getSchemas().get(modelName);
+        CodegenModel modelWithReferencedSchema = codegen.fromModel(modelName, schemaWithReferencedEnum);
+        CodegenProperty inlineEnumSchemaProperty = modelWithReferencedSchema.vars.get(1);
+
+        assertThat(schemaWithReferencedEnum).isNotNull();
+        assertThat(modelWithReferencedSchema.hasEnums).isTrue();
+        assertThat(inlineEnumSchemaProperty.getName()).isEqualTo("enumType");
+        assertThat(inlineEnumSchemaProperty.isEnum).isTrue();
+        assertThat(inlineEnumSchemaProperty.isInnerEnum).isTrue();
+        assertThat(inlineEnumSchemaProperty.isInlineEnum).isTrue();
+        assertThat(inlineEnumSchemaProperty.isString).isTrue();
+        assertThat(inlineEnumSchemaProperty.isContainer).isFalse();
+        assertThat(inlineEnumSchemaProperty.isPrimitiveType).isFalse();
+    }
+
+    @Test
+    public void testArrayOfInlineEnumType() {
+        final OpenAPI openAPI = TestUtils.parseFlattenSpec("src/test/resources/3_0/issue-5676-enums.yaml");
+        final DefaultCodegen codegen = new DefaultCodegen();
+        codegen.setOpenAPI(openAPI);
+        String modelName = "fakeRequestArrayWithInlineEnum_request";
+
+        Schema schemaWithReferencedEnum = openAPI.getComponents().getSchemas().get(modelName);
+        CodegenModel modelWithReferencedSchema = codegen.fromModel(modelName, schemaWithReferencedEnum);
+        CodegenProperty arrayInlineEnumSchemaProperty = modelWithReferencedSchema.vars.get(1);
+
+        assertThat(schemaWithReferencedEnum).isNotNull();
+        assertThat(modelWithReferencedSchema.hasEnums).isTrue();
+        assertThat(arrayInlineEnumSchemaProperty.getName()).isEqualTo("enumTypes");
+        assertThat(arrayInlineEnumSchemaProperty.isEnum).isTrue();
+        assertThat(arrayInlineEnumSchemaProperty.isInnerEnum).isTrue();
+        assertThat(arrayInlineEnumSchemaProperty.isInlineEnum).isTrue();
+        assertThat(arrayInlineEnumSchemaProperty.isString).isFalse();
+        assertThat(arrayInlineEnumSchemaProperty.isContainer).isTrue();
+        assertThat(arrayInlineEnumSchemaProperty.isArray).isTrue();
+        assertThat(arrayInlineEnumSchemaProperty.isMap).isFalse();
+        assertThat(arrayInlineEnumSchemaProperty.isPrimitiveType).isFalse();
+    }
+
+    @Test
+    public void testArrayOfReferencedEnumType() {
+        final OpenAPI openAPI = TestUtils.parseFlattenSpec("src/test/resources/3_0/issue-5676-enums.yaml");
+        final DefaultCodegen codegen = new DefaultCodegen();
+        codegen.setOpenAPI(openAPI);
+        String modelName = "fakeRequestArrayWithReferencedEnum_request";
+
+        Schema schemaWithReferencedEnum = openAPI.getComponents().getSchemas().get(modelName);
+        CodegenModel modelWithReferencedSchema = codegen.fromModel(modelName, schemaWithReferencedEnum);
+        CodegenProperty arrayReferencedEnumSchemaProperty = modelWithReferencedSchema.vars.get(1);
+
+        assertThat(schemaWithReferencedEnum).isNotNull();
+        assertThat(modelWithReferencedSchema.hasEnums).isTrue();
+        assertThat(arrayReferencedEnumSchemaProperty.getName()).isEqualTo("enumTypes");
+        assertThat(arrayReferencedEnumSchemaProperty.isEnum).isTrue();
+        assertThat(arrayReferencedEnumSchemaProperty.isInnerEnum).isTrue();
+        assertThat(arrayReferencedEnumSchemaProperty.isInlineEnum).isFalse();
+        assertThat(arrayReferencedEnumSchemaProperty.isString).isFalse();
+        assertThat(arrayReferencedEnumSchemaProperty.isContainer).isTrue();
+        assertThat(arrayReferencedEnumSchemaProperty.isArray).isTrue();
+        assertThat(arrayReferencedEnumSchemaProperty.isMap).isFalse();
+        assertThat(arrayReferencedEnumSchemaProperty.isPrimitiveType).isFalse();
+    }
+
+    @Test
+    public void testMapOfInlineEnumType() {
+        final OpenAPI openAPI = TestUtils.parseFlattenSpec("src/test/resources/3_0/issue-5676-enums.yaml");
+        final DefaultCodegen codegen = new DefaultCodegen();
+        codegen.setOpenAPI(openAPI);
+        String modelName = "fakeRequestMapWithInlineEnum_request";
+
+        Schema schemaWithReferencedEnum = openAPI.getComponents().getSchemas().get(modelName);
+        CodegenModel modelWithReferencedSchema = codegen.fromModel(modelName, schemaWithReferencedEnum);
+        CodegenProperty mapInlineEnumSchemaProperty = modelWithReferencedSchema.vars.get(1);
+
+        assertThat(schemaWithReferencedEnum).isNotNull();
+        assertThat(modelWithReferencedSchema.hasEnums).isTrue();
+        assertThat(mapInlineEnumSchemaProperty.getName()).isEqualTo("enumTypes");
+        assertThat(mapInlineEnumSchemaProperty.isEnum).isTrue();
+        assertThat(mapInlineEnumSchemaProperty.isInnerEnum).isTrue();
+        assertThat(mapInlineEnumSchemaProperty.isInlineEnum).isTrue();
+        assertThat(mapInlineEnumSchemaProperty.isString).isFalse();
+        assertThat(mapInlineEnumSchemaProperty.isContainer).isTrue();
+        assertThat(mapInlineEnumSchemaProperty.isArray).isFalse();
+        assertThat(mapInlineEnumSchemaProperty.isMap).isTrue();
+        assertThat(mapInlineEnumSchemaProperty.isPrimitiveType).isFalse();
+    }
+
+    @Test
+    public void testMapOfReferencedEnumType() {
+        final OpenAPI openAPI = TestUtils.parseFlattenSpec("src/test/resources/3_0/issue-5676-enums.yaml");
+        final DefaultCodegen codegen = new DefaultCodegen();
+        codegen.setOpenAPI(openAPI);
+        String modelName = "fakeRequestMapWithReferencedEnum_request";
+
+        Schema schemaWithReferencedEnum = openAPI.getComponents().getSchemas().get(modelName);
+        CodegenModel modelWithReferencedSchema = codegen.fromModel(modelName, schemaWithReferencedEnum);
+        CodegenProperty mapInlineEnumSchemaProperty = modelWithReferencedSchema.vars.get(1);
+
+        assertThat(schemaWithReferencedEnum).isNotNull();
+        assertThat(modelWithReferencedSchema.hasEnums).isTrue();
+        assertThat(mapInlineEnumSchemaProperty.getName()).isEqualTo("enumTypes");
+        assertThat(mapInlineEnumSchemaProperty.isEnum).isTrue();
+        assertThat(mapInlineEnumSchemaProperty.isInnerEnum).isTrue();
+        assertThat(mapInlineEnumSchemaProperty.isInlineEnum).isFalse();
+        assertThat(mapInlineEnumSchemaProperty.isString).isFalse();
+        assertThat(mapInlineEnumSchemaProperty.isContainer).isTrue();
+        assertThat(mapInlineEnumSchemaProperty.isArray).isFalse();
+        assertThat(mapInlineEnumSchemaProperty.isMap).isTrue();
+        assertThat(mapInlineEnumSchemaProperty.isPrimitiveType).isFalse();
+    }
 }
diff --git a/modules/openapi-generator/src/test/java/org/openapitools/codegen/java/spring/SpringCodegenTest.java b/modules/openapi-generator/src/test/java/org/openapitools/codegen/java/spring/SpringCodegenTest.java
index ac058ecd2ba8a76d465e81bdba8b79550e2f99af..934c8aca632658bdaa04976ceb1a8901fc5e6629 100644
--- a/modules/openapi-generator/src/test/java/org/openapitools/codegen/java/spring/SpringCodegenTest.java
+++ b/modules/openapi-generator/src/test/java/org/openapitools/codegen/java/spring/SpringCodegenTest.java
@@ -312,7 +312,7 @@ public class SpringCodegenTest {
         codegen.processOpts();
 
         // jdk8 tag has been removed
-        Assert.assertEquals(codegen.additionalProperties().get("jdk8"), null);
+        Assert.assertNull(codegen.additionalProperties().get("jdk8"));
     }
 
     @Test(expectedExceptions = IllegalArgumentException.class)
@@ -435,7 +435,7 @@ public class SpringCodegenTest {
         codegen.preprocessOpenAPI(openAPI);
 
         Assert.assertEquals(codegen.additionalProperties().get(CodegenConstants.HIDE_GENERATION_TIMESTAMP), Boolean.TRUE);
-        Assert.assertEquals(codegen.isHideGenerationTimestamp(), true);
+        Assert.assertTrue(codegen.isHideGenerationTimestamp());
         Assert.assertEquals(codegen.modelPackage(), "xyz.yyyyy.mmmmm.model");
         Assert.assertEquals(codegen.additionalProperties().get(CodegenConstants.MODEL_PACKAGE), "xyz.yyyyy.mmmmm.model");
         Assert.assertEquals(codegen.apiPackage(), "xyz.yyyyy.aaaaa.api");
@@ -538,7 +538,7 @@ public class SpringCodegenTest {
         codegen.preprocessOpenAPI(openAPI);
 
         Assert.assertEquals(codegen.additionalProperties().get(CodegenConstants.HIDE_GENERATION_TIMESTAMP), Boolean.FALSE);
-        Assert.assertEquals(codegen.isHideGenerationTimestamp(), false);
+        Assert.assertFalse(codegen.isHideGenerationTimestamp());
         Assert.assertEquals(codegen.modelPackage(), "org.openapitools.model");
         Assert.assertEquals(codegen.additionalProperties().get(CodegenConstants.MODEL_PACKAGE), "org.openapitools.model");
         Assert.assertEquals(codegen.apiPackage(), "org.openapitools.api");
@@ -684,7 +684,7 @@ public class SpringCodegenTest {
         codegen.processOpts();
 
         Assert.assertEquals(codegen.additionalProperties().get(CodegenConstants.HIDE_GENERATION_TIMESTAMP), Boolean.TRUE);
-        Assert.assertEquals(codegen.isHideGenerationTimestamp(), true);
+        Assert.assertTrue(codegen.isHideGenerationTimestamp());
         Assert.assertEquals(codegen.modelPackage(), "xx.yyyyyyyy.model");
         Assert.assertEquals(codegen.additionalProperties().get(CodegenConstants.MODEL_PACKAGE), "xx.yyyyyyyy.model");
         Assert.assertEquals(codegen.apiPackage(), "xx.yyyyyyyy.api");
@@ -695,7 +695,7 @@ public class SpringCodegenTest {
         Assert.assertEquals(codegen.additionalProperties().get(SpringCodegen.BASE_PACKAGE), "xx.yyyyyyyy.base");
         Assert.assertEquals(codegen.getConfigPackage(), "xx.yyyyyyyy.config");
         Assert.assertEquals(codegen.additionalProperties().get(SpringCodegen.CONFIG_PACKAGE), "xx.yyyyyyyy.config");
-        Assert.assertEquals(codegen.isUnhandledException(), true);
+        Assert.assertTrue(codegen.isUnhandledException());
         Assert.assertEquals(codegen.additionalProperties().get(SpringCodegen.UNHANDLED_EXCEPTION_HANDLING), true);
     }
 
@@ -1499,4 +1499,29 @@ public class SpringCodegenTest {
                              "})";
         assertFileContains(Paths.get(output.getAbsolutePath() + "/src/main/java/org/openapitools/model/Pet.java"), jsonTypeInfo, jsonSubType);
     }
+
+    @Test
+    public void whenInlineEnumInMultipartRequest_thenAnnotatedWithRequestParam_issue5676() throws IOException {
+        File output = Files.createTempDirectory("test").toFile().getCanonicalFile();
+        output.deleteOnExit();
+
+        OpenAPI openAPI = new OpenAPIParser()
+            .readLocation("src/test/resources/3_0/issue-5676-enums.yaml", null, new ParseOptions()).getOpenAPI();
+        SpringCodegen codegen = new SpringCodegen();
+        codegen.setLibrary(SPRING_BOOT);
+        codegen.setOutputDir(output.getAbsolutePath());
+
+        ClientOptInput input = new ClientOptInput()
+            .openAPI(openAPI)
+            .config(codegen);
+
+        DefaultGenerator generator = new DefaultGenerator();
+        generator.opts(input).generate();
+
+        String multipartFormDataEnumParameters = "default ResponseEntity<EnumPatternObject> fakeRequestMultipartWithReferencedEnum(\n" +
+            "        @Parameter(name = \"id\", description = \"\") @Valid @RequestParam(value = \"id\", required = false) BigDecimal id,\n" +
+            "        @Parameter(name = \"enumType\", description = \"\") @Valid @RequestParam(value = \"enumType\", required = false) StringEnum enumType\n" +
+            "    ) ";
+        assertFileContains(Paths.get(output.getAbsolutePath() + "/src/main/java/org/openapitools/api/FakeApi.java"), multipartFormDataEnumParameters);
+    }
 }
diff --git a/modules/openapi-generator/src/test/resources/3_0/issue-5676-enums.yaml b/modules/openapi-generator/src/test/resources/3_0/issue-5676-enums.yaml
new file mode 100644
index 0000000000000000000000000000000000000000..23cdfdc053bc5d293b0a59e353c5ec4200584506
--- /dev/null
+++ b/modules/openapi-generator/src/test/resources/3_0/issue-5676-enums.yaml
@@ -0,0 +1,213 @@
+openapi: 3.0.0
+info:
+  version: 1.0.0
+  title: Enum test
+servers:
+  - url: http://localhost:3000
+paths:
+  /fake/request-object-with-inline-enum:
+    post:
+      operationId: fakeRequestObjectWithInlineEnum
+      requestBody:
+        content:
+          application/json:
+            schema:
+              description: Contains property enumType that represents inline enum.
+              properties:
+                id:
+                  type: number
+                enumType:
+                  type: string
+                  enum:
+                    - one
+                    - two
+                    - three
+      responses:
+        200:
+          description: OK
+          content:
+            application/json:
+              schema:
+                $ref: '#/components/schemas/EnumPatternObject'
+  /fake/request-object-with-referenced-enum:
+    post:
+      operationId: fakeRequestObjectWithReferencedEnum
+      requestBody:
+        content:
+          application/json:
+            schema:
+              description: Contains property enumType that represents referenced enum.
+              properties:
+                id:
+                  type: number
+                enumType:
+                  $ref: '#/components/schemas/StringEnum'
+      responses:
+        200:
+          description: OK
+          content:
+            application/json:
+              schema:
+                $ref: '#/components/schemas/EnumPatternObject'
+  /fake/request-array-with-inline-enum:
+    post:
+      operationId: fakeRequestArrayWithInlineEnum
+      requestBody:
+        content:
+          application/json:
+            schema:
+              description: Contains property enumTypes that represents array of inline enums.
+              properties:
+                id:
+                  type: number
+                enumTypes:
+                  type: array
+                  items:
+                    type: string
+                    enum:
+                      - one
+                      - two
+                      - three
+      responses:
+        200:
+          description: OK
+          content:
+            application/json:
+              schema:
+                $ref: '#/components/schemas/EnumPatternObject'
+  /fake/request-array-with-referenced-enum:
+    post:
+      operationId: fakeRequestArrayWithReferencedEnum
+      requestBody:
+        content:
+          application/json:
+            schema:
+              description: Contains property enumTypes that represents array of referenced enums.
+              properties:
+                id:
+                  type: number
+                enumTypes:
+                  type: array
+                  items:
+                    $ref: '#/components/schemas/StringEnum'
+      responses:
+        200:
+          description: OK
+          content:
+            application/json:
+              schema:
+                $ref: '#/components/schemas/EnumPatternObject'
+  /fake/request-map-with-inline-enum:
+    post:
+      operationId: fakeRequestMapWithInlineEnum
+      requestBody:
+        content:
+          application/json:
+            schema:
+              description: Contains property enumTypes that represents map of inline enums.
+              properties:
+                id:
+                  type: number
+                enumTypes:
+                  type: object
+                  additionalProperties:
+                    type: string
+                    enum:
+                      - one
+                      - two
+                      - three
+      responses:
+        200:
+          description: OK
+          content:
+            application/json:
+              schema:
+                $ref: '#/components/schemas/EnumPatternObject'
+  /fake/request-map-with-referenced-enum:
+    post:
+      operationId: fakeRequestMapWithReferencedEnum
+      requestBody:
+        content:
+          application/json:
+            schema:
+              description: Contains property enumTypes that represents map of referenced enums.
+              properties:
+                id:
+                  type: number
+                enumTypes:
+                  type: object
+                  additionalProperties:
+                    $ref: '#/components/schemas/StringEnum'
+      responses:
+        200:
+          description: OK
+          content:
+            application/json:
+              schema:
+                $ref: '#/components/schemas/EnumPatternObject'
+  /fake/multipart-request-with-inline-enum:
+    post:
+      operationId: fakeRequestMultipartWithInlineEnum
+      requestBody:
+        content:
+          multipart/form-data:
+            schema:
+              description: Contains property enumType that represents inline enum.
+              properties:
+                id:
+                  type: number
+                enumType:
+                  type: string
+                  enum:
+                    - one
+                    - two
+                    - three
+  /fake/multipart-request-with-referenced-enum:
+    post:
+      operationId: fakeRequestMultipartWithReferencedEnum
+      requestBody:
+        content:
+          multipart/form-data:
+            schema:
+              description: Contains property enumType that represents referenced enum.
+              properties:
+                id:
+                  type: number
+                enumType:
+                  $ref: '#/components/schemas/StringEnum'
+      responses:
+        200:
+          description: OK
+          content:
+            application/json:
+              schema:
+                $ref: '#/components/schemas/EnumPatternObject'
+components:
+  schemas:
+    StringEnum:
+      type: string
+      enum:
+        - one
+        - two
+        - three
+    NumberEnum:
+      type: number
+      enum:
+        - 1
+        - 2
+        - 3
+    EnumPatternObject:
+      type: object
+      properties:
+        string-enum:
+          $ref: "#/components/schemas/StringEnum"
+        nullable-string-enum:
+          nullable: true
+          allOf:
+            - $ref: "#/components/schemas/StringEnum"
+        number-enum:
+          $ref: "#/components/schemas/NumberEnum"
+        nullable-number-enum:
+          nullable: true
+          allOf:
+            - $ref: "#/components/schemas/NumberEnum"