@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);
	}
}
Advertisements

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 )

Google+ photo

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

Connecting to %s