Spring笔记之三(Usage of property config)

 本文内容演示属性文件用法的简单例子。
首先定义模型接口Model,视图接口View,以及它们实现类ImpModel,ImpView.
Model中定义方法getString();View中定义Model实例为其属性,在实现类ImpView中实现方法
disPlay(),其方法体为Model实例的getString()方法,并将其打印出来。

定义属性文件
msf.properties
disPalyer.class
= ImpView
provider.class
= ImpModel


编写工厂类
TestFactory.java
import  java.util.Properties;
public   class  TestFactory{
    
private   static  TestFactory instance  =   null ;
    
private  Properties props  =   null ;
    
private  View disPalyer  =   null ;
    
private  Model provider  =   null ;

    
static  {
        instance 
=   new  TestFactory();
    }

    
public   static  TestFactory getInstance() {
        
return  instance;
    }

    
public  View getView() {
        
return  disPalyer;
    }

    
public  Model getModel() {
        
return  provider;
    }

    
private  TestFactory() {
        props 
=   new  Properties();

        
try  {
            
// 加载属性文件
            props.load( TestFactory. class .getResource( " msf.properties " ).openStream()); 

            
// 获取属性值
            String rendererClass  =  props.getProperty( " renderer.class " );
            String providerClass 
=  props.getProperty( " provider.class " );

            
// 产生类实例对象
            renderer  =  (View) Class.forName(rendererClass).newInstance();
            provider 
=  (Model) Class.forName(providerClass).newInstance();
        } 
catch  (Exception ex) {
            ex.printStackTrace();
        }
    }
}


最后编写测试方法
1  public static void main(String[] args) {
2             View mr = TestFactory.getInstance().getView();
3             Model mp = TestFactory.getInstance().getModel();
4             mr.setModel(mp);
5             mr.disPlay();
6         }

综上,对属性文件的加载主要语句
props.load( TestFactory.class.getResource("msf.properties").openStream());
并分别通过newInstance()产生实例对象,本例中使用了设计模式中的工厂模式以及单例实例模式,
因此具有对设计模式进一步了解的意义。


注:另一用法
 1 public static void main(String[] args) throws Exception {
 2 
 3         // get the bean factory
 4         BeanFactory factory = getBeanFactory();
 5 
 6         View mr = (View) factory.getBean("view");
 7         mr.render();
 8     }
 9 
10     private static BeanFactory getBeanFactory() throws Exception {
11         // get the bean factory
12         DefaultListableBeanFactory factory = new DefaultListableBeanFactory();
13 
14         // create a definition reader
15         PropertiesBeanDefinitionReader rdr = new PropertiesBeanDefinitionReader(
16                 factory);
17 
18         // load the configuration options
19         Properties props = new Properties();
20         props.load(TestFactory.class.getResource("msf.properties").openStream());
21 
22         rdr.registerBeanDefinitions(props);
23 
24         return factory;
25     }



文章整理:iocblog
版权申明:本站文章均来自网络,如有侵权,请联系我们,我们收到后立即删除,谢谢!
特别注意:本站所有转载文章言论不代表本站观点,本站所提供的摄影照片,插画,设计作品,如需使用,请与原作者联系,版权归原作者所有。