spring关于底层资源的抽象是如此方便

在以前的项目中对于一些资源的配置基本上都是通过spring的IOC注入一个目录的地址字符串。而这样的问题是,对于开发中的团队来说还是很有问题的,因为每个可能都配置一个不同的本地目录,而发布到服务器之后又有不同的目录。这样造成每个人提交了配置文件之后其他人都可能需要修改配置文件才能正确启动服务。这确实很令人烦劳。
     最近看《Professional Java Development with the Spring Framework》时看到了spring对底层资源的抽象,才找到了完美解决方案。
     原来的代码:
     private  String templatePath;
    
public   void  setTemplatePath(String templatePath) {
        
this .templatePath  =  templatePath;
    }
    
public   void  initListener() {
        TemplateEventListener templateListener 
=   new  TemplateEventListener(){
            
public   void  handleTemplateEvent(TemplateEventSupport evt) {
                
//  添加事件到队列中
                queue.offer(evt);
                
if (log.isDebugEnabled()){
                    log.debug(
" Add Template about: "   +  evt.getTemplateName());
                }
            }
            
        };
        
        
// 注册模版监听事件
        templateManager.addEventListener(Constants.TEMPLATE_SAVE_EVENT, templateListener, false );
        
        
        
// 设置freemarker的参数
        freemarkerCfg  =   new  Configuration();
        
try  {
            freemarkerCfg.setDirectoryForTemplateLoading(
new  File(templatePath));
            freemarkerCfg.setObjectWrapper(
new  DefaultObjectWrapper());
            freemarkerCfg.setDefaultEncoding(
" UTF-8 " );
        } 
catch  (IOException ex) {
            
throw   new  SystemException( " No Directory found,please check you config. " );
        }
    }
配置文件
None.gif
None.gif    
< bean  id ="buildHtmlService"  class ="cn.jdk.leaf.service.impl.BuildHtmlServiceImpl"  init-method ="initListener" >
None.gif        
< property  name ="templatePath" >< value > ${templatePath} </ value ></ property >
None.gif    
</ bean >
templatePath.path = D:/template
使用spring对底层资源的抽象只要把templatePath改成Resource就可以了
     private  Resource templatePath;
    
public   void  setTemplatePath(Resource templatePath) {
        
this .templatePath  =  templatePath;
    }
    
public   void  initListener() {
            TemplateEventListener templateListener 
=   new  TemplateEventListener(){
            
public   void  handleTemplateEvent(TemplateEventSupport evt) {
                
//  添加事件到队列中
                queue.offer(evt);
                
if (log.isDebugEnabled()){
                    log.debug(
" Add Template about: "   +  evt.getTemplateName());
                }
            }
            
        };    
        
// 注册模版监听事件
        templateManager.addEventListener(Constants.TEMPLATE_SAVE_EVENT, templateListener, false );
        
        
        
// 设置freemarker的参数
        freemarkerCfg  =   new  Configuration();
        
try  {
            freemarkerCfg.setDirectoryForTemplateLoading(templatePath.getFile());
            freemarkerCfg.setObjectWrapper(
new  DefaultObjectWrapper());
            freemarkerCfg.setDefaultEncoding(
" UTF-8 " );
        } 
catch  (IOException ex) {
            
throw   new  SystemException( " No Directory found,please check you config. " );
        }
    }
bean的配置不变,只要修改properties文件就可以了。
     < bean id = " buildHtmlService "   class = " cn.jdk.leaf.service.impl.BuildHtmlServiceImpl "  init - method = " initListener " >
        
< property name = " templatePath " >< value > ${templatePath} </ value ></ property >
    
</ bean >
把properties文件修改成
templatePath.path = template
在webcontext目录下面建立一个template目录就可以了。在部署到服务器的时候需要部署到一个特定的目录只要修改这个配置文件为
templatePath.path = file:/D:/template
这样就可以了。

创造共用协议:署名,非商业,保持一致  除经特别注明外,本文章版权归莫多泡泡所有.
署名,非商业用途,保持一致.   somebody(莫多)   
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值