| File: helloworld-context.properties
 
 source.(class)=SimpleMessageData
 destination.(class)=StdoutMessageReporter
 
 
 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"));
 
 MessageData source = (MessageData) bf.getBean("source");
 MessageReporter destination = (MessageReporter) bf.getBean("destination");
 
 destination.write(source.getMessage());
 }
 }
 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;
 }
 }
 
 
 
 
 
 
 |