diff --git a/javaxval/pom.xml b/javaxval/pom.xml
index e6ecee6cfb..a88bde35f8 100644
--- a/javaxval/pom.xml
+++ b/javaxval/pom.xml
@@ -34,8 +34,19 @@
spring-test
${org.springframework.version}
+
+ org.springframework.boot
+ spring-boot-starter-validation
+ ${spring.boot.version}
+
+
+ org.springframework.boot
+ spring-boot-starter-test
+ ${spring.boot.version}
+ test
+
-
+
- 6.0.13.Final
+ 6.2.3.Final
6.2.0.Final
3.6.1
1.8
1.8
3.0.0
- 5.0.2.RELEASE
+ 5.3.21
+ 2.7.1
\ No newline at end of file
diff --git a/javaxval/src/main/java/com/baeldung/javaxval/notnull/NotNullMethodParameter.java b/javaxval/src/main/java/com/baeldung/javaxval/notnull/NotNullMethodParameter.java
new file mode 100644
index 0000000000..47f0ee69fe
--- /dev/null
+++ b/javaxval/src/main/java/com/baeldung/javaxval/notnull/NotNullMethodParameter.java
@@ -0,0 +1,22 @@
+package com.baeldung.javaxval.notnull;
+
+import javax.validation.Validation;
+import javax.validation.Validator;
+import javax.validation.ValidatorFactory;
+import javax.validation.constraints.NotNull;
+
+public class NotNullMethodParameter {
+
+ ValidatorFactory factory = Validation.buildDefaultValidatorFactory();
+ Validator validator = factory.getValidator();
+
+ public int doesNotValidateNotNull(@NotNull String myString) {
+ return myString.length();
+ }
+
+ public int validateNotNull(@NotNull String myString) {
+ validator.validate(myString);
+ return myString.length();
+ }
+
+}
\ No newline at end of file
diff --git a/javaxval/src/main/java/com/baeldung/javaxval/notnull/ValidatingComponent.java b/javaxval/src/main/java/com/baeldung/javaxval/notnull/ValidatingComponent.java
new file mode 100644
index 0000000000..919001bd55
--- /dev/null
+++ b/javaxval/src/main/java/com/baeldung/javaxval/notnull/ValidatingComponent.java
@@ -0,0 +1,21 @@
+package com.baeldung.javaxval.notnull;
+
+import org.springframework.stereotype.Component;
+import org.springframework.validation.annotation.Validated;
+
+import javax.validation.constraints.NotNull;
+
+@Component
+@Validated
+public class ValidatingComponent {
+
+ public int validateNotNull(@NotNull String data)
+ {
+ return data.length();
+ }
+
+ public int callAnnotatedMethod(String data) {
+ return validateNotNull(data);
+ }
+
+}
diff --git a/javaxval/src/test/java/com/baeldung/javaxval/notnull/NotNullMethodParameterUnitTest.java b/javaxval/src/test/java/com/baeldung/javaxval/notnull/NotNullMethodParameterUnitTest.java
new file mode 100644
index 0000000000..bfc34331e5
--- /dev/null
+++ b/javaxval/src/test/java/com/baeldung/javaxval/notnull/NotNullMethodParameterUnitTest.java
@@ -0,0 +1,21 @@
+package com.baeldung.javaxval.notnull;
+
+import org.junit.jupiter.api.Test;
+
+import static org.junit.jupiter.api.Assertions.assertThrows;
+
+class NotNullMethodParameterUnitTest {
+
+ private NotNullMethodParameter demo = new NotNullMethodParameter();
+
+ @Test
+ public void givenNull_whenInvokedwithNoValidator_thenNullPointerException() {
+ assertThrows(NullPointerException.class, () -> demo.doesNotValidateNotNull(null));
+ }
+
+ @Test
+ public void givenNull_whenInvokedWithValidator_thenIllegalArgumentException() {
+ assertThrows(IllegalArgumentException.class, () -> demo.validateNotNull(null));
+ }
+
+}
\ No newline at end of file
diff --git a/javaxval/src/test/java/com/baeldung/javaxval/notnull/ValidatingComponentIntegrationTest.java b/javaxval/src/test/java/com/baeldung/javaxval/notnull/ValidatingComponentIntegrationTest.java
new file mode 100644
index 0000000000..dbeba3e812
--- /dev/null
+++ b/javaxval/src/test/java/com/baeldung/javaxval/notnull/ValidatingComponentIntegrationTest.java
@@ -0,0 +1,43 @@
+package com.baeldung.javaxval.notnull;
+
+import org.junit.jupiter.api.Test;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.boot.autoconfigure.SpringBootApplication;
+import org.springframework.boot.test.context.SpringBootTest;
+
+import javax.validation.ConstraintViolation;
+import javax.validation.ConstraintViolationException;
+import javax.validation.constraints.NotNull;
+import java.util.Set;
+
+import static org.hamcrest.MatcherAssert.assertThat;
+import static org.hamcrest.Matchers.is;
+import static org.junit.jupiter.api.Assertions.assertThrows;
+
+@SpringBootTest
+class ValidatingComponentIntegrationTest {
+
+ @Autowired ValidatingComponent component;
+
+ @Test
+ void givenValue_whenValidate_thenSuccess() {
+ assertThat(component.validateNotNull("Not null!"), is(9));
+ }
+
+ @Test
+ void givenNull_whenValidate_thenConstraintViolationException() {
+ ConstraintViolationException constraintViolationException = assertThrows(ConstraintViolationException.class, () -> component.validateNotNull(null));
+ Set> constraintViolations = constraintViolationException.getConstraintViolations();
+ assertThat(constraintViolations.iterator().next().getConstraintDescriptor().getAnnotation().annotationType(), is(NotNull.class));
+ }
+
+ @Test
+ void givenNull_whenOnlyCalledMethodHasAnnotation_thenNoValidation() {
+ assertThrows(NullPointerException.class, () -> component.callAnnotatedMethod(null));
+ }
+
+ @SpringBootApplication
+ static class TestApplication {
+ }
+
+}
\ No newline at end of file