I know there are already several questions on this.
I started a personal project on Spring Boot version 2.7.9 and wanted to use field level validation using @NotNull, @NotBlank, etc. After coding accordingly, it turned out the code is not able to detect the error. I came across this question and found that starter-validation is required to be explicitly mentioned. I added and restarted, but still it did not work. I scrolled down the same question and found one answer that IDE needs to be restarted as well. After doing so, it started working.
A couple of days later, I started working on it again. I added some business logic and some config like request logging. However, this time the annotation stopped working again.
I tried:
- Removing starter-validation dependency and re-added, restarted IDE
 - Removing whole requestlogging component (using OncePerRequestFilter) just for peace of mind.
 - Checked a few more questions here. All talk about missing dependency only. From here, I added the two properties as well.
 
Nothing has worked so far. Did someone also face a similar issue?
Observation: I don't know if it helps or not, although code fails to detect the error, I do get ConstraintViolationException when it tries to persist the entity.
My Pom.xml: (dependencies section only)
<dependencies>
    <dependency>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-data-jpa</artifactId>
    </dependency>
    <dependency>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-security</artifactId>
    </dependency>
    <dependency>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-web</artifactId>
    </dependency>
    <dependency>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-devtools</artifactId>
        <scope>runtime</scope>
        <optional>true</optional>
    </dependency>
    <dependency>
        <groupId>org.postgresql</groupId>
        <artifactId>postgresql</artifactId>
        <scope>runtime</scope>
    </dependency>
    <dependency>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-test</artifactId>
        <scope>test</scope>
    </dependency>
    <dependency>
        <groupId>org.hibernate</groupId>
        <artifactId>hibernate-envers</artifactId>
    </dependency>
    <dependency>
        <groupId>org.springframework.security</groupId>
        <artifactId>spring-security-test</artifactId>
        <scope>test</scope>
    </dependency>
    <dependency>
        <groupId>io.jsonwebtoken</groupId>
        <artifactId>jjwt</artifactId>
        <version>0.9.1</version>
    </dependency>
    <dependency>
        <groupId>org.springdoc</groupId>
        <artifactId>springdoc-openapi-ui</artifactId>
        <version>1.6.15</version>
    </dependency>
    <dependency>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-validation</artifactId>
    </dependency>
</dependencies>
Controller:
@PostMapping(value = "/create")
public ResponseEntity<MyDetailedResponse> createClient(
        @Valid @RequestBody MyRequest request) {
    //business logic
}
EDIT 1: Entity class as requested:
@Entity
@Audited
@Table(name = "client_details")
@JsonIgnoreProperties(value = { "optlock", "createdDate", "createdBy", "lastModifiedDate",
        "lastModifiedBy" }, ignoreUnknown = true)
public class AppClientDetails extends EntityVersionedMetaData {
    /**
     * 
     */
    private static final long serialVersionUID = 756964595629774899L;
    @NotBlank(message = "Name can not be blank")
    private String fullName;
    @NotBlank(message = "Please choose a short code for the client")
    private String shortCode;
    @NotBlank(message = "Address is mandatory.")
    @Size(min = 1, max = 255)
 // @Pattern(regexp = "^([a-zA-Z0-9.&:-\\S+]{1,255})$", message = "Invalid address. Only alphabets, number and . & : - are allowed")
    private String address;
    @NotBlank(message = "Contact person name is mandatory")
    private String contactPerson;
    private long phoneNumber;
    private String emailId;
    private String logoUrl;
    @NotNull(message = "Strength is required")
    private Short strength;
    @Temporal(TemporalType.DATE)
    private Date establishedDate;
    @Temporal(TemporalType.DATE)
    private Date onboardingDate;
    @NotBlank(message = "Plan must be selected")
    private String currentPlan;
    @Enumerated(EnumType.ORDINAL)
    private AppUserStatus clientStatus = AppUserStatus.ACTIVE;
   //getters setters
}
Just to add, I had commented @Pattern as it was throwing illegal character exception due to the \s in regex. That is also one issue.
EDIT 2: As last resort, I deleted whole .m2 directory and workspace both. Freshly created the whole project. Still it did not work.