熱點推薦:
您现在的位置: 電腦知識網 >> 編程 >> Java編程 >> Java開源技術 >> 正文

spring關於底層資源的抽象

2013-11-23 20:21:10  來源: Java開源技術 

  在以前的項目中對於一些資源的配置基本上都是通過spring的IOC注入一個目錄的地址字符串而這樣的問題是對於開發中的團隊來說還是很有問題的因為每個可能都配置一個不同的本地目錄而發布到服務器之後又有不同的目錄這樣造成每個人提交了配置文件之後其他人都可能需要修改配置文件才能正確啟動服務這確實很令人煩勞
     最近看《Professional Java Development with the Spring Framework》時看到了spring對底層資源的抽象才找到了完美解決方案
     原來的代碼


    private String templatePath;
    public void setTemplatePath(String templatePath) {
        thistemplatePath = templatePath;
    }
    public void initListener() {
        TemplateEventListener templateListener = new TemplateEventListener(){
            public void handleTemplateEvent(TemplateEventSupport evt) {
                // 添加事件到隊列中
                queueoffer(evt);
                if(logisDebugEnabled()){
                    logdebug(Add Template about: + evtgetTemplateName());
                }
            }
            
        };
        
        //注冊模版監聽事件
        templateManageraddEventListener(ConstantsTEMPLATE_SAVE_EVENT templateListenerfalse);
        
        
        //設置freemarker的參數
        freemarkerCfg = new Configuration();
        try {
            freemarkerCfgsetDirectoryForTemplateLoading(new File(templatePath));
            freemarkerCfgsetObjectWrapper(new DefaultObjectWrapper());
            freemarkerCfgsetDefaultEncoding(UTF);
        } catch (IOException ex) {
            throw new SystemException(No Directory foundplease check you config);
        }
    }配置文件


    <bean id=buildHtmlService class=cnjdkleafserviceimplBuildHtmlServiceImpl initmethod=initListener>
        <property name=templatePath><value>${templatePath}</value></property>
    </bean>
templatePathpath=D:/template使用spring對底層資源的抽象只要把templatePath改成Resource就可以了

    private Resource templatePath;
    public void setTemplatePath(Resource templatePath) {
        thistemplatePath = templatePath;
    }
    public void initListener() {
            TemplateEventListener templateListener = new TemplateEventListener(){
            public void handleTemplateEvent(TemplateEventSupport evt) {
                // 添加事件到隊列中
                queueoffer(evt);
                if(logisDebugEnabled()){
                    logdebug(Add Template about: + evtgetTemplateName());
                }
            }
            
        };    
        //注冊模版監聽事件
        templateManageraddEventListener(ConstantsTEMPLATE_SAVE_EVENT templateListenerfalse);
        
        
        //設置freemarker的參數
        freemarkerCfg = new Configuration();
        try {
            freemarkerCfgsetDirectoryForTemplateLoading(templatePathgetFile());
            freemarkerCfgsetObjectWrapper(new DefaultObjectWrapper());
            freemarkerCfgsetDefaultEncoding(UTF);
        } catch (IOException ex) {
            throw new SystemException(No Directory foundplease check you config);
        }
    }bean的配置不變只要修改properties文件就可以了

    <bean id=buildHtmlService class=cnjdkleafserviceimplBuildHtmlServiceImpl initmethod=initListener>
        <property name=templatePath><value>${templatePath}</value></property>
    </bean>把properties文件修改成

templatePathpath=template在webcontext目錄下面建立一個template目錄就可以了在部署到服務器的時候需要部署到一個特定的目錄只要修改這個配置文件為

templatePathpath=file:/D:/template這樣就可以了
From:http://tw.wingwit.com/Article/program/Java/ky/201311/28356.html
    推薦文章
    Copyright © 2005-2013 電腦知識網 Computer Knowledge   All rights reserved.