How to Disable/Skip @Required Annotation For Class

When you see this title, you may think “why should I skip a required field, can’t I just remove the annotation?”. And you are probably right. But imagine when you are using a third-party library which contains some @Required annotations that are badly placed, you do have the option to disable or skip the @Required annotation. Let’s see how.

Marking setter method with @Required

Suppose we have a class with the @Required annotation. But we want to disable or skip this annotation. We don’t have the source code of this library so we cannot change or remove the annotation.

package com.memorynotfound.spring.core.required;

import org.springframework.beans.factory.annotation.Required;

public class StarWars {

    private TheForce theForce;

    public TheForce getTheForce() {
        return theForce;

    public void setTheForce(TheForce theForce) {
        this.theForce = theForce;

This class is marked as required in the previous one.

package com.memorynotfound.spring.core.required;

public class TheForce {


Disable or Skip @Required Dependency Checking for class

To disable or skip the @Required annotation for a class we can configure the bean definition with a meta element with the org.springframework.beans.factory.annotation.RequiredAnnotationBeanPostProcessor.skipRequiredCheck and assign a value of true. This will skip the required annotation completely for that class.

<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns=""


    <bean id="luke" class="com.memorynotfound.spring.core.required.StarWars">
        <meta key="org.springframework.beans.factory.annotation.RequiredAnnotationBeanPostProcessor.skipRequiredCheck" value="true"/>


Running the application

Note that the StarWars has a required annotation. We skipped the validation of this class. So when we boot the application without providing a value, we’ll see that the application boots successfully.

package com.memorynotfound.spring.core.required;

import org.springframework.context.ApplicationContext;

public class Main {

    public static void main(String... args) {
        ApplicationContext context = new ClassPathXmlApplicationContext("app-config.xml");
        StarWars starWars = (StarWars)context.getBean("luke");



You may also like...