Java/Spring/Spring Properties
Версия от 18:01, 31 мая 2010; (обсуждение)
Содержание
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;
}
}