posts - 66,  comments - 11,  trackbacks - 0
          分散配置:
          有時你會發(fā)現(xiàn)將配置文件分成幾個分散的配置文件是很有益的。
          將Data Source配置到Bean裝配文件中不是很適合。數(shù)據(jù)庫細節(jié)是一個發(fā)布信息。而Bean裝配文件的目的是定義如何裝配系統(tǒng)的各個模塊。如果使用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屬性設(shè)置文件列表,使用這種方式,可以使用占位符變量代替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類型的方法。有一個好用的這個接口的實現(xiàn)-

          java.beans.PropertyEditorSupport,它有2個方法我們會感興趣:
          1、getAsText():方法返回一個表示屬性值的字符串。
          2、setAsText(String value):將傳遞進來的字符串賦給Bean的屬性。

          Spring帶了幾種建立在propertyEditorSupport之上的定制編輯器,包括

          org.springframework.beans.propertyeditors.URLEditor,它是一個用于將字符串與java.net.URL相互轉(zhuǎn)換的定制編輯器。
          Spring提供的其他定制編輯器包括:
          1、ClassEditor-使用包含全稱類名的字符串設(shè)置java.lang.Class屬性。
          2、CustormDateEditor-使用某種java.text.DateFormat對象將一個字符串設(shè)置給java.util.Date屬性。
          3、FileEditor-使用包含文件路徑的字符串設(shè)置java.io.File屬性。
          4、LocalEditor-使用包含地域信息的字符串設(shè)置java.util.Local屬性。
          5、StringArrayPropertyEditor-將一個包含逗號的String轉(zhuǎn)換成String數(shù)組屬性。
          6、StringTrimmerEditor-自動修正字符串屬性,可以選擇將空字符串轉(zhuǎn)變?yōu)閚ull.
          <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表示自定義屬性實現(xiàn)的類。

          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 王永慶 閱讀(326) 評論(0)  編輯  收藏 所屬分類: SPRING
          <2009年10月>
          27282930123
          45678910
          11121314151617
          18192021222324
          25262728293031
          1234567

          常用鏈接

          留言簿(1)

          隨筆分類

          隨筆檔案

          關(guān)注blogs

          搜索

          •  

          最新評論

          閱讀排行榜

          評論排行榜

          主站蜘蛛池模板: 太原市| 惠东县| 启东市| 自治县| 文昌市| 阳信县| 扶风县| 柘荣县| 黄龙县| 科技| 开原市| 宁海县| 古田县| 公主岭市| 永兴县| 焦作市| 潼南县| 永德县| 新宁县| 屏南县| 北辰区| 定边县| 贵港市| 新沂市| 广西| 襄城县| 通州区| 石棉县| 洪洞县| 潜江市| 银川市| 常熟市| 锦屏县| 博野县| 梁山县| 临湘市| 恩平市| 柞水县| 剑川县| 永胜县| 腾冲县|