项目简要:关于java web的一个项目,用的Spring MVCd 框架。鉴于参与此次项目的人中并不是所人都做的Spring,为了能够提高效率,建议大家是先抛开SPring来写自己负责的模块,最后再把各个模块在Spring里面集成。
项目里有一个文本分析的模块是一个同学用hanlp写的,由于在最后集成的时候直接使用maven添加的依赖,但最终测试时无法通过。后经分析发现她坐了实体识别,是自己改了hanlp的词典,手动加了很多词,而且在后期版本的迭代中还有可能继续改了hanlp的词典,这就意味着不能用maven直接导入仓库里的包了,只有将修改后的data文件放到本地,然后指定路径给hanlp。
网上有一些解决的方法,但都是在项目部署的时候,把hanlp的词典数据放到服务器上一个固定位置上,然后再配置hanlp的配置文件,指定一个固定位置。这种方法虽然比较直接,但是并不能够把hanlp的词典数据与整个项目打包到一起,后期的管理也比较麻烦。倘若把数据直接作为项目的资源文件,部署到Tomcat上后无论怎么在配置里写路径都会提示找不到词典文件。
在分析了HanLP的issue之后,发现这个项目支持自定义读写文件的IO类。在一个将词典数据放到HDFS上的一个blog启发下,尝试通过重写一个IOAdapter类,使用读写静态资源文件的方法读取词典数据了,这样不就可以把data跟项目打包到一起了。
代码如下:
1| package com.car.util.nlp;
2|
3| import com.hankcs.hanlp.corpus.io.IIOAdapter;
4| import org.springframework.core.io.ClassPathResource;
5| import java.io.*;
6|
7| public class ResourcesFileIoAdapter implements IIOAdapter{
8| @Override
9| public InputStream open(String path) throws IOException {
10| ClassPathResource resource = new ClassPathResource(path);
11| InputStream is = new FileInputStream(resource.getFile());
12| return is;
13| }
14| @Override
15| public OutputStream create(String path) throws IOException{
16| ClassPathResource resource = new ClassPathResource(path);
17| OutputStream os = new
18| FileOutputStream(resource.getFile());
19| return os;
20| }
21| }
整好了之后把data文件夹和hanlp.properties放到项目的资源文件夹里,在配置文件里修改一下路径和IOAdapte:
1| root=
2|
3| IOAdapte=com.car.util.nlp.ResourcesFileIoAdapter
相关推荐
Spring Batch 是一个轻量级的、完善的批处理框架,旨在帮助企业建立健壮、高效的...如果需要使用调用框架,在商业软件和开源软件中已经有很多优秀的企业级调度框架(如 Quartz、Tivoli、Control-M、Cron 等)可以使用。
springCloud是基于SpringBoot的一整套实现微服务的框架。他提供了微服务开发所需的配置管理、服务发现、断路器、智能路由、微代理、控制总线、全局锁、决策竞选、分布式会话和集群状态管理等组件。最重要的是, 跟...
springIOC手写框架分析springIOC手写框架分析springIOC手写框架分析springIOC手写框架分析springIOC手写框架分析springIOC手写框架分析springIOC手写框架分析springIOC手写框架分析springIOC手写框架分析springIOC...
假定两个Controller都在...显然不应该通过直接创建Controller B的实例,再调用方法来完成。因为Controller B的实例中,Spring Boot为其进行配置和对象注入,这些准备工作不是简单通过实例化Controller B可以完成。
Spring事务管理A方法内部调用B方法的回滚问题测试代码
Spring Batch批处理框架Spring Batch批处理框架Spring Batch批处理框架
NULL 博文链接:https://kevinkevin1979.iteye.com/blog/875408
SpringCloud基本框架+完整示例工程.rar
SpringCloud 的简单框架练习
一本很好的快速学习Spring框架开发的指导手册,中文、PDF排版格式。
学习Spring.net框架,学习Spring.net框架,学习Spring.net框架,学习Spring.net框架,学习Spring.net框架,
核心容器。提供Spring框架的基本功能,其主要组件是BeanFactory,是工厂模式的实现。...Spring AOP 模块直接将面向方面编程的功能集成到Spring框架中。它为基于Spring 应用程序的对象提供了事务管理服务。
资源名称:Spring Batch 批处理框架内容简介:《Spring Batch 批处理框架》全面、系统地介绍了批处理框架Spring Batch,通过详尽的实战示例向读者展示了Spring Batch框架对大数据批处理的基本开发能力,并对框架的...
spring框架,技术详解及使用指导spring框架,技术详解及使用指导spring框架,技术详解及使用指导spring框架,技术详解及使用指导spring框架,技术详解及使用指导spring框架,技术详解及使用指导spring框架,技术详解及使用...
spring+hibernate框架的搭建
整个springcloud 框架的模板,包含EurekaServer注册中心,服务提供端,服务调用端,熔断器,负载均衡-动态路由,配置中心(github 托管配置文件),自动更新配置中心,框架的一个整合,适合学习springcloud 框架的...
利用maven构建的spring4.0框架的demo
Spring 应用框架技术面试题.doc Spring 应用框架技术面试题.doc Spring 应用框架技术面试题.doc Spring 应用框架技术面试题.doc Spring 应用框架技术面试题.doc Spring 应用框架技术面试题.doc Spring 应用框架技术...
本参考文档涵盖了Spring框架中绝对不可或缺的所有技术。 其中最重要的是Spring框架的控制反转(Inversion of Control,IoC)容器(container)。在对Spring框架的IoC容器进行全面介绍之后,将全面介绍Spring的面向切...
毕业设计项目,网上商城,基于SpringMVC、Spring和Mybatis框架