Java/Spring/Spring Properties

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

DependencyPull Demo

   <source lang="java">

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

}


      </source>
   
  
 
  



IOC With Properties File

   <source lang="java">

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

}


      </source>
   
  
 
  



Property File based Bean Injection

   <source lang="java">
      

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

}


      </source>
   
  
 
  



Spring Properties File Based Data Injection

   <source lang="java">
      

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

}


      </source>