@Required Spring Annotation


@Required

We use the @Required annotation to tell Spring that a property on a bean is required.

Student.java

Here we have applied the @Required annotation to the method setStudentId.

package com.skills421.examples.spring.model;

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

public class Student
{
private String name;
private String email;
private String studentId;

public String getName()
{
return name;
}

public void setName(String name)
{
this.name = name;
}

public String getEmail()
{
return email;
}

public void setEmail(String email)
{
this.email = email;
}

public String getStudentId()
{
return studentId;
}

@Required
public void setStudentId(String studentId)
{
this.studentId = studentId;
}

public String toString()
{
StringBuilder sb = new StringBuilder("Student[");
sb.append("name="+name);
sb.append(", email="+email);
sb.append(", studentId="+studentId);
sb.append("]");

return sb.toString();
}

}

student1.xml

This will do nothing if we do not add the RequiredAnnotationBeanPostProcessor bean to our Spring config xml file.

<beans xmlns="http://www.springframework.org/schema/beans"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://www.springframework.org/schema/beans
http://www.springframework.org/schema/beans/spring-beans.xsd">

<!-- Person Beans -->
<bean id="jondoe" class="com.skills421.examples.spring.model.Student">
<property name="name" value="Jon Doe" />
<property name="email" value="jon.doe@gmail.com" />
<property name="studentId" value="DoeJ-001" />
</bean>

<bean class="org.springframework.beans.factory.annotation.RequiredAnnotationBeanPostProcessor" />
</beans>

TestStudent1.java

Now we can bring it all together in our Test Suite.

package com.skills421.example.spring;

import org.junit.After;
import org.junit.AfterClass;
import org.junit.BeforeClass;
import org.junit.Test;
import org.springframework.context.support.AbstractApplicationContext;
import org.springframework.context.support.ClassPathXmlApplicationContext;

import com.skills421.examples.spring.model.Student;

public class TestStudent1
{
private static AbstractApplicationContext context;

@BeforeClass
public static void setupAppContext()
{
context = new ClassPathXmlApplicationContext("student1.xml");
}

@AfterClass
public static void closeAppContext()
{
if(context!=null)
{
context.close();
}
}

@After
public void printBlankLine()
{
System.out.println();
}

@Test
public void test1()
{
System.out.println("jondoe");
Student person = context.getBean("jondoe",Student.class);
System.out.println(person);
}
}
Advertisement

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out /  Change )

Twitter picture

You are commenting using your Twitter account. Log Out /  Change )

Facebook photo

You are commenting using your Facebook account. Log Out /  Change )

Connecting to %s