在以前的项目中对于一些资源的配置基本上都是通过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
这样就可以了。
分享到:
相关推荐
而ApplicationContext是Context模块的关键,它是BeanFactory的扩展,提供了更丰富的功能,如国际化、事件传播、资源加载等。与BeanFactory不同,ApplicationContext在启动时会立即加载所有bean,而不是延迟加载。 ...
这个接口的存在使得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.jar`:JDBC抽象和模板类。 - `spring-orm.jar`:ORM集成,如Hibernate和JPA支持。 这些jar包是Spring框架的核心部分,用于实现上述功能。在实际开发中,你需要根据具体需求选择相应的jar包,确保不...
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 MVC、Spring Data、Spring Security等其他模块结合使用,构建出完整的应用解决...
- **资源基础知识:** 介绍了Spring中资源抽象的概念,包括如何通过Spring加载和管理资源文件。 - **内置Resource实现与访问Resource:** Spring提供了一种统一的方式来访问不同资源,如文件系统、classpath、URL等...
在源码中,你可以看到Repository接口的抽象,以及JdbcTemplate和JPA的实现细节,这有助于理解数据访问的底层逻辑。 Spring还提供了对事务管理的支持,包括编程式和声明式事务。在源码中,你可以看到...
- **异常处理**:Spring JDBC将底层的数据库异常转换为统一的Spring DataAccessException,简化了异常处理逻辑。 - **性能优化**:通过批处理和连接池,Spring JDBC能有效地提高数据库操作的性能。 在项目中使用...
综上所述,这些文档是学习和精通Spring框架、Spring Data JPA以及JPA的宝贵资源,适合Java开发者尤其是从事企业级应用开发的人员参考学习。通过学习和实践,开发者可以更高效地构建和维护数据库驱动的Java应用程序。
Spring还提供了数据访问抽象,包括JDBC、ORM(Object-Relational Mapping)和OXM(Object-XML Mapping)。例如,`JdbcTemplate`简化了数据库操作,`HibernateTemplate`为Hibernate提供了便捷的集成。在源码中,可以...
它能处理数据库连接的打开和关闭,事务管理,异常处理等,让开发者专注于SQL语句本身,而不是底层的资源管理。 2. **SimpleJdbcInsert/NamedParameterJdbcInsert**: 这两个类简化了插入记录的操作。...
8. **spring-core.jar**:核心工具模块,包含了Spring框架的基础类和通用工具,如类型转换系统、反射和资源加载等。 9. **spring-tx.jar**:事务管理模块提供了编程和声明式事务管理的支持,适用于本地事务和分布式...
Resource抽象则负责封装底层资源访问,而验证模块则提供了支持数据验证的方法和工具。 资源管理是Spring Framework另一个重要的特性,它允许应用程序以统一的方式访问底层资源。资源接口抽象了底层资源的不同来源,...
这个资源包含Spring.NET 2.0.0版本及其中文参考文档,非常适合那些想要学习或已经使用Spring.NET进行开发的.NET程序员。 Spring.NET 2.0.0是一个重要的版本更新,它可能引入了许多新特性、性能优化和错误修复。在...
SpringData是Spring框架的一个重要模块,它为Java开发者提供了丰富的数据访问抽象,简化了与各种数据存储系统的交互。本资源“尚硅谷SpringData视频”旨在帮助学习者深入理解和掌握SpringData的相关知识,通过视频...