关闭

Spring笔记之三(Usage of property config)

标签: springpropertiesexception设计模式nullclass
536人阅读 评论(0) 收藏 举报
分类:

转贴处 http://www.blogjava.net/improviser/archive/2007/09/24/147777.html

本文内容演示属性文件用法的简单例子。
首先定义模型接口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     }


 

0
0

查看评论
* 以上用户言论只代表其个人观点,不代表CSDN网站的观点或立场
    个人资料
    • 访问:225940次
    • 积分:2999
    • 等级:
    • 排名:第11695名
    • 原创:38篇
    • 转载:177篇
    • 译文:0篇
    • 评论:48条