Friday, August 14, 2009

Spring Properties File Based Data Injection

File: helloworld-context.properties

source.(class)=SimpleMessageData
destination.(class)=StdoutMessageReporter
service.(class)=DefaultMessageService
service.source(ref)=source
service.destination(ref)=destination


File: Main.java

import org.springframework.beans.factory.support.BeanDefinitionReader;
import org.springframework.beans.factory.support.DefaultListableBeanFactory;
import org.springframework.beans.factory.support.PropertiesBeanDefinitionReader;
import org.springframework.core.io.ClassPathResource;

public class Main {
public static void main(String[] a) {
DefaultListableBeanFactory bf = new DefaultListableBeanFactory();
BeanDefinitionReader reader = new PropertiesBeanDefinitionReader(bf);
reader.loadBeanDefinitions(new ClassPathResource("helloworld-context.properties"));

MessageService service = (MessageService) bf.getBean("service");
service.execute();
}
}
interface MessageService {

void execute();

}
class DefaultMessageService implements MessageService {
private MessageData source;
private MessageReporter destination;

public void execute() {
this.destination.write(this.source.getMessage());
}

public void setSource(MessageData source) {
this.source = source;
}

public void setDestination(MessageReporter destination) {
this.destination = destination;
}
}

interface MessageReporter {

void write(String message);

}

interface MessageData {

String getMessage();

}

class StdoutMessageReporter implements MessageReporter {

public void write(String message) {
System.out.println(message);
}
}

class SimpleMessageData implements MessageData {
private final String message;

public SimpleMessageData() {
this("Hello, world");
}

public SimpleMessageData(String message) {
this.message = message;
}

public String getMessage() {
return this.message;
}
}


click here

No comments: