Source Code : Setter Dependency Injection Demo

Java Is Open Source Programming Language You Can Download From Java and Java Libraries From http://www.oracle.com. Click Here to download
We provide this code related to title for you to solve your developing problem easily. Libraries which is import in this program you can download from http://www.oracle.com. Click Here or search from google with Libraries Name you get jar file related it

Setter Dependency Injection Demo

       
File: context.properties

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


File: Main.java

import java.util.HashSet;
import java.util.Set;

import org.springframework.beans.factory.BeanFactory;
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[] args) throws Exception {
    DefaultListableBeanFactory bf = new DefaultListableBeanFactory();
    BeanDefinitionReader reader = new PropertiesBeanDefinitionReader(bf);
    reader.loadBeanDefinitions(new ClassPathResource("context.properties"));

    MessageService service = (MessageService) bf.getBean("service");

    DependantComponent dc = new DependantComponent();
    dc.setService(service);
    dc.run();

  }

  private static Set<ManagedComponent> components = new HashSet<ManagedComponent>();

  private static void allowComponentsToLookup(BeanFactory bf) {
    for (ManagedComponent component : components) {
      component.lookup(bf);
    }
  }

  private static void registerComponent(ManagedComponent managedComponent) {
    components.add(managedComponent);
  }
}
class DependantComponent {
  private MessageService service;

  public DependantComponent() {
  }

  public void setService(MessageService service) {
      this.service = service;
  }

  public void run() {
      this.service.execute();
  }
}
class MessageServiceComponent implements ManagedComponent {
  private MessageService service;

  public void lookup(BeanFactory container) {
    this.service = (MessageService) container.getBean("service");
  }

  public void run() {
    this.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 ManagedComponent {

  void lookup(BeanFactory container);

}

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;
  }
}




           
       

Thank with us