Java/Spring/Spring Properties

Материал из Java эксперт
Перейти к: навигация, поиск

DependencyPull 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 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;
import org.springframework.util.Assert;
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");
    service.execute();
  }
}
class DependantComponent {
  private MessageService service;
  public DependantComponent(MessageService service) {
    Assert.notNull(service, "The "service" argument must not be null.");
    this.service = 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 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;
  }
}





IOC With Properties File

File: 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;
import org.springframework.util.Assert;
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(service);
    dc.run();
    
  }
}
class DependantComponent {
  private MessageService service;
  public DependantComponent(MessageService service) {
      Assert.notNull(service, "The "service" argument must not be null.");
      this.service = 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 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;
  }
}





Property File based Bean Injection

       
File: context.properties
oracle.(class)=BookwormOracle
encyclopedia.(class)=HardcodedEncyclopedia
oracle.encyclopedia(ref)=encyclopedia

File: Main.java
import java.util.HashMap;
import java.util.Map;
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("context.properties"));
    Oracle oracle = (Oracle) bf.getBean("oracle");
    System.out.println("Meaning of life is " + oracle.defineMeaningOfLife());
  }
}
interface Oracle {
  String defineMeaningOfLife();
}
interface Encyclopedia {
  Long findLong(String entry);
  
}
class BookwormOracle implements Oracle {
  private Encyclopedia encyclopedia;
  public String defineMeaningOfLife() {
      Long ageOfUniverse = this.encyclopedia.findLong("AgeOfUniverse");
      Long constantOfLife = this.encyclopedia.findLong("ConstantOfLife");
      return String.valueOf(ageOfUniverse / constantOfLife);
  }
  public void setEncyclopedia(Encyclopedia encyclopedia) {
      this.encyclopedia = encyclopedia;
  }
}

class HardcodedEncyclopedia implements Encyclopedia {
  private Map<String, Long> entryValues = new HashMap<String, Long>();
  public HardcodedEncyclopedia() {
      this.entryValues.put("AgeOfUniverse", 13700000000L);
      this.entryValues.put("ConstantOfLife", 326190476L);
  }
  public Long findLong(String entry) {
      return this.entryValues.get(entry);
  }
}





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