posts - 66,  comments - 11,  trackbacks - 0
分散配置:
有时你会发现将配置文件分成几个分散的配置文件是很有益的。
将Data Source配置到Bean装配文件中不是很适合。数据库细节是一个发布信息。而Bean装配文件的目的是定义如何装配系统的各个模块。如果使用ApplicationContext当作Spring容器,那么,在Spring中分离属性配置是很简单的。使用Spring的PropertyPlaceholderConfigurer告诉Spring从外部属性文件装载一些配置信息。
<bean id="dataSource" class="org.springframework.jdbc.datasource.DriverManagerDataSource">
        
<property name="url">
            
<value>jdbc:hsqldb:Training</value>
        
</property>
        
<property name="driverClassName">
            
<value>org.hsqldb.jdbcDriver</value>
        
</property>
        
<property name="username">
            
<value>appUser</value>
        
</property>
        
<property name="password">
            
<value>password</value>
        
</property>
    
</bean>
location属性告诉Spring从哪里找到属性文件。location属性允许你使用单个配置文件。如果你想将配置信息分散到多个配置文件中,请使 用PropertyPlaceholderConfigurer的locations属性设置文件列表,使用这种方式,可以使用占位符变量代替Bean装 配文件中的硬编码配置了。

<bean id="propertyConfigurer" class="org.springframework.beans.factory.config.PreferencesPlaceholderConfigurer">
        
<property name="location">
            
<value>jdbc.properties</value>
        
</property>
        
<property name="locations">
            
<list>
                
<value>jdbc.properties</value>
                
<value>security.properties</value>
                
<value>application.properties</value>
            
</list>
        
</property>
    
</bean>
    
<bean id="dataSources" class="org.springframework.jdbc.datasource.DriverManagerDataSource">
        
<property name="url">
            
<value>${database.url}</value>
        
</property>
        
<property name="driverClassName">
            
<value>${database.driver}</value>
        
</property>
        
<property name="username">
            
<value>${database.user}</value>
        
</property>
        
<property name="password">
            
<value>${database.password}</value>
        
</property>
    
</bean>

定制属性编辑器:
java.beans.PropertyEditor接口提供了将字符串值映射成非String类型的方法。有一个好用的这个接口的实现-

java.beans.PropertyEditorSupport,它有2个方法我们会感兴趣:
1、getAsText():方法返回一个表示属性值的字符串。
2、setAsText(String value):将传递进来的字符串赋给Bean的属性。

Spring带了几种建立在propertyEditorSupport之上的定制编辑器,包括

org.springframework.beans.propertyeditors.URLEditor,它是一个用于将字符串与java.net.URL相互转换的定制编辑器。
Spring提供的其他定制编辑器包括:
1、ClassEditor-使用包含全称类名的字符串设置java.lang.Class属性。
2、CustormDateEditor-使用某种java.text.DateFormat对象将一个字符串设置给java.util.Date属性。
3、FileEditor-使用包含文件路径的字符串设置java.io.File属性。
4、LocalEditor-使用包含地域信息的字符串设置java.util.Local属性。
5、StringArrayPropertyEditor-将一个包含逗号的String转换成String数组属性。
6、StringTrimmerEditor-自动修正字符串属性,可以选择将空字符串转变为null.
<bean id="costomEditorConfigurer" class="org.springframework.beans.factory.config.CustomEditorConfigurer">
        
<property name="customEditors">
            
<map>
                
<entry key="com.wyq.spring.PhoneNumber">
                    
<bean id="phoneEditor" class="com.wyq.spring.PhoneEditor"></bean>
                
</entry>
            
</map>
        
</property>
    
</bean>
其中的map中的key表示要添加自定义属性的类,value表示自定义属性实现的类。

package com.wyq.spring;

import java.beans.PropertyEditorSupport;

public class PhoneEditor extends PropertyEditorSupport {
    
    
public void setAsText(String textValue) throws IllegalArgumentException {
        String stripped 
= stripNonNumberic(textValue);
        
        String areaCode 
= stripped.substring(0,3);
        String prefix 
= stripped.substring(3,6);
        String number 
= stripped.substring(6);
        PhoneNumber phone 
= new PhoneNumber(areaCode,prefix,number);
        setValue(phone);
    }
    
private String stripNonNumberic(String original){
        StringBuffer allNumberic 
= new StringBuffer();
        
for(int i=0;i<original.length();i++){
            
char c = original.charAt(i);
            
if(Character.isDigit(c)){
                allNumberic.append(c);
            }
        }
        
return allNumberic.toString();
    }
}


posted on 2009-10-31 17:54 王永庆 阅读(315) 评论(0)  编辑  收藏 所属分类: SPRING

只有注册用户登录后才能发表评论。


网站导航:
 
<2009年10月>
27282930123
45678910
11121314151617
18192021222324
25262728293031
1234567

常用链接

留言簿(1)

随笔分类

随笔档案

关注blogs

搜索

  •  

最新评论

阅读排行榜

评论排行榜