diff --git a/spring-web-modules/spring-mvc-basics-2/pom.xml b/spring-web-modules/spring-mvc-basics-2/pom.xml
index cefc5656995a..25d1e84b6fa0 100644
--- a/spring-web-modules/spring-mvc-basics-2/pom.xml
+++ b/spring-web-modules/spring-mvc-basics-2/pom.xml
@@ -116,6 +116,10 @@
json
${json.version}
+
+ com.fasterxml.jackson.core
+ jackson-databind
+
diff --git a/spring-web-modules/spring-mvc-basics-2/src/main/java/com/baeldung/spring/enums/EnumController.java b/spring-web-modules/spring-mvc-basics-2/src/main/java/com/baeldung/spring/enums/controller/EnumController.java
similarity index 66%
rename from spring-web-modules/spring-mvc-basics-2/src/main/java/com/baeldung/spring/enums/EnumController.java
rename to spring-web-modules/spring-mvc-basics-2/src/main/java/com/baeldung/spring/enums/controller/EnumController.java
index 356e751d5e25..2db6ce71289e 100644
--- a/spring-web-modules/spring-mvc-basics-2/src/main/java/com/baeldung/spring/enums/EnumController.java
+++ b/spring-web-modules/spring-mvc-basics-2/src/main/java/com/baeldung/spring/enums/controller/EnumController.java
@@ -1,11 +1,14 @@
-package com.baeldung.spring.enums;
+package com.baeldung.spring.enums.controller;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.PathVariable;
+import org.springframework.web.bind.annotation.PostMapping;
+import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.bind.annotation.RestController;
+import com.baeldung.spring.enums.entity.ModeEntity;
import com.baeldung.spring.model.Modes;
@RestController
@@ -21,4 +24,10 @@ public String getStringToMode(@RequestParam("mode") Modes mode) {
public String findByEnum(@PathVariable Modes mode) {
return "good";
}
+
+ @PostMapping("/create-modes")
+ public String create(@RequestBody ModeEntity entity) {
+ return "created";
+ }
+
}
\ No newline at end of file
diff --git a/spring-web-modules/spring-mvc-basics-2/src/main/java/com/baeldung/spring/enums/entity/ModeEntity.java b/spring-web-modules/spring-mvc-basics-2/src/main/java/com/baeldung/spring/enums/entity/ModeEntity.java
new file mode 100644
index 000000000000..976f64293650
--- /dev/null
+++ b/spring-web-modules/spring-mvc-basics-2/src/main/java/com/baeldung/spring/enums/entity/ModeEntity.java
@@ -0,0 +1,36 @@
+package com.baeldung.spring.enums.entity;
+
+import com.baeldung.spring.model.Modes;
+
+public class ModeEntity {
+
+ private Long id;
+
+ private String name;
+
+ private Modes mode;
+
+ public Long getId() {
+ return id;
+ }
+
+ public void setId(Long id) {
+ this.id = id;
+ }
+
+ public String getName() {
+ return name;
+ }
+
+ public void setName(String name) {
+ this.name = name;
+ }
+
+ public Modes getMode() {
+ return mode;
+ }
+
+ public void setMode(Modes mode) {
+ this.mode = mode;
+ }
+}
diff --git a/spring-web-modules/spring-mvc-basics-2/src/main/java/com/baeldung/spring/model/Modes.java b/spring-web-modules/spring-mvc-basics-2/src/main/java/com/baeldung/spring/model/Modes.java
index dc05448f3fea..3b3b3a3e924e 100644
--- a/spring-web-modules/spring-mvc-basics-2/src/main/java/com/baeldung/spring/model/Modes.java
+++ b/spring-web-modules/spring-mvc-basics-2/src/main/java/com/baeldung/spring/model/Modes.java
@@ -1,5 +1,35 @@
package com.baeldung.spring.model;
+import com.fasterxml.jackson.annotation.JsonCreator;
+
public enum Modes {
- ALPHA, BETA;
+ ALPHA("A"),
+ BETA("B");
+
+ private final String text;
+
+ Modes(String text) {
+ this.text = text;
+ }
+
+ public String getText() {
+ return this.text;
+ }
+
+ @JsonCreator
+ public static Modes fromText(String text) {
+ for (Modes modes : Modes.values()) {
+ if (modes.getText()
+ .equals(text)) {
+ return modes;
+ }
+ }
+ throw new IllegalArgumentException("Unknown mode value: " + text);
+ }
+
+ @Override
+ public String toString() {
+ return text;
+ }
+
}
diff --git a/spring-web-modules/spring-mvc-basics-2/src/main/resources/application.properties b/spring-web-modules/spring-mvc-basics-2/src/main/resources/application.properties
index 7ca8d33d5cf2..8fda22a70e7a 100644
--- a/spring-web-modules/spring-mvc-basics-2/src/main/resources/application.properties
+++ b/spring-web-modules/spring-mvc-basics-2/src/main/resources/application.properties
@@ -30,3 +30,5 @@ attachment.invoice=path_to_file
spring.mail.templates.path=mail-templates
#spring.mail.templates.path=/path/to/templates
+
+
diff --git a/spring-web-modules/spring-mvc-basics-2/src/test/java/com/baeldung/spring/enums/entity/ModeDeserializationUnitTest.java b/spring-web-modules/spring-mvc-basics-2/src/test/java/com/baeldung/spring/enums/entity/ModeDeserializationUnitTest.java
new file mode 100644
index 000000000000..9343f090b546
--- /dev/null
+++ b/spring-web-modules/spring-mvc-basics-2/src/test/java/com/baeldung/spring/enums/entity/ModeDeserializationUnitTest.java
@@ -0,0 +1,19 @@
+package com.baeldung.spring.enums.entity;
+
+import static org.junit.jupiter.api.Assertions.assertEquals;
+import org.junit.jupiter.api.Test;
+import com.baeldung.spring.model.Modes;
+import com.fasterxml.jackson.databind.ObjectMapper;
+
+class ModeDeserializationUnitTest {
+
+
+ private final ObjectMapper objectMapper = new ObjectMapper();
+
+ @Test
+ void whenJsonContainsA_thenDeserializesToAlpha() throws Exception {
+ ModeEntity entity = objectMapper.readValue("{\"mode\": \"A\"}", ModeEntity.class);
+
+ assertEquals(Modes.ALPHA, entity.getMode());
+ }
+}
\ No newline at end of file