@@ -54,7 +54,7 @@ On start.spring.io, Choose
5454- groupId: ` com.in28minutes.rest.webservices `
5555- artifactId: ` restful-web-services `
5656- package: ` com.in28minutes.rest.webservices.restfulwebservices `
57- - Dependencies: Spring Boot Starter Web, DevTools, JPA and H2
57+ - Dependencies: Spring Web, DevTools, JPA and H2
5858
5959
6060## Step 03
@@ -1230,6 +1230,28 @@ URLs
12301230 private LocalDate birthDate;
12311231
12321232```
1233+ > [ !NOTE]
1234+ MappingJacksonValue will be eliminated in an upcoming release of the Spring Framework. For further information:
1235+ - https://spring.io/blog/2025/10/07/introducing-jackson-3-support-in-spring#goodbye-mappingjacksonvalue
1236+ - https://github.com/danvega/donut-shop/blob/master/README.md
1237+
1238+ ### /src/main/java/com/in28minutes/rest/webservices/restfulwebservices/filtering/Views.java New
1239+
1240+ ``` java
1241+ package com.in28minutes.rest.webservices.restfulwebservices.filtering ;
1242+
1243+ /**
1244+ * <a href =" https://spring.io/blog/2025/10/07/introducing-jackson-3-support-in-spring" >Jackson 3 Support in Spring 4</a>
1245+ */
1246+ public class Views {
1247+
1248+ public interface Public {
1249+ }
1250+
1251+ public interface Internal extends Public {
1252+ }
1253+ }
1254+ ```
12331255
12341256### /src/main/java/com/in28minutes/rest/webservices/restfulwebservices/filtering/FilteringController.java New
12351257
@@ -1239,72 +1261,88 @@ package com.in28minutes.rest.webservices.restfulwebservices.filtering;
12391261import java.util.Arrays ;
12401262import java.util.List ;
12411263
1242- import org.springframework.http.converter.json.MappingJacksonValue ;
1264+ import com.fasterxml.jackson.annotation.JsonView ;
1265+ // import org.springframework.http.converter.json.MappingJacksonValue;
12431266import org.springframework.web.bind.annotation.GetMapping ;
12441267import org.springframework.web.bind.annotation.RestController ;
1268+ import tools.jackson.databind.json.JsonMapper ;
1269+ import tools.jackson.databind.ser.FilterProvider ;
1270+ import tools.jackson.databind.ser.std.SimpleBeanPropertyFilter ;
1271+ import tools.jackson.databind.ser.std.SimpleFilterProvider ;
12451272
1246- import com.fasterxml.jackson.databind.ser.FilterProvider ;
1247- import com.fasterxml.jackson.databind.ser.impl.SimpleBeanPropertyFilter ;
1248- import com.fasterxml.jackson.databind.ser.impl.SimpleFilterProvider ;
1273+ // BEFORE SPRING BOOT 4
1274+ // import com.fasterxml.jackson.databind.ser.FilterProvider;
1275+ // import com.fasterxml.jackson.databind.ser.impl.SimpleBeanPropertyFilter;
1276+ // import com.fasterxml.jackson.databind.ser.impl.SimpleFilterProvider;
12491277
12501278@RestController
12511279public class FilteringController {
1252-
1253- @GetMapping (" /filtering" ) // field2
1254- public MappingJacksonValue filtering () {
1255-
1256- SomeBean someBean = new SomeBean (" value1" ," value2" , " value3" );
12571280
1258- MappingJacksonValue mappingJacksonValue = new MappingJacksonValue (someBean);
1259-
1260- SimpleBeanPropertyFilter filter =
1261- SimpleBeanPropertyFilter . filterOutAllExcept(" field1" ," field3" );
1262-
1263- FilterProvider filters =
1264- new SimpleFilterProvider (). addFilter(" SomeBeanFilter" , filter );
1265-
1266- mappingJacksonValue. setFilters(filters );
1267-
1268-
1269- return mappingJacksonValue;
1270- }
1281+ @GetMapping (" /filtering" ) // field2
1282+ @JsonView (Views . Public . class)
1283+ public String filtering () {
12711284
1272- @GetMapping (" /filtering-list" ) // field2, field3
1273- public MappingJacksonValue filteringList () {
1274- List<SomeBean > list = Arrays . asList(new SomeBean (" value1" ," value2" , " value3" ),
1275- new SomeBean (" value4" ," value5" , " value6" ));
1276- MappingJacksonValue mappingJacksonValue = new MappingJacksonValue (list);
1277-
1278- SimpleBeanPropertyFilter filter =
1279- SimpleBeanPropertyFilter . filterOutAllExcept(" field2" ," field3" );
1280-
1281- FilterProvider filters =
1282- new SimpleFilterProvider (). addFilter(" SomeBeanFilter" , filter );
1283-
1284- mappingJacksonValue. setFilters(filters );
1285-
1286-
1287- return mappingJacksonValue;
1288- }
1285+ // SomeBean someBean = new SomeBean("value1","value2", "value3");
1286+ var someBean = new SomeBean (" value1" ," value2" , " value3" );
1287+
1288+ // MappingJacksonValue mappingJacksonValue = new MappingJacksonValue(someBean);
1289+ // SimpleBeanPropertyFilter filter =
1290+ // SimpleBeanPropertyFilter.filterOutAllExcept("field1","field3");
1291+ var filter = SimpleBeanPropertyFilter . filterOutAllExcept(" field1" ," field3" );
1292+
1293+ // FilterProvider filters =
1294+ // new SimpleFilterProvider().addFilter("SomeBeanFilter", filter );
1295+ var filters = new SimpleFilterProvider (). addFilter(" SomeBeanFilter" , filter);
1296+
1297+ var jsonMapper = JsonMapper . builder(). build();
1298+
1299+ // mappingJacksonValue.setFilters(filters );
1300+ // return mappingJacksonValue
1301+ return jsonMapper. writer(filters). writeValueAsString(someBean);
1302+ }
1303+
1304+ @GetMapping (" /filtering-list" ) // field2, field3
1305+ public String filteringList () {
1306+ List<SomeBean > list = Arrays . asList(new SomeBean (" value1" ," value2" , " value3" ),
1307+ new SomeBean (" value4" ," value5" , " value6" ));
1308+ // MappingJacksonValue mappingJacksonValue = new MappingJacksonValue(list);
1309+
1310+ // SimpleBeanPropertyFilter filter =
1311+ // SimpleBeanPropertyFilter.filterOutAllExcept("field2","field3");
1312+ var filter = SimpleBeanPropertyFilter . filterOutAllExcept(" field2" , " field3" );
1313+
1314+ // FilterProvider filters =
1315+ // new SimpleFilterProvider().addFilter("SomeBeanFilter", filter );
1316+ var filters = new SimpleFilterProvider (). addFilter(" SomeBeanFilter" , filter);
1317+
1318+ // mappingJacksonValue.setFilters(filters );
1319+ var jsonMapper = JsonMapper . builder(). build();
1320+
1321+ // return mappingJacksonValue;
1322+ return jsonMapper. writer(filters). writeValueAsString(list);
1323+ }
12891324
12901325}
12911326```
12921327
1293-
12941328### /src/main/java/com/in28minutes/rest/webservices/restfulwebservices/filtering/SomeBean.java New
12951329
12961330``` java
12971331package com.in28minutes.rest.webservices.restfulwebservices.filtering ;
12981332
12991333import com.fasterxml.jackson.annotation.JsonFilter ;
1334+ import com.fasterxml.jackson.annotation.JsonView ;
13001335
13011336// @JsonIgnoreProperties({"field1","field2"})
13021337@JsonFilter (" SomeBeanFilter" )
13031338public class SomeBean {
1304- private String field1;
1305-
1339+ @JsonView (Views . Public . class)
1340+ private String field1;
1341+
1342+ @JsonView (Views . Public . class)
13061343 private String field2;
13071344
1345+ @JsonView (Views . Public . class)
13081346 // @JsonIgnore
13091347 private String field3;
13101348
@@ -1373,6 +1411,17 @@ management.endpoints.web.exposure.include=*
13731411- Step 28 - Creating User Entity and some test data
13741412- Step 29 - Enhancing REST API to connect to H2 using JPA and Hibernate
13751413
1414+ ### pom.xml - New
1415+
1416+ - To view the H2 console in the web browser, you need to manually add the following dependency to the ` pom.xml ` file.
1417+
1418+ ``` xml
1419+ <dependency >
1420+ <groupId >org.springframework.boot</groupId >
1421+ <artifactId >spring-boot-h2console</artifactId >
1422+ </dependency >
1423+ ```
1424+
13761425URLs
13771426- H2-Console
13781427 - http://localhost:8080/h2-console
@@ -1813,7 +1862,11 @@ select * from post;
18131862### / pom. xml Modified
18141863
18151864```
1816- < ! --
1865+ < ! --
1866+ < dependency>
1867+ < groupId> org. springframework. boot< / groupId>
1868+ < artifactId> spring- boot- h2console< / artifactId>
1869+ < / dependency>
18171870 < dependency>
18181871 < groupId> com. h2database< / groupId>
18191872 < artifactId> h2< / artifactId>
0 commit comments