IoC in properties file
/* Pro Spring By Rob Harrop Jan Machacek ISBN: 1-59059-461-4 Publisher: Apress */ /////////////////////////////////////////////////////////////////////////////////////// //File: beans.properties # The View view.class=StandardOutView view.model(ref)=model # The Model model.class=HelloWorldModel /////////////////////////////////////////////////////////////////////////////////////// public interface View { public void render(); public void setModel(Model m); public Model getModel(); } /////////////////////////////////////////////////////////////////////////////////////// public interface Model { public String getMessage(); } /////////////////////////////////////////////////////////////////////////////////////// public class StandardOutView implements View { private Model model = null; public void render() { if (model == null) { throw new RuntimeException( "You must set the property model of class:" + StandardOutView.class.getName()); } System.out.println(model.getMessage()); } public void setModel(Model m) { this.model = m; } public Model getModel() { return this.model; } } /////////////////////////////////////////////////////////////////////////////////////// public class HelloWorldModel implements Model { public String getMessage() { return "Hello World!"; } } /////////////////////////////////////////////////////////////////////////////////////// import java.io.FileInputStream; import java.util.Properties; import org.springframework.beans.factory.BeanFactory; import org.springframework.beans.factory.support.DefaultListableBeanFactory; import org.springframework.beans.factory.support.PropertiesBeanDefinitionReader; public class HelloWorldSpring { public static void main(String[] args) throws Exception { // get the bean factory BeanFactory factory = getBeanFactory(); View v = (View) factory.getBean("view"); Model mp = (Model) factory.getBean("model"); v.setModel(mp); v.render(); } private static BeanFactory getBeanFactory() throws Exception { // get the bean factory DefaultListableBeanFactory factory = new DefaultListableBeanFactory(); // create a definition reader PropertiesBeanDefinitionReader rdr = new PropertiesBeanDefinitionReader( factory); // load the configuration options Properties props = new Properties(); props.load(HelloWorldSpring.class.getResource("beans.properties").openStream()); rdr.registerBeanDefinitions(props); return factory; } }