在以前的项目中对于一些资源的配置基本上都是通过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.");
}
}
配置文件
<bean id="buildHtmlService" class="cn.jdk.leaf.service.impl.BuildHtmlServiceImpl" init-method="initListener">
<property name="templatePath"><value>${templatePath}</value></property>
</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(莫多) |
分享到:
相关推荐
Spring的Test模块则提供了对JUnit和TestNG测试框架的支持,方便对Spring组件进行单元测试和集成测试。 控制反转(IoC)和依赖注入(DI)是Spring的核心设计理念之一。IoC意味着不再由对象自己创建或查找依赖,而是...
这个接口的存在使得Spring能够适配多种底层的事务管理系统,如JDBC、Hibernate、JPA或者其他的ORM框架。通过实现`PlatformTransactionManager`,Spring可以灵活地在不同的事务策略间切换,无需改动事务管理的代码...
这本书对于想要深入了解Spring框架底层原理和技术细节的开发者来说,是一本不可多得的资源。通过对这本书的学习,开发者可以更加深刻地理解Spring框架的设计哲学,以及如何更好地应用Spring框架进行企业级应用开发。
Spring的事务管理抽象层简化了事务管理,使得开发者无需关心底层的数据库操作。 综上所述,文档中提到的这些知识点是Java EE开发人员在进行框架整合开发时不可或缺的基础。掌握这些知识点,有助于提升对Spring框架...
Resource接口是Spring对底层资源的抽象,它使得开发者可以采用统一的方式来操作不同类型的资源。Spring提供了多种内置的Resource实现,比如针对文件系统、URLs、classpath等资源类型。ResourceLoader接口负责加载...
《尚硅谷 佟刚 spring_data+jpa》是针对Java开发者的一份宝贵学习资源,由知名讲师佟刚倾力打造,旨在深入讲解Spring Data JPA这一强大的数据访问框架。Spring Data JPA是Spring Framework的重要组成部分,它简化了...
- **异常处理**:Spring JDBC将底层的数据库异常转换为统一的Spring DataAccessException,简化了异常处理逻辑。 - **性能优化**:通过批处理和连接池,Spring JDBC能有效地提高数据库操作的性能。 在项目中使用...
- `spring-jdbc.jar`:JDBC抽象和模板类。 - `spring-orm.jar`:ORM集成,如Hibernate和JPA支持。 这些jar包是Spring框架的核心部分,用于实现上述功能。在实际开发中,你需要根据具体需求选择相应的jar包,确保不...
它们共同构成了Spring的强大生态系统,使得开发者能够专注于业务逻辑,而不是底层的基础设施。在实际项目中,这些组件通常会与Spring MVC、Spring Data、Spring Security等其他模块结合使用,构建出完整的应用解决...
- **资源基础知识:** 介绍了Spring中资源抽象的概念,包括如何通过Spring加载和管理资源文件。 - **内置Resource实现与访问Resource:** Spring提供了一种统一的方式来访问不同资源,如文件系统、classpath、URL等...
在源码中,你可以看到Repository接口的抽象,以及JdbcTemplate和JPA的实现细节,这有助于理解数据访问的底层逻辑。 Spring还提供了对事务管理的支持,包括编程式和声明式事务。在源码中,你可以看到...
8. **spring-core.jar**:核心工具模块,包含了Spring框架的基础类和通用工具,如类型转换系统、反射和资源加载等。 9. **spring-tx.jar**:事务管理模块提供了编程和声明式事务管理的支持,适用于本地事务和分布式...
Spring还提供了数据访问抽象,包括JDBC、ORM(Object-Relational Mapping)和OXM(Object-XML Mapping)。例如,`JdbcTemplate`简化了数据库操作,`HibernateTemplate`为Hibernate提供了便捷的集成。在源码中,可以...
3.8.3. 底层资源的访问 3.8.4. ApplicationContext在WEB应用中的实例化 3.9. 粘合代码和可怕的singleton 3.9.1. 使用Singleton-helper类 4. 资源 4.1. 简介 4.2. Resource 接口 4.3. 内置 Resource 实现 4.3.1. ...
综上所述,这些文档是学习和精通Spring框架、Spring Data JPA以及JPA的宝贵资源,适合Java开发者尤其是从事企业级应用开发的人员参考学习。通过学习和实践,开发者可以更高效地构建和维护数据库驱动的Java应用程序。
- `spring-test-5.0.1.RELEASE.jar`:为Spring应用提供测试支持,可以方便地集成Junit和其他测试框架,进行单元测试和集成测试。 5. 日志和辅助库: - Junit:Java领域最流行的单元测试框架,用于编写和运行可...
SpringData是Spring框架的一个重要模块,它为Java开发者提供了丰富的数据访问抽象,简化了与各种数据存储系统的交互。本资源“尚硅谷SpringData视频”旨在帮助学习者深入理解和掌握SpringData的相关知识,通过视频...
Spring JDBC是Spring框架的一个重要模块,它简化了Java数据库连接(JDBC)的使用,提供了更高级别的抽象,使得数据库操作更加简洁、易管理和模块化。这个"spring_JDBC整合包"显然包含了进行Spring JDBC开发所需的...
5. **Web应用程序支持**:Spring.NET Web模块提供了MVC框架、Web服务支持等,方便构建基于ASP.NET的Web应用。它与ASP.NET MVC无缝集成,可以用来创建灵活、可扩展的Web解决方案。 6. **Spring.net中文文档**:这份...