Java/Spring/Spring Properties
Содержание
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>